[00:00] mikegerwitz: AAA_awright: $ node test.js > testfoo && wc -c testfoo
[00:00] mikegerwitz: 500000 testfoo
[00:00] mikegerwitz: hm.
[00:00] mikegerwitz: AAA_awright: umm I'm not sure..
[00:00] AAA_awright: Maybe there isn't
[00:00] abrahamwilliams has joined the channel
[00:01] mikegerwitz: AAA_awright: I just meant, I have 6 GB of RAM, so I wonder if it allocated more
[00:01] mikegerwitz: AAA_awright: But 500,000 bytes is a lot to allocate
[00:01] warz: ugh, does github not have just like a "favorite this repo" option?
[00:01] mikegerwitz: (the above example used process.exit(), and it still output)
[00:01] AAA_awright: This system has 3GB, the other gentoo has 512MB, Ubuntu has 2GB
[00:01] AAA_awright: Taking out process.exit should be a temporary fix let me try that
[00:02] mikegerwitz: AAA_awright: Well, even when I added it, it still output everything
[00:02] mikegerwitz: AAA_awright: Let me know if that fixes it, though
[00:02] arlolra has joined the channel
[00:02] hellp has joined the channel
[00:02] AAA_awright: Yes it does
[00:02] marcello3d: mikegerwitz: isn't that what "watch" is for?
[00:02] mikegerwitz: marcello3d: hmm? Watch will run a command every N seconds
[00:02] marcello3d: sorry
[00:02] abraham has joined the channel
[00:02] marcello3d: @warz
[00:03] mikegerwitz: marcello3d: oh, hehe
[00:03] marcello3d: colloquy right aligns and you guys both end in w**z
[00:03] mikegerwitz: AAA_awright: Odd. Wonder why I still can't reproduce!
[00:03] warz: well yea, i watch everything i like, but ive got a lot of things being watched
[00:03] arlolra: ryah: disk quota exceeded on buildbot.nodejs.org ?
[00:03] mikegerwitz: AAA_awright: At least that makes sense. Thoguh it doesn't make sense that it's not screwing mine up
[00:03] warz: its not exactly the optimal way to just bookmark a repo
[00:03] ryah: arlolra: oh hm
[00:03] AAA_awright: mikegerwitz: How much memory do you have? mikegerwitz: Fill a string with 500k or more... 50M of data first, then write it and immidetely quit?
[00:03] marcello3d: warz: I think that's their intention though
[00:04] marcello3d: I guess you could fork it if you really really like it ;D
[00:04] AAA_awright: send process.exit(1) even, because that might want to be done for some reason
[00:04] warz: hehe
[00:04] mikegerwitz: AAA_awright: Well how much I have and how much v8 will permit are very different..I'll try though
[00:04] AAA_awright: Yeah yeah
[00:04] mikegerwitz: Outputting 500 KB gave me an error intiially
[00:06] AAA_awright: Unfortunately process.on('exit', function(){process.exit(1);}); goes into infinite recursion so I can't use that
[00:06] mikegerwitz: $ wc -c foo && node test.js > out && wc -c out
[00:06] mikegerwitz: 2392064 foo
[00:06] mikegerwitz: 2392064 out
[00:07] mikegerwitz: Using exit( 1 ) doesn't change... $ wc -c foo && node test.js > out || wc -c out
[00:07] mikegerwitz: 2392064 foo
[00:07] mikegerwitz: 2392064 out
[00:07] Aria: Ooh, that sounds like a bit of a bug, AAA_awright. I'll have to send a patch.
[00:07] AAA_awright: I'm giving exit(1) as an example
[00:07] gazumps has joined the channel
[00:07] mikegerwitz: AAA_awright: oops, that's not 500 KB.
[00:07] AAA_awright: As where you would *need* to use exit
[00:07] AAA_awright: mikegerwitz: Are you outputting to console? That's slower, exit() would be called before all is output
[00:07] AAA_awright: Or is that?
[00:08] AAA_awright: Or is that *slower
[00:08] mikegerwitz: AAA_awright: No that's not console. I got input from /dev/urand so I didn't output that, but I'll give it a try
[00:08] mikegerwitz: AAA_awright: ooo..
[00:08] AAA_awright: See it now?
[00:09] mlncn has joined the channel
[00:09] mikegerwitz: AAA_awright: $ time node test.js lasted 0.081s and didn't output much
[00:09] ryah: arlolra: i have to go to my admin and get more space
[00:09] AAA_awright: mikegerwitz: I know it's not outputting everything because it ends with (); make sure you have some string at the end to know it finished?
[00:09] mikegerwitz: AAA_awright: removing process.exit worked
[00:09] mikegerwitz: AAA_awright: Yep
[00:10] AAA_awright: How is one supposed to call exit with a non-0 status, after all the data is successfully written?
[00:10] ChrisPartridge has joined the channel
[00:10] AAA_awright: You can't easily put it in process.on(exit)
[00:10] arlolra: ryah: ok. i could delete some old graphs. but it doesn't seem to be taking up all that much room
[00:10] AAA_awright: Maybe you could use something to make sure exit is only called once?
[00:10] mikegerwitz: AAA_awright: Do you know if you can open the file descriptor and use the normal fs.write?
[00:10] AAA_awright: Oh, process.ononce?
[00:11] AAA_awright: process.once let's try that
[00:11] ryah: arlolra: no, i think we can just incrase it
[00:11] AAA_awright: mikegerwitz: writeSync you mean
[00:11] mikegerwitz: AAA_awright: Doesn't matter :) write has a callback
[00:11] AAA_awright: And put process.exit in the callback
[00:11] mikegerwitz: AAA_awright: actually, stdout is a wriable stream..
[00:11] AAA_awright: hmm
[00:12] AAA_awright: But there's no place for a callback
[00:12] arlolra: ryah: alright, thanks
[00:12] srid has joined the channel
[00:12] srid has joined the channel
[00:12] AAA_awright: Not in the docs that I can see at least
[00:12] mikegerwitz: AAA_awright: that's what I was wondering
[00:13] mikegerwitz: AAA_awright: actually, adding a callback worked..
[00:13] mikegerwitz: process.stdout.write( str, function()...
[00:13] mikegerwitz: then put process.exit() in it
[00:14] mikegerwitz: $ echo $?
[00:14] mikegerwitz: 1
[00:14] AAA_awright: process.once('exit', function(){process.exit(1);});
[00:14] mikegerwitz: :)
[00:14] AAA_awright: also works
[00:14] mikegerwitz: Oh :)
[00:14] mikegerwitz: I wasn't aware of once()
[00:14] mikegerwitz: Oh it's EventEmitter's once()?
[00:14] AAA_awright: I vaguely remembered it thinking "How do I call that event only the first time"
[00:14] AAA_awright: Otherwise it recurses
[00:14] mikegerwitz: Makes sense..
[00:15] mikegerwitz: AAA_awright: Well that was interesting
[00:15] mikegerwitz: AAA_awright: In which case, it's not a bug
[00:15] mikegerwitz: AAA_awright: For stdout.write..console.log() should be sync..
[00:15] mikegerwitz: AAA_awright: (no callback for it)
[00:16] Yuffster has joined the channel
[00:16] AAA_awright: mikegerwitz: I've never heard that it should be, only error is.
[00:16] AAA_awright: Adding a callback to that does work though?
[00:16] mikegerwitz: AAA_awright: to console.log?
[00:16] AAA_awright: Not console.log
[00:16] dnolen has joined the channel
[00:16] mikegerwitz: AAA_awright: I meant if console.log() doesn't accept a callback, it should probably be sync
[00:16] AAA_awright: but process.stdout.write
[00:16] jlewis has joined the channel
[00:16] AAA_awright: console.log only accepts printf-whatever paramaters I thought
[00:16] mikegerwitz: AAA_awright: yeah
[00:17] AAA_awright: process.stdout.write(source, function(){process.exit(1);});
[00:17] AAA_awright: gives me "unknown encoding"
[00:18] AAA_awright: I think I'm supposed to attach an event to "drain" though
[00:18] mikegerwitz: hm
[00:18] Emmanuel__ has joined the channel
[00:19] AAA_awright: I don't think that ever got called
[00:19] marcello3d: oi. latest version of mongodb changes shit and mongolian doesn't work anymore :(
[00:19] marcello3d: wish I had noticed earlier
[00:20] sirkitree has joined the channel
[00:20] AAA_awright: Hmm I don't think it's exiting with the right status now
[00:20] AAA_awright: Luckily it doesn't matter right now
[00:21] pHcF has joined the channel
[00:22] abraham has joined the channel
[00:22] kriszyp has joined the channel
[00:23] eyesUnclouded has joined the channel
[00:23] AAA_awright: I wonder if I should write this up to node-dev
[00:24] AAA_awright: *nodejs-dev
[00:27] jakehow has joined the channel
[00:27] isaacs has joined the channel
[00:28] isaacs: marcello3d: yes, (re npm tan/grey border), we really need a designer in node land.
[00:28] isaacs: who isn't ryan, or me, or mikeal
[00:30] mlncn has joined the channel
[00:35] pcardune has joined the channel
[00:37] davidc_ has joined the channel
[00:38] unlink has joined the channel
[00:38] adrian_berg has joined the channel
[00:38] omarkj has joined the channel
[00:38] abraham has joined the channel
[00:38] emilk has joined the channel
[00:39] emilk2000 has joined the channel
[00:40] wav1 has joined the channel
[00:40] orls has joined the channel
[00:41] skm has joined the channel
[00:45] paul_k has joined the channel
[00:45] adrian_berg has joined the channel
[00:46] falconair has joined the channel
[00:47] AphelionZ has joined the channel
[00:50] zpao has joined the channel
[00:51] rhdoenges has joined the channel
[00:51] possibilities has joined the channel
[00:52] jsanders has joined the channel
[00:52] dspree has joined the channel
[00:53] nornagon_ has joined the channel
[00:54] nornagon_: there's a function called mixin() (or extend() or something?) that's in like every node.js library, but I can't seem to find the source... halp?
[00:54] nornagon_: everyone seems to define it
[00:54] nornagon_: but i can't find any examples atm >_>
[00:55] sechrist: that isn't a part of the base library yet?
[00:55] jsanders has joined the channel
[00:56] nornagon_: is it?
[00:56] p0ns has joined the channel
[00:56] nornagon_: (also, does it work for getters/setters?)
[00:56] nornagon_: (i.e. http://ejohn.org/blog/javascript-getters-and-setters/)
[00:56] q_no has joined the channel
[00:57] nornagon_: oh, he wrote an extend() function right there :P
[00:57] nornagon_: brb
[00:58] jsanders has joined the channel
[00:59] markc has joined the channel
[01:00] jsanders091185 has joined the channel
[01:00] jsanders091185 has left the channel
[01:00] marcello3d: tracked down the changes
[01:00] rtomayko_ has joined the channel
[01:02] BrianTheCoder has joined the channel
[01:04] nonnikcam has joined the channel
[01:05] emilk2000: hi, please, how do i source a script saved on a disk in the node cli?
[01:06] ttpva has joined the channel
[01:07] Evet has joined the channel
[01:07] Evet has joined the channel
[01:08] Aria: "source"?
[01:08] Aria: You can require it ...
[01:09] emilk2000: source like eval it in actual context
[01:10] emilk2000: as you source a sql script in sqlite console
[01:10] omarkj: Hey. I'm wondering if anyone knows why the charset is being set to us-ascii if the ACK character is received here: https://github.com/LearnBoost/Socket.IO-node/blob/master/lib/socket.io/transports/xhr-multipart.js#L63
[01:10] Aria: I don't believe the repl can.
[01:10] Aria: I mean you can always read the file and eval it though
[01:10] Aria: eval(fs.readFileSync(filename))
[01:11] emilk2000: good one, thx
[01:11] nornagon_ has joined the channel
[01:13] zentoooo has joined the channel
[01:13] malcoholm has joined the channel
[01:14] possibilities has joined the channel
[01:17] lukegalea has joined the channel
[01:17] eee_c has joined the channel
[01:18] lukegalea: eee_c: Hey Chris. How's the node going ?? ;)
[01:20] mischief has joined the channel
[01:20] malcoholm: Anybody feel like helping a Node noob out with what is probably a fairly simple problem?
[01:21] lukegalea: malcoholm: sure. I can give it a go. What's up?
[01:21] kawaz_home has joined the channel
[01:22] malcoholm: Thanks. I've just pulled down a copy of Transsiberian, installed the dependencies via npm, but when I try to start the server, I get an exception saying node.js:116 TypeError: Object function createServer [...] has no method 'bodyDecoder'
[01:22] tshpaper has joined the channel
[01:22] fusspawn has joined the channel
[01:22] lukegalea: I've never used transiberian, but just to check simple stuff first.. are you using Node 0.4.x or 0.2.x ??
[01:22] malcoholm: After a good googling, I can't seem to find anyone with a similar problem, so it suggests my environment might not be set up correctly.
[01:23] malcoholm: $ node --version tells me v0.5.0-pre
[01:23] lukegalea: Before a day or so ago you could not run express & connect on node > 0.2.x..
[01:23] malcoholm: Downloaded the source and built/installed last night
[01:24] malcoholm: Ah ok, that's more than likely the problem then. Will have a go with nave for swapping versions around.
[01:24] lukegalea: ya. that's my guess.
[01:24] lukegalea: it's quite possible you have the newer version of express (that works with new node) but not the version that transiberian had in mind.
[01:25] adrian_berg has joined the channel
[01:25] nornagon_: lukegalea: really? i've been running express+connect on 0.3.7+ for weeks
[01:26] softdrink has joined the channel
[01:26] lukegalea: as far as I know, it's only official been supported for a couple days. The 2.0 branch targets 0.3+ and the 1.0 branch targets 0.2.x.. Not sure exactly what goes wrong when you run it in the newer node..
[01:26] lukegalea: I'll see if I can find some supporting docs.. Maybe I'm wrong or crazy
[01:27] lukegalea: from express github:
[01:27] whaka has joined the channel
[01:27] lukegalea: Node Compatibility
[01:27] lukegalea: Express 1.x is compatible with node 0.2.x and connect < 1.0.
[01:27] lukegalea: Express 2.x is compatible with node 0.4.x and connect 1.x
[01:27] omarkj has left the channel
[01:27] sechrist_ has joined the channel
[01:29] fusspawn: I just went through this with the duostack team and fixed it. its evil.
[01:29] fusspawn: confused me for the day anyways :P
[01:30] malcoholm: Ah ok. I'll check my version of express
[01:31] marcello3d: yea, express, connect, and mongodb-native all changed recently :)
[01:34] marcello3d: aw seriously, jade, too?
[01:35] pcardune has joined the channel
[01:37] eee_c has joined the channel
[01:37] markc has joined the channel
[01:37] devrim has joined the channel
[01:39] marcello3d: not sure if it's cool to call jade robust if stuff is being added and removed D:
[01:41] mlncn has joined the channel
[01:42] lukegalea has joined the channel
[01:47] abraham has joined the channel
[01:47] cagdas has joined the channel
[01:49] malcoholm: Thanks for your help. Should get back to work now, will probably be back later on.
[01:50] mlncn-agaric has joined the channel
[01:51] airhorns has joined the channel
[01:52] cagdas: isaacs: for npm problem, it's weird that I've installed node with ./configure, make, sudo make install
[01:52] cagdas: but when I do sudo which node
[01:52] cagdas: it says: which: no node in (/sbin:/bin:/usr/sbin:/usr/bin)
[01:52] isaacs: cagdas: probably it's installed in /usr/local/bin
[01:52] isaacs: cagdas: try sudo -e
[01:53] isaacs: sudo -e which node
[01:53] isaacs: er... maybe it's -E
[01:53] ultra has joined the channel
[01:53] isaacs: -e is edit..
[01:53] ultra: node.js runs on chrome only amirite?
[01:53] cagdas: yes, -E
[01:53] cagdas: but it failed either
[01:54] cagdas: it's installed in /usr/local/lib as you said
[01:56] cagdas: I guess it's better to install $HOME
[01:59] tfe_: is there a recommended practice for forking npm packages?
[01:59] tfe_: as far as renaming, like ruby gems usually do name-package for forks
[02:00] Aria: That'd make sense.
[02:01] tfe_: is there a way to specify that the library to load is still the original package name, rather than the fork name?
[02:02] tfe_: "main"?
[02:03] tfe_: nm that's not it.
[02:04] sivy has joined the channel
[02:04] fusspawn: another way to say it: I want to fork express and use npm to install the fork, but still want require("express"); to work.
[02:04] jesusabdullah: Well
[02:05] matyr has joined the channel
[02:05] jesusabdullah: maintain your own fork of express, called express still
[02:05] jesusabdullah: and then install that
[02:05] jesusabdullah: npm install ./
[02:05] jesusabdullah: and for all npm knows, that's express.
[02:05] jesusabdullah: Ta-da!
[02:05] tfe_: would like to have it available in the npm registry, so others can use it.
[02:05] tfe_: i suppose they could just change their require() statements
[02:05] tfe_: it gets assigned to a variable anyway, so usually they'd only have to change one line.
[02:06] jesusabdullah: Indeed.
[02:07] lukegalea has joined the channel
[02:07] jesusabdullah: Why not just send a pull request to tj?
[02:09] eyesUnclouded has joined the channel
[02:11] davidc_ has joined the channel
[02:11] marcello3d: npm link is even better
[02:12] mlncn has joined the channel
[02:12] dominic_ has joined the channel
[02:12] cagdas: I've added /usr/local/bin to secure_path in /etc/sudoers
[02:12] cagdas: is that ok?
[02:12] Aria: Usually.
[02:14] marcello3d: what is the current directory for fs.readFile ?
[02:15] marcello3d: is it based on process.argv[0] ?
[02:15] Aria: No, it's based on where you ran the process from.
[02:15] Aria: There's no implicit chdir.
[02:15] Aria: (node resolves require paths itself for that reason)
[02:16] marcello3d: sorry, not argv[0]
[02:16] marcello3d: but whatever cd you start the app from
[02:16] Aria: Yes.
[02:16] mlncn-agaric has joined the channel
[02:17] marcello3d: ok
[02:17] zemanel has joined the channel
[02:22] jimt has joined the channel
[02:23] kanja1 has joined the channel
[02:23] kanja1: I'm coming from a django background - can someone recommend a good framework to use?
[02:24] CrypticSwarm has joined the channel
[02:25] kkaefer: kanja1: express seems to be the standard
[02:26] Aria: To use for what?
[02:26] kkaefer: kanja1: but yeah, it depends on your use case
[02:26] Aria: Express is nice for writing web apps. It's lousy for writing mail servers.
[02:27] kanja1: yeah I guess it always does.. I'm playing around with a simple fb app. I think it's going to be one url that returns html and a ton of json producing ones
[02:27] kanja1: I was just looking at express vs wilson - express seems to be much more recently updated...
[02:27] Aria: Express is nice for that. Overkill, but still small enough to not matter.
[02:27] kanja1: yeah I don't mind if it's overkill
[02:28] kanja1: that's part of the fun :)
[02:28] marcello3d: express isn't actually that much stuff on top of connect
[02:28] Aria: Yeah, not at all.
[02:28] gazumps has joined the channel
[02:29] seivan has joined the channel
[02:29] lukegalea has joined the channel
[02:29] emilk2000: any tip for a html formatter to use in repl?
[02:29] mlncn has joined the channel
[02:31] Aria: Formatter...?
[02:31] jacobolus has joined the channel
[02:34] emilk2000: sorry, i'm looking for a pretty printer as it is hard to orientate in 'sort-of-minified' html the site i need to scrape uses
[02:34] mlncn has joined the channel
[02:35] jashkenas has joined the channel
[02:36] marcello3d: tidyhtml?
[02:36] tk has joined the channel
[02:37] emilk2000: yeah, I need to run it throuh exec, right! thank you
[02:40] lukegalea has joined the channel
[02:41] kanja1: sorry to keep asking, but how do I install node-waf?
[02:41] kanja1: npm install waf|node-waf is no good :(
[02:41] Aria: Uh... make install in the node source.
[02:42] Aria: It's part of node
[02:42] kanja1: dur so it is
[02:42] kanja1: sorry
[02:42] kanja1: hashlib is faliing to install and I just assumed that was the problem
[02:45] mlncn has joined the channel
[02:46] mlncn has joined the channel
[02:46] jesusabdullah: v8 doesn't do anything along the lines of tail-call optimization, does it?
[02:47] lemonhall_ has joined the channel
[02:48] hassox has joined the channel
[02:48] marcello3d: it might
[02:48] mikegerwitz: jesusabdullah: I've wondered the same
[02:49] jesusabdullah: Hmm
[02:49] marcello3d: https://code.google.com/p/v8/issues/detail?id=457
[02:49] jesusabdullah: Not that I know a whole lot about these kinda things
[02:49] mikegerwitz: http://code.google.com/p/v8/issues/detail?id=457
[02:49] jesusabdullah: But I really like writing code in, umm
[02:49] jesusabdullah: that style
[02:49] jesusabdullah: what's it called?
[02:49] mikegerwitz: functional
[02:49] marcello3d: hah
[02:49] jesusabdullah: Not the word I'm looking for =_=
[02:49] mikegerwitz: jesusabdullah: recursive?
[02:49] jesusabdullah: ummmmmm
[02:49] Aria: Recursive?
[02:50] jesusabdullah: YES recursive
[02:50] jesusabdullah: Sorry
[02:50] matschaffer has joined the channel
[02:50] marcello3d: it's called functional
[02:50] mikegerwitz: jesusabdullah: it's used in functional programming :) in place of loops
[02:50] marcello3d: recursion is just a component of it
[02:51] marcello3d: that issue makes it sound like you need ES5 strict for it to be a possibility
[02:51] jesusabdullah: Well, I'm familiar with functional programming
[02:51] jesusabdullah: but there are a lot of ideas that go on there
[02:51] mlncn has joined the channel
[02:51] mikegerwitz: http://wiki.ecmascript.org/doku.php?id=harmony:proper_tail_calls
[02:51] boaz has joined the channel
[02:51] mikegerwitz: So it's possible...
[02:51] mikegerwitz: jesusabdullah: But it's still outstanding, I think
[02:52] jesusabdullah: I'll just keep my for loop implementation in place
[02:52] marcello3d: http://wiki.ecmascript.org/doku.php?id=harmony:proper_tail_calls
[02:52] jesusabdullah: It's actually pretty readable
[02:52] meso has joined the channel
[02:52] mikegerwitz: jesusabdullah: Yeah..until that optimization is put in place it'd be much slower and just exhaust the call stack
[02:53] marcello3d: mikegerwitz: we're sharing the same links :D
[02:53] lukegalea has joined the channel
[02:53] jesusabdullah: Well, it's silly to worry anyway when it's just a dice-rolling function
[02:53] mikegerwitz: jesusabdullah: though, considering that one fact, it's possible to test if the optimization does exist
[02:53] jesusabdullah: roll(3, 6) is equivalent to rolling 3D6
[02:53] incon: node-mongodb or node-mongodb-native ?
[02:53] marcello3d: incon: mongolian :D
[02:53] abraham has joined the channel
[02:53] jesusabdullah: it's pretty rare to have hundreds of dice, y'know
[02:54] jesusabdullah: I wonder if roll(m).d(n) would be worth doing
[02:54] incon: marcello3d: beef or chicken?
[02:55] incon: What one is most used supported active?
[02:55] marcello3d: mongodb-native is
[02:55] marcello3d: and mongoose
[02:55] mikegerwitz: jesusabdullah: https://gist.github.com/857992 > /usr/local/lib/node
[03:06] isaacs: Ond: oh, that's just node version requirements. ignore dependency version requirements? no.
[03:07] isaacs: Murugaratham: ok, there you go. Add this to your .bashrc or whatever: export NODE_PATH=/usr/local/lib/node
[03:07] Ond: No I was just wondering about the node version requirements
[03:07] Murugaratham: osx i can do it @ ~/.bash_profile?
[03:07] Nexxy has joined the channel
[03:08] marcello3d: Murugaratham: I use .profile on osx
[03:08] marcello3d: but I think they all work
[03:08] Murugaratham: oo
[03:08] Murugaratham: but when i head .bash_profile
[03:09] Murugaratham: export NODE_PATH="/usr/local/lib/node"
[03:09] Murugaratham: export PATH="/usr/local/bin:/usr/local/sbin:/usr/local/mysql/bin:/usr/local/share/npm/bin:$PATH"
[03:09] Murugaratham: shud i use .profile instead
[03:09] isaacs: Murugaratham: as long as the NODE_PATH environ shows up, then that's fine.
[03:09] isaacs: Murugaratham: i don't really care what file you put it in. check `man bash` to see which files get loaded when.
[03:09] isaacs: you could even do `NODE_PATH=/usr/local/lib/node node my-program.js` and it'd work fine
[03:10] isaacs: there are many ways to set environment vars
[03:10] Murugaratham: o sry i'm a unix nub
[03:10] isaacs: no worries. you should hang out in #bash and ask questions there. those guys will beat the n00b right outta ya ;)
[03:10] Murugaratham: lol
[03:10] isaacs: ACTION owes a lot of learning and a few bruises to #bash
[03:11] Murugaratham: ic
[03:11] mlncn has joined the channel
[03:11] seivan_ has joined the channel
[03:11] zentoooo has joined the channel
[03:12] Murugaratham: when i echo $NODE_PATH
[03:12] Murugaratham: it shows me /usr/local/lib/node
[03:12] Murugaratham: but when i try to node "myprogram.js"
[03:12] Murugaratham: it still say cannot find module 'socket.io'
[03:12] Murugaratham: ._.?
[03:13] isaacs: Murugaratham: does `node -e require.paths` show that path as one of the ones in the list now?
[03:13] asimismo has joined the channel
[03:13] eventi has joined the channel
[03:13] Murugaratham: [ '/usr/local/lib/node',
[03:13] isaacs: Murugaratham: what about `node -e process.env.NODE_PATH`, does that show the setting?
[03:13] Murugaratham: '/Users/Gary/.node_modules',
[03:13] Murugaratham: '/Users/Gary/.node_libraries',
[03:13] Murugaratham: '/usr/local/Cellar/node/0.4.2/lib/node' ]
[03:13] isaacs: ok, you've set a var, butnot exported it to the env, then, it seems
[03:14] isaacs: oh, wait, nvm, didn't see the first line
[03:14] isaacs: Murugaratham: cd into there, is there a "socket.io" thing?
[03:14] Murugaratham: yea there's 2
[03:14] Murugaratham: socket.io and socket.io@0.6.16
[03:15] sirkitree has joined the channel
[03:15] isaacs: $ node
[03:15] isaacs: > [process.version, require("npm").version, require("socket.io")]
[03:15] isaacs: [ 'v0.4.2',
[03:15] isaacs: '0.3.14',
[03:15] isaacs: { listen: [Function], Listener: { [Function] super_: [Function: EventEmitter] }, version: '0.6.16' } ]
[03:15] isaacs: Murugaratham: what's node -v and npm -v?
[03:15] Murugaratham: node v0.4.2
[03:16] Murugaratham: npm 0.3.15
[03:17] rfay has joined the channel
[03:17] maushu: Love hour? Love hour.
[03:19] sechrist has joined the channel
[03:19] mikegerwitz: ACTION raises eyebrow
[03:19] mike5w3c has joined the channel
[03:20] marcello3d: hax
[03:21] ryah: can node have an official song?
[03:21] ryah: ACTION thinks so.
[03:21] xandrews has joined the channel
[03:22] marcello3d: an illegitimate song would be even cooler
[03:23] fusspawn has joined the channel
[03:23] maushu: ryah, please don't drink before using irc or coding.
[03:23] maushu: Specially coding.
[03:23] marcello3d: no balmer peak?
[03:23] mikegerwitz: mekazu: lol, was just thinking that
[03:23] kanja1: you have to spect the balmer peak
[03:23] kanja1: respect*
[03:23] unomi has joined the channel
[03:23] unomi has joined the channel
[03:24] ryah: maushu: it must be the fever from the flu :)
[03:24] maushu: Oh.
[03:25] isaacs: ryah: -1 on official song. if there's a song in node-core, it'll only prevent innovation in userland.
[03:25] isaacs: ;)
[03:25] fusspawn: >.<
[03:25] Murugaratham: :(
[03:26] marcello3d: the song seems awfully quiet with my speakers muted
[03:26] abrahamwilliams has joined the channel
[03:29] fusspawn has joined the channel
[03:29] luke` has joined the channel
[03:29] Me1000 has joined the channel
[03:30] luke`_ has joined the channel
[03:34] Murugaratham: any1 can help me?
[03:35] Zilee: Sup?
[03:35] Murugaratham: oh i was trying this tutorial @ http://howtonode.org/heat-tracer
[03:36] Murugaratham: someone else was helping me just now as i had cannot find module 'socket.io'
[03:36] Murugaratham: now it's ok but i have new TypeError: Object # has no method 'staticProvider'
[03:37] Zilee: Well just as it implies, doesn't have that method, did you check the latest docs to see if that method exists or has changed since?
[03:37] Zilee: Although # is ambigious
[03:37] Murugaratham: hmm
[03:37] Murugaratham: the repository is very new
[03:38] Murugaratham: last updated is feb
[03:38] nornagon_: I swear I found some functions in node.js that did stopwatch things -- like watch.start(); ... sys.puts(watch.stop())
[03:38] nornagon_: but i can't find them any more :(
[03:39] abraham has joined the channel
[03:41] marcello3d: Murugaratham: that's an express incompatibility
[03:41] marcello3d: looks like that's using express 0.x, rather than 1.x
[03:41] Murugaratham: ooo
[03:41] Murugaratham: so shud i update express?
[03:43] Murugaratham: oh, i misread, u mean tt js uses a older express?
[03:44] matyr_ has joined the channel
[03:44] marcello3d: so you would need to downgrade express to use it
[03:44] marcello3d: or wait for an update to heat tracer
[03:44] marcello3d: or hack it :)
[03:44] Murugaratham: aha, i'll try a downgrade first then
[03:44] Murugaratham: thx marc
[03:44] Zilee: The easiest way is the way of the ninja :)
[03:49] AphelionZ has joined the channel
[03:50] kriszyp has joined the channel
[03:51] gerad has joined the channel
[03:53] AphelionZ has left the channel
[03:53] lukegalea has joined the channel
[03:54] jtsnow has joined the channel
[03:54] warz has left the channel
[03:55] matyr has joined the channel
[03:55] Murugaratham: omg im still getting cannot find module 'socket.io'
[03:55] Murugaratham: wat's wrong ;(
[03:56] kawaz_air has joined the channel
[03:56] abraham has joined the channel
[03:57] AAA_awright: mikegerwitz: Did you read through http://nodejs.org/docs/v0.4.2/api/modules.html ?
[03:57] mikegerwitz: AAA_awright: yes, I have
[03:58] AAA_awright: ?
[03:58] mikegerwitz: AAA_awright: did you mean Murugaratham ?
[03:58] Murugaratham: hmm lol
[03:58] Murugaratham: oops
[03:58] AAA_awright: Bah bad nickname coloring strikes again
[03:58] mikegerwitz: AAA_awright: ;)
[03:58] Murugaratham: i used npm install socket.io
[03:59] AAA_awright: Murugaratham: If that's all you need I would just install by hand, git checkout in a node_modules subdirectory
[03:59] sabad66 has joined the channel
[03:59] sabad66 has left the channel
[04:00] marcello3d has joined the channel
[04:00] newtojs has joined the channel
[04:00] newtojs: hello
[04:00] Murugaratham: o
[04:00] Murugaratham: i'll try
[04:00] newtojs: lol
[04:00] newtojs: thanks
[04:01] AAA_awright: Murugaratham: or use the REPL and test that it exists, you can tab complete modules usually
[04:01] newtojs: can't figure this out for the life of me... is there a way to "force" something to be blocking in node?
[04:01] Murugaratham: i'm new to js too, wat's repl?
[04:01] AAA_awright: require(' Tab
[04:02] AAA_awright: Murugaratham: Make sure you read http://nodejs.org/docs/v0.4.2/api/index.html it describes all that
[04:02] Murugaratham: aight
[04:02] AAA_awright: All on one page http://nodejs.org/docs/v0.4.2/api/all.html
[04:02] Shrink has joined the channel
[04:02] Shrink has joined the channel
[04:03] hassox has joined the channel
[04:03] Shrink has left the channel
[04:03] newtojs: for example i have for loop that iterates through a list, and each iteration of the loop i call another sub function. how do i stop it from going past the for loop until the last callback is done?
[04:03] whaka has joined the channel
[04:04] meso_ has joined the channel
[04:04] razvandimescu has joined the channel
[04:05] AAA_awright: newtojs: http://metaduck.com/post/2675027550/asynchronous-iteration-patterns-in-node-js
[04:05] markc has joined the channel
[04:05] AAA_awright: newtojs: You can do it but you must use some sort of callback as that describes
[04:05] eyesUnclouded has joined the channel
[04:05] isaacs has joined the channel
[04:06] newtojs: beauty :) thanks so much AAA_awright!
[04:07] mikegerwitz: newtojs: Use process.nextTick() instead of setTimeout() as well, in the case of that link. If you decide to use it in that manner.
[04:07] nornagon_ has joined the channel
[04:08] newtojs: the examples there don't use nextTick and setTimeout?
[04:08] joshfng has joined the channel
[04:08] AAA_awright: According to the documentation nextTick is faster
[04:08] mikegerwitz: newtojs: A bit further down it does :) To prevent exhausting the call stack
[04:08] nornagon_: i'm looking at --prof output
[04:08] nornagon_: and i'm seeing a bunch of ___private_getcwd ticks
[04:08] nornagon_: what on earth is that?
[04:09] AAA_awright: And yeah, you want to use nextTick if you're recursing to loop
[04:10] newtojs: ah i see it now. sweet! i'll try it out with nextTick and see how it goes
[04:11] mlncn has joined the channel
[04:15] dominic_ has joined the channel
[04:18] admc has joined the channel
[04:20] abraham has joined the channel
[04:20] lukegalea has joined the channel
[04:23] kanja1: can an express user explain how the rendering chooses templates? when I do something like "res.render(index.jqtpl)" how is index found?
[04:25] ChrisPartridge: kanja1: looks in the set views path?
[04:26] isaacs: awesome. npm install github-flavored-markdown
[04:26] isaacs: that was super easy
[04:26] ChrisPartridge: kanja1: More specfically, it's explained in the express documention - http://expressjs.com/guide.html#View-Rendering
[04:27] ChrisPartridge: isaacs: ? all the markdown packages on github now in npm?
[04:28] dominic_ has joined the channel
[04:28] rhdoenges has joined the channel
[04:29] kanja1: ChrisPartridge: yeah, I'm reading that right now - I feel like I'm not understanding it though? I can set a default renderer for a specific file extension, and I can pass a relative file path via "layout" in the options dict, but that first parameter is confusing me
[04:30] newtojs: AAA_awright, mikegerwitz, that article has an update (Update: Also (as pointed out by Tim Caswell), it’s important that no exceptions go back up into the event loop instead of ending up on the callback.), and the updated example doesn't use the setTimeout any more... which one is the better way to go about it?
[04:31] ChrisPartridge: kanja1: Which first parameter? the view name?
[04:32] mikegerwitz: newtojs: You want to use process.nextTick() (in place of set timeout), otherwise the recursion could eat up a lot of the stack space for large data sets. If an exception is thrown, it cannot be caught by the block calling the function. I assume that's what they're saying.
[04:33] kanja1: ChrisPartridge: yeah - how is that found? How is extension determined? What if you had "index.html" and "index.htm"
[04:33] mikegerwitz: newtojs: Node handles that by using EventEmitters for raising errors. Otherwise, it'll bubble up to the 'uncaughtException' event
[04:34] nornagon_: man, wtf is calling ___private_getcwd
[04:34] mikegerwitz: newtojs: Basically, if you're not doing anything that'll throw an exception, don't worry about it :) But if you DO throw an exceptino, recognize that the calling block cannot catch it, unless you ditch process.nextTick() or setTimeout()
[04:35] mikegerwitz: newtojs: In which case, use EventEmitter
[04:35] ChrisPartridge: kanja1: you can either specify an extension to the filename, and express will use the rendering engine for that extension, or you can set a default and just pass 'index'. This is also in the docs, in the section I linked above!
[04:36] lukegalea has joined the channel
[04:37] seivan has joined the channel
[04:38] meso_ has joined the channel
[04:41] kanja1: ChrisPartridge: I don't think the extension is mentioned in the docs :( Unless is the example index.jade actually talking about a file named index.jade?
[04:41] whaka: i'm lost with require.paths, the last path is '/usr/local/lib/node' but under that path I have e.g. express-contrib/lib/express-contrib
[04:42] whaka: this means require('express-contrib/message') will fail, did I install the staff wrongly?
[04:42] kwik101 has joined the channel
[04:42] newtojs: sweet! it works :D thanks friends. i take back everything bad i said about javascript heh
[04:43] SubStack: regret nothing!
[04:43] halfhalo: evil laugh is needed
[04:50] McMAGIC-- has joined the channel
[04:52] rhdoenges: node triumphs again!
[04:53] lukegalea has joined the channel
[04:57] saschagehlich_ has joined the channel
[05:01] nornagon_ has joined the channel
[05:02] kanja1: arg sorry to be so newby tonight, but is it possible to use the facebook api within a node function?
[05:02] briznad has joined the channel
[05:03] Aria: Well... yes, maybe, depending on what you intend to do.
[05:03] Aria: The Facebook API is usually run in a browser, not node.
[05:04] lukegalea has joined the channel
[05:05] dominic_ has joined the channel
[05:05] kanja1: Right... I'm trying to take a post request that has a picture and put it into their fb photo album
[05:06] kanja1: doing that server side afaik means posting directly to urls?
[05:06] Aria: Usually, yes.
[05:07] Aria: Since it's a network request, there's going to be more than one function involved-- a callout, and a callback.
[05:09] kanja1: sorry, it's late and I'm not typing clearly :) - I mean as far as node goes, I'm going to have to hit the fb urls directly, rather than using a library and letting that do the posting for me
[05:15] Aria: Yeah, unless you write the library as far as I know. But it's worth a quick google and search on github.
[05:15] kanja1: yeah I've been looking and there's a ton of fb-connect libs
[05:15] kanja1: but I can't find a graph-api one
[05:18] kanja1: I love github: https://github.com/tenorviol/node-facebook-sdk
[05:18] Aria: Sweet!
[05:18] kanja1: awesome, well that's enough for tonight.. I'll probably be back tomarrow for more help. Thanks all!
[05:19] flow3r has joined the channel
[05:19] whaka: is there a good place to find some help regarding node.js and express?
[05:19] ChrisPartridge: whaka: ask in here, someone might be able to help
[05:20] whaka: if i install a module with npm, how do I load the actual js files? do i need to load the module somehow before I do require?
[05:21] isaacs: whaka: there's been some changes there recently. what version of npm?
[05:21] Aria: Nope. If you installed npm in a place node looks (and it does by default), then require works.
[05:21] whaka: 0.3.14
[05:22] gerad has joined the channel
[05:22] isaacs: whaka: then it installs them in $(npm config get root)/.npm///package/ and symlinks that folder to $(npm config get root)
[05:22] whaka: still puzzled :S ... the modules all install in /usr/local/lib/node
[05:22] isaacs: whaka: yeah, that's the root config
[05:23] isaacs: ACTION can't wait for npm 1.0
[05:23] whaka: but... if i install X i get a folder like /usr/local/lib/node/X/lib/X
[05:23] mikegerwitz: isaacs: bold version number! When's that?/
[05:23] isaacs: whaka: yeah
[05:23] isaacs: mikegerwitz: yeah.
[05:24] asimismo has joined the channel
[05:24] themiddleman has joined the channel
[05:24] whaka: so how can i use the files inside this folder with require?
[05:24] isaacs: mikegerwitz: https://github.com/isaacs/npm/tree/1.0
[05:24] isaacs: whaka: does the package have a "main" field?
[05:24] isaacs: whaka: if so, then require("X") will work
[05:24] whaka: i tried some express examples and they didn't wortk :(
[05:25] whaka: for example require("exxpress-contrib/message") failed
[05:25] isaacs: whaka: yeah, i think express is going through a bit of growing pains
[05:25] isaacs: whaka: yes.
[05:25] eganl has joined the channel
[05:25] isaacs: whaka: you'd need to do require("express-contrib/lib/message")
[05:25] isaacs: whaka: child modules need to be fully specified.
[05:25] isaacs: (as of npm 0.3 and node 0.4
[05:26] isaacs: Aria: hey, can i bounce an idea off your brain?
[05:26] Aria: Absolutely!
[05:26] whaka: i c, so do i have to require.paths.unshift and add the full path (/usr/local/lib/express-contrib/lib/express-contrib) to make this work?
[05:26] isaacs: whaka: no, just do require("express-contrib/lib/whatever")
[05:26] lukegalea has joined the channel
[05:26] isaacs: whaka: or just require("express-contrib")(
[05:27] isaacs: whaka: don't touch require.paths.
[05:27] whaka: ahh, ic
[05:27] whaka: kewl
[05:27] whaka: thanks
[05:27] isaacs: Aria: OK! so, in npm 1.0, when you do "npm install html5", it installs it in ./node_modules/html5
[05:27] isaacs: whaka: np :)
[05:27] Aria: Woo!
[05:27] isaacs: Aria: let's say that i'm building something that uses html5
[05:27] Aria: Okey.
[05:27] isaacs: now, i really *don't* probably want to publish html5 bundled in my app
[05:27] Aria: Yeah, not generally.
[05:27] isaacs: i, as the maintainer of registry.npmjs.org, certainly don't want multiple copies of every dependency
[05:28] Aria: Good for deployment, bad for publishing.
[05:28] isaacs: especially as a->b->c->d and they all depend on vows
[05:28] Aria: Yeah.
[05:28] isaacs: so, i need a way, at publish time, to know that something has been installed by npm, and not monkeyed with
[05:28] isaacs: because, if you put it there by hand, and then edit it, you probaly want the one you edited.
[05:28] mikeal has joined the channel
[05:29] mikeal has joined the channel
[05:29] isaacs: option a: no. node_modules/* are never published. list your deps in a package.json file, or your program won't work, period.
[05:29] isaacs: option b: do something clever.
[05:29] Aria: Hm.
[05:30] isaacs: because, you might, for instance, *not publish* something that's sitting in ./node_modules
[05:30] Aria: I think there's three cases that should be handled. It's in NPM, it's stock -- list a dependency; it's not in NPM; package it. It's in NPM but modified: bail and yell unless overridden.
[05:30] isaacs: in particular, it might be a git submodule (like how npm does with semver, since it clearly can't install that until it's installed)
[05:31] isaacs: i see. so if node_modules/foo is some version foo@1.2.3, and there's a foo@1.2.3 on the registry, then ignore it
[05:31] isaacs: but, again, this will fail for npm's own use case
[05:31] Aria: Yeah?
[05:31] Aria: That seems like a rare case. Yay bootstrapping!
[05:31] isaacs: because of this: https://github.com/isaacs/npm/blob/master/.gitmodules
[05:32] isaacs: yeah
[05:32] isaacs: i was thinking about using sentry files, which is a bit lame, but whatever.
[05:32] isaacs: ./node_modules/foo/_npm_mark_remove_me_
[05:32] isaacs: if that file exists, then ignore the package and don't publish it
[05:32] Aria: How about an entry in packages.json?
[05:33] Aria: Hm, I would think the opposite. A sentry for something you want to include.
[05:33] isaacs: ok
[05:33] Aria: "bundle-dependency-always": "semver"
[05:33] Aria: "i-like-big-tarballs": "and-can-not-lie"
[05:33] isaacs: hahaha
[05:33] isaacs: i heard tusk tried to deny that..
[05:34] isaacs: and could not.
[05:34] isaacs: i could also bundle any contents of node_modules that are not listed as dependencies
[05:34] isaacs: so if you drop something there by hand, it'll get included.
[05:35] isaacs: and then you could have a "bundledDependencies":["semver", "express", "blah"]
[05:37] isaacs: ok, i think that's a pretty reasonable blend of explicit and default.
[05:37] Aria: Hm. Not too bad.
[05:37] Aria: Though npm has already surprised me by including more than I expected.
[05:37] abraham has joined the channel
[05:38] isaacs: yeah, i gotta work out some of that. it's kinda tricky to make sure that the right htings get included. I'm thinking i should probably just respect .gitignore if .npmignore is missing.
[05:39] gozala has joined the channel
[05:39] ossareh has joined the channel
[05:41] isaacs: Aria: what surprisd you?
[05:41] mike5w3c has joined the channel
[05:41] Aria: Oh, just having a few temp files around that got packed up.
[05:42] Aria: I'm so used to git, where things are added explicitly...
[05:42] hassox_ has joined the channel
[05:43] isaacs: yeah
[05:43] isaacs: npm's a bit like `git add .`
[05:44] Aria: Yeah. That's what threw me.
[05:44] isaacs: yeah, not sure that one's really solveable.
[05:44] Aria: Yeah, not without an index.
[05:44] isaacs: right
[05:45] isaacs: you *can* put a files: array in your package.json file, but it's.... werid.
[05:45] isaacs: doesn't quite work as you'd expect, and is a little broken. interacts badly with a .npmignore file
[05:45] Bloudermilk has joined the channel
[05:45] Aria: Hrm.
[05:45] lukegalea has joined the channel
[05:45] Aria: I personally would love that if it worked well.
[05:47] pcardune has joined the channel
[05:50] flow3r has left the channel
[05:51] eaton has joined the channel
[05:54] Nexxy has joined the channel
[05:54] Nexxy has joined the channel
[05:56] nornagon_: what's a good way to do performance regression testing in node.js? timing things by the wall clock directly is no good, because it won't be the same on different cpus...
[05:57] mike5w3c has joined the channel
[05:57] Aria: Does it need to be?
[05:57] Aria: You kinda have to not change too many variables during regression testing...
[05:58] abraham has joined the channel
[05:58] nornagon_: hm... i'd like to at least normalise it against some measure
[05:58] nornagon_: i guess i could just loop 1000000 times and count in units of however long that took
[06:00] jesusabdullah: I agree with Aria on this one.
[06:01] Emmanuel__ has joined the channel
[06:01] jesusabdullah: I wouldn't bother to normalize it if you're trying to figure out which thing is faster
[06:01] flippyhead_ has joined the channel
[06:01] Aria: Yeah, but this isn't benchmarks., this is regression testing.
[06:01] Aria: And performance regression testing is Hard.
[06:02] loktar has joined the channel
[06:03] isaacs: Aria++
[06:03] Aria: I mean, sure, some stick out as statistically significant even when there's confounding changes.
[06:04] Aria: But you pretty much have to have a repeatable setup to do it well.
[06:04] lukegalea has joined the channel
[06:05] astropirate has joined the channel
[06:07] warz has joined the channel
[06:07] adrian_berg has joined the channel
[06:12] nornagon_ has joined the channel
[06:14] saikat_ has joined the channel
[06:14] lukegalea has joined the channel
[06:16] nornagon_: Aria: jesusabdullah: connection dropped, did i miss anything?
[06:16] msch has joined the channel
[06:16] Aria: "And performance regression testing is Hard." "I mean, sure, some stick out as statistically significant even when there's confounding changes." " But you pretty much have to have a repeatable setup to do it well."
[06:17] nornagon_: right, okay.
[06:17] mbrochh has joined the channel
[06:17] nornagon_: maybe i just won't bother >_>
[06:17] mbrochh has joined the channel
[06:17] Aria: Hehe.
[06:21] dominictarr has joined the channel
[06:21] nciagra has joined the channel
[06:22] riven has joined the channel
[06:22] riven has joined the channel
[06:23] JJMalina has joined the channel
[06:24] Atmoz has joined the channel
[06:24] elliottcable has joined the channel
[06:25] lukegalea has joined the channel
[06:25] strimpaz has joined the channel
[06:26] jesusabdullah: Because you're my favorite programming channel: How do game designers balance their games?
[06:26] aphelion has joined the channel
[06:27] Murugaratham has joined the channel
[06:27] hassox has joined the channel
[06:27] Aria: "Very carefully"
[06:27] Aria: Depends on the game of course.
[06:29] jesusabdullah: But are there strategies? Or do you just bullshit something and start playing?
[06:29] jesusabdullah: Suppose it's an RPG
[06:29] jesusabdullah: or a TBS
[06:30] matyr has joined the channel
[06:31] FireFly has joined the channel
[06:31] Aria: Well, you want to keep the various teams about equally powerful.
[06:31] Aria: If they're very different, that can get hard.
[06:31] Aria: You often have to tune various things so that one strategy doesn't dominate.
[06:31] jesusabdullah: Sure, but how do you know how powerful something is?
[06:31] astropirate: because you are the one setting them :p
[06:32] jesusabdullah: But the scale is entirely arbitrary, and difficulty levels might not map linearly!
[06:32] Aria: Depends on the thing. Weapons can be more or less powerful if you can adjust their speed, range, damage, number of targets hit ...
[06:32] nornagon_: jesusabdullah: actually i was thinking about scripting game balance using genetic algorithms a while ago
[06:32] jesusabdullah: I was thinking about that too
[06:32] nornagon_: but if you're interested in examples, watch the starcraft 2 patches.
[06:33] nornagon_: that game is exquisitely balanced
[06:33] jesusabdullah: How do you do thaT?
[06:33] jesusabdullah: Yeah, it'd have to be. That's what SC was so famous for
[06:33] wav1 has joined the channel
[06:33] Yuffster has joined the channel
[06:33] nornagon_: first learn a bit about SC, then go find the changelogs :)
[06:34] Aria: Studying Freeciv was good for this for me. You get an idea of what sorts of systems they use, and they documented the hell out of it.
[06:34] dominictarr has joined the channel
[06:34] nornagon_: jesusabdullah: also look at the 'ascii games' blog
[06:34] matyr_ has joined the channel
[06:34] nornagon_: er, 'ascii dreams'
[06:35] Aria: Also, nethack.
[06:35] jesusabdullah: ascii dreams, huh?
[06:35] nornagon_: the guy that maintains unangband blogs about stuff
[06:35] nornagon_: incl. balance
[06:35] jesusabdullah: Aria: That sounds like a good idea to me---that is, freeciv sources
[06:35] nornagon_: and while you're at it, lostgarden.com
[06:35] nornagon_: in general though, balancing is a Hard Problem
[06:35] jesusabdullah: Sweet
[06:36] jesusabdullah: I bet
[06:36] jesusabdullah: I just don't even know where to start :P
[06:36] nornagon_: :)
[06:36] Aria: Ever played DnD?
[06:37] jesusabdullah: Yeah
[06:37] jesusabdullah: I've played it quite a bit
[06:37] jesusabdullah: Also some GURPS
[06:37] jesusabdullah: so I have a general idea of stats
[06:37] jesusabdullah: but I don't know how they assign challenge ratings, or decide xp per level, or things like that
[06:38] jesusabdullah: A series of Monster Manual reverse engineering plots could be really cool
[06:39] NancyStills: heh - neat blog at lostgarden.com
[06:40] NancyStills: I remember back in oh, 1979 maybe 1980 taking 'original d&d' and creating some random NPC crators on the mainframe. That was a thrill, 'using' the computer for creative tasks like that was the 'draw' for me.
[06:41] NancyStills: to have some laborious task 'automated' -> TOTAL magic -
[06:41] polyrhythmic has joined the channel
[06:41] hobs has joined the channel
[06:42] NancyStills: I've been watching this one set of videos from MIT- the course instructor goes 'computer science should always be fun' in fact, he's got a magician on his book cover. He rightly states computer science is about processes, processing. Odd in the 1970's the term 'data processing' ? the term 'event processing' never ever caught on, then again, I just made it up in 2011 right now. heh
[06:43] xSmurf has joined the channel
[06:43] NancyStills: I have a book when Univ. comp. sci dept. cleared out their library from 1950's from 'Her Majesties Royal - something or another - hard back called 'The Mechinatization of Thought Processae'- book is mostly logic gates etc. But ? 1950's ? I can see that.
[06:44] muhqu has joined the channel
[06:45] NancyStills: I like node.js in theory (I've STILL not got it up and running, I'm simply going to have to install some *nix OS - CYGWIN is just a hack solution it seems). When I dropped off of macro assembly programming on my Atari 800 ? I used to use this 'Vertical Blank Interrupt' it gave me 20,000 machine cycles 30 times a second. (used to think it was 60). It was VERY nice - I used all those cycles
[06:45] NancyStills: to run my programs at times. I became HOOKED on this idea of 'cyclic prgramming' and here ? the event loop ? in Javascript ? seems VERY close here.
[06:46] NancyStills: I used to call it to myself 'interrupt oriented programming' that is - you harness this cycle that goes round and round - and if something needs to be done ? well, I wasn't advanced enough to think 'set an event listener, queue it up and wait for the response' the key to async I/O so I understand... as to blocking.
[06:46] kawaz_air has joined the channel
[06:46] Aria: Hehe.
[06:47] NancyStills: But - here in some Google Tech Talk video this guy in a track suit (turns out to by Ryah in this channel) has modelled a web server using this same 'cyclic programming' or as I used to like to think of it - but it's not really low level interrupts in the JS event loop 'Interrupt Oriented'. I see Douglas Crockford is big on the event loop too. As to utilizing the multiplicity of processors
[06:47] NancyStills: that are now on even home pc's.
[06:48] NancyStills: heh - I see Microsoft just put out a free ebook on Parellel prorgamming techniques in .net
[06:48] disqk has joined the channel
[06:48] NancyStills: er, parallel -
[06:48] unfo-: NancyStills, url pls
[06:48] Twelve-60` has joined the channel
[06:48] NancyStills: http://msdn.microsoft.com/en-us/library/ff963553.aspx
[06:48] meso_ has joined the channel
[06:48] unfo-: NancyStills, tyvm
[06:49] luke` has joined the channel
[06:50] caligula__ has joined the channel
[06:50] NancyStills: I've been following this language Fortress from Guy Steele at Java, er, well - hard to say if it's Oracle in that sense now - or still labs. but - Fortress approaches parallel programming. Fortress has been no easy langauge for me to get my arms around heh
[06:50] sleeplessinc has joined the channel
[06:50] unfo-: Fortress was somehow related to Fortran, right?
[06:50] NancyStills: I didn't realize I was in node.js btw- this was all in response to that link off subject above someone shared on game design.
[06:50] gredman_ has joined the channel
[06:50] NancyStills: not really-
[06:50] NancyStills: that's what I thought too
[06:50] stevestreza has joined the channel
[06:50] phiggins has joined the channel
[06:50] unfo-: k. misinfo in my head then :)
[06:50] NancyStills: no real connection.
[06:51] __sri has joined the channel
[06:51] jesusabd1llah has joined the channel
[06:51] NancyStills: but - I mean, you have vector programming in fortran for parallel processing
[06:51] John9e9 has joined the channel
[06:51] MrSmurf has joined the channel
[06:51] sugyan_ has joined the channel
[06:51] dispalt_ has joined the channel
[06:51] vilhonen_ has joined the channel
[06:51] unfo-: damn this could be an interesting discussion, but i alas i must retire to start my work day now :)
[06:51] btipling_ has joined the channel
[06:52] mrkurt has joined the channel
[06:52] jb55 has joined the channel
[06:52] shajith_ has joined the channel
[06:52] strimpaz_ has joined the channel
[06:52] justis_ has joined the channel
[06:53] NancyStills: same here - my biggest challenge is staying focussed ! but I have to demo progress tomorrow - so time to design the database tonight ! jk on that last design statement. heh
[06:53] unfo-: :P
[06:54] JustCute has joined the channel
[06:54] jimt has joined the channel
[06:54] heavysixer_ has joined the channel
[06:54] bludadept_work` has joined the channel
[06:54] orospakr` has joined the channel
[06:54] Qix_ has joined the channel
[06:54] jtrally_ has joined the channel
[06:55] eresair_ has joined the channel
[06:55] gormer has joined the channel
[06:55] binspace has joined the channel
[06:55] CrypticSwarm has joined the channel
[06:55] slickplaid has joined the channel
[06:56] abraham has joined the channel
[06:56] malpeli has joined the channel
[06:57] arkx has joined the channel
[06:58] malpeli: hy guys! :D
[06:58] malpeli: someone using express or connect?
[06:58] mape: yes
[06:58] malpeli: someone knows what happen with cookieParser()
[06:59] mape: Seems they removed/renamed/moved connect middleware
[06:59] malpeli: I did try everything .... the api has changed in express 2.0 or connect 1.0.3?
[07:00] malpeli: mape: oh.... how do you get sessions ?
[07:00] mape: malpeli: https://github.com/senchalabs/connect/tree/master/lib/middleware
[07:00] eganl has joined the channel
[07:01] Murugaratham has joined the channel
[07:01] mape: and it is now located on connect.middleware.static for example, instead of connect.staticProvider
[07:01] mape: so connect.middleware.cookieParser
[07:02] malpeli: humm I get it
[07:02] sugardave has joined the channel
[07:03] nefariousD has joined the channel
[07:03] nciagra has left the channel
[07:05] malpeli: mape: "Each layer must have a route and a handle function" :S
[07:06] malpeli: mape: It seem to be undefined
[07:07] malpeli: mape: do you have session working at your apps?
[07:07] ossareh has joined the channel
[07:09] mape: malpeli: haven't restarted any apps using sessions
[07:10] Murugaratham has joined the channel
[07:13] dguttman has joined the channel
[07:14] malpeli: mape: humm it seems that node are using a wrong version of connect 0.5 :P I will try to fix.... thankyou very much for your help mape... have a great night
[07:14] mape: np
[07:15] andrewfff has joined the channel
[07:15] aceking5 has joined the channel
[07:16] mikeal has joined the channel
[07:17] malpeli has joined the channel
[07:18] lukegalea has joined the channel
[07:18] malpeli: mape: just a last question ... sorry, but I remove the old connect folder from the node folder... but require('connect').version... are still giving me the wrong package... I miss something? Im nob to node sorry
[07:19] mape: malpeli: used npm?
[07:19] Murugaratham_ has joined the channel
[07:19] malpeli: yes ... but seems that I have old versions that I dont know where they comes
[07:20] mape: what do you see if you do npm ls connect installed ?
[07:21] swistak has joined the channel
[07:28] breccan has joined the channel
[07:29] hassox has joined the channel
[07:29] malpeli: mape: humm it seems that i have a npm installed with sudo and it is in a different folder that node... hehehe I give up will install all again.... thanks again! maybe npm should comes with node by default :P
[07:32] lukegalea has joined the channel
[07:33] jimt has joined the channel
[07:34] Murugaratham: can anyone help me? i'm trying to run heat_tracer.js from http://howtonode.org/heat-tracer but i keep getting cannot find module 'socket.io'
[07:34] Murugaratham: i already installed socket.io using npm
[07:34] matyr has joined the channel
[07:37] saikat has joined the channel
[07:37] amerine has joined the channel
[07:38] AAA_awright: Murugaratham: Did you read the documentation on where Node.js searches for modules
[07:39] jimt_ has joined the channel
[07:39] ph^ has joined the channel
[07:39] ajnasz has joined the channel
[07:42] atiti has joined the channel
[07:43] zakabird: Murugaratham: on client side?
[07:43] mjr_ has joined the channel
[07:44] sechrist: errr
[07:44] zakabird: Murugaratham: on client side?
[07:44] zakabird: whoops
[07:44] svenlito_ has joined the channel
[07:44] sechrist: woah heat tracer looks sick
[07:45] matyr_ has joined the channel
[07:45] Murugaratham: yea it's on client side
[07:45] lukegalea has joined the channel
[07:45] Murugaratham: eh no i mean when i try to node it
[07:45] Murugaratham: it just gives me error saying socket.io cannot be found
[07:45] Murugaratham: but when i npm install socket.io
[07:45] TomY has joined the channel
[07:45] Murugaratham: it's npm ok
[07:45] Murugaratham: event after testing
[07:45] Murugaratham: even*
[07:47] zakabird: require('socket.io'); on server and src="lib/socket.io/socket.io.js" on client is working for me after npm'ing
[07:47] Qix_ has joined the channel
[07:47] Murugaratham: i dunno if my node installation is quirky
[07:47] Murugaratham: i used homebrew on osx to install
[07:47] zakabird: ah never mind the client part is just where I downloaded the socket.io
[07:47] Murugaratham: im trying to reinstall node :|
[07:47] zakabird: i had trouble on the client side initialy
[07:48] Murugaratham: i can't even get the process running now
[07:48] JohnnyL: do you guys know of any success with JS and OpenGL?
[07:48] zab has joined the channel
[07:49] AAA_awright: Murugaratham: Did you read the documentation on where Node.js searchces for modules?
[07:49] Murugaratham: yea i read on the modules and REPL
[07:49] mjr_: Oh sockets, why must you hang up?
[07:49] Murugaratham: but i'm really new to unix world so lots of things don make much sense to me
[07:49] AAA_awright: Murugaratham: Where is socket.io installed
[07:49] mjr_: So does http client keepalive just randomly break sometimes with "socket hang up"?
[07:50] Murugaratham: i used npm install socket.io
[07:50] Murugaratham: it shud end up in /usr/me/lib?
[07:50] AAA_awright: Murugaratham: I don't use npm I have no clue, last I checked it tells you where
[07:50] flasomm has joined the channel
[07:50] muhqu_ has joined the channel
[07:50] dominictarr has joined the channel
[07:51] AAA_awright: Murugaratham: Why are you trying to install heat-tracer if you have no clue how unix works?
[07:51] Murugaratham: i'm just running thru tutorials on howtonode
[07:52] AAA_awright: Probably not the best example then
[07:52] Murugaratham: btw it's on /usr/local/lib/node/socket.io
[07:52] groom has joined the channel
[07:52] AAA_awright: Murugaratham: Is that in one of the paths that Node.js checks? You can see for sure by running `node -e require.paths`
[07:53] razvandimescu has joined the channel
[07:53] johndahlstrom has joined the channel
[07:53] Murugaratham: im reinstalling node now
[07:53] JohnnyL has left the channel
[07:54] emattias has joined the channel
[07:55] Murugaratham: sorry to trouble y'all :(
[07:56] lukegalea has joined the channel
[07:56] AAA_awright: Murugaratham: If /usr/local/lib/node is in the node path, what files is it going to check for?
[07:57] Murugaratham: wat do u mean?
[07:57] AAA_awright: What do I mean?
[07:57] aways|bnc has joined the channel
[07:58] aways|bnc: ACTION hi all The new week start
[07:58] Murugaratham: 1 thing i found wierd is under ~ there's a .node_libraries
[07:58] Murugaratham: but there's no .node_modules
[07:58] AAA_awright: Murugaratham: If you ask for "socket.io" Node.js is going to check for a number of files in all the directories in the path, what files are those?
[07:58] ttpva has joined the channel
[07:59] johndahlstrom has joined the channel
[07:59] Murugaratham: modules?
[08:00] AAA_awright: Murugaratham: It checks both. See `node -e require.paths`
[08:01] AAA_awright: I prefer ~/.node_libraries but whatever
[08:01] Murugaratham: homebrew is installing node now lol
[08:01] Murugaratham: macbook air is slow
[08:01] AAA_awright: That's what you call slow?!?
[08:01] Murugaratham: im running a windows 2008 r2 vm too..
[08:02] Murugaratham: i was doing some POC for real-time notifications
[08:02] Aria: ... .There's your problem ;-)
[08:02] Murugaratham: tt's y i ventured socket.io
[08:02] Murugaratham: there's a law that says processor speed will double every 2 yrs
[08:02] pkrumins: no there isn't
[08:02] AAA_awright: There's a law that says the number of transistors people will cram onto a plate of silicon will double every 18 months
[08:03] Murugaratham: o
[08:03] Murugaratham: but microsoft will write apps that double in memory & cpu consumption every 2 years too
[08:03] pkrumins: not 18 months, but 24 months
[08:04] Murugaratham: hey AAA_awright when i do require.paths it says:
[08:04] Murugaratham: [ '/usr/local/lib/node',
[08:04] Murugaratham: '/Users/Gary/.node_modules',
[08:04] Murugaratham: '/Users/Gary/.node_libraries',
[08:04] Murugaratham: '/usr/local/Cellar/node/0.4.2/lib/node' ]
[08:04] mAritz has joined the channel
[08:04] AAA_awright: What does the actual fitted line say
[08:05] Murugaratham: wat u mean fitted line?
[08:05] AAA_awright: Moore's law in reality
[08:06] AAA_awright: I'm too lazy to fit the data myself..,
[08:06] darkredandyellow has joined the channel
[08:07] AAA_awright: Murugaratham: The documentation on which files it checks for is in http://nodejs.org/docs/v0.4.2/api/modules.html
[08:07] AAA_awright: Murugaratham: Is there a socket.io/index.js ?
[08:07] Murugaratham: :|
[08:07] bergie has joined the channel
[08:07] Murugaratham: in the workspace?
[08:07] chapel: I wonder how much they make per hour: http://www.spiritsgifts.com/portfolio.htm
[08:08] dubbe has joined the channel
[08:08] raz has joined the channel
[08:09] Murugaratham: AAA_awright: i don quite get wat u mean
[08:10] Murugaratham: if i can npm test socket.io
[08:10] Murugaratham: and it says fine
[08:10] nilyt has joined the channel
[08:10] Murugaratham: i dun understand y it fails when i try to node it
[08:10] dguttman has joined the channel
[08:10] AAA_awright: Murugaratham: Did you read up on how Node.js evaluates a require('socket.io') and looks up that file
[08:11] kal-EL_ has joined the channel
[08:11] daglees has joined the channel
[08:11] daglees has joined the channel
[08:11] Murugaratham: it will go to the lib folder first?
[08:12] Murugaratham: if it's not a native module and does begin with some of the reserved symbols
[08:12] Murugaratham: it will start @ parent directory and start searching recursively till the base?
[08:13] AAA_awright: Murugaratham: Does /usr/local/lib/node/socket.io/index.js exist
[08:13] thalll has joined the channel
[08:13] Murugaratham: yes
[08:13] Murugaratham: it's there
[08:14] AAA_awright: Murugaratham: And what happens when you type require('socket.io') on the REPL
[08:15] Murugaratham: { listen: [Function],
[08:15] jimt has joined the channel
[08:15] Murugaratham: Listener: { [Function] super_: [Function: EventEmitter] },
[08:15] Murugaratham: version: '0.6.16' }
[08:15] jetienne has joined the channel
[08:15] Murugaratham: means it's working?
[08:15] AAA_awright: It should be
[08:16] Murugaratham: cold it be due to the heat_tracer folder problem?
[08:16] Murugaratham: could*
[08:16] AAA_awright: I have no clue
[08:16] fangel has joined the channel
[08:16] Druid_ has joined the channel
[08:16] dominictarr has joined the channel
[08:16] mikeal has joined the channel
[08:17] muhqu_ has joined the channel
[08:17] AAA_awright: Gnight everyone
[08:18] Spion_ has joined the channel
[08:18] Murugaratham: good night :(
[08:19] V1 has joined the channel
[08:19] dve_ has joined the channel
[08:19] mhausenblas has joined the channel
[08:20] shiawuentan has joined the channel
[08:20] FireFly|n900 has joined the channel
[08:21] raz: hm
[08:21] SamuraiJack has joined the channel
[08:21] stagas has joined the channel
[08:22] kawaz_air has joined the channel
[08:22] swistak has joined the channel
[08:24] John9e9 has joined the channel
[08:25] void_ has joined the channel
[08:27] zemanel has joined the channel
[08:27] malpeli: someone have session working with express 2.0 or connect 1.0.3?
[08:28] malpeli: everytime I reload the page he create a new hash ID :(
[08:29] sveimac has joined the channel
[08:30] aceking5 has joined the channel
[08:31] kawaz_air has joined the channel
[08:32] masahiroh has joined the channel
[08:36] [AD]Turbo has joined the channel
[08:36] nornagon_ has joined the channel
[08:36] lukegalea has joined the channel
[08:38] teemow has joined the channel
[08:40] svenlito_ has joined the channel
[08:41] dve_ has joined the channel
[08:41] dve has joined the channel
[08:43] bergie has joined the channel
[08:43] msucan has joined the channel
[08:44] __tosh has joined the channel
[08:46] Croms has joined the channel
[08:47] Murugaratham: omg why i keep getting cannot find module 'socket.io' :@
[08:49] lukegalea has joined the channel
[08:49] q_no has joined the channel
[08:52] matyr has joined the channel
[08:54] dominictarr has joined the channel
[08:55] tbassetto has joined the channel
[08:57] dve: Murugaratham: are you requiring it or is it being required by another module?
[08:57] Murugaratham: im trying out howtonode/heat-trace
[08:57] Murugaratham: when i try to node it
[08:58] Murugaratham: it says module not found
[08:58] incon has joined the channel
[08:59] troessner has joined the channel
[09:00] lukegalea has joined the channel
[09:00] Murugaratham: i think i've a faulty node installation? or i messed up somewhere
[09:00] zakabird: the error is comming from node right? not the client in the browser?
[09:00] Murugaratham: from node
[09:00] mcahornsirup has joined the channel
[09:00] Murugaratham: i tried swapping require('socket.io') with express
[09:00] Murugaratham: it says cannot find module 'express' now
[09:00] dve: do 'node -v'
[09:00] Murugaratham: but when i use repl and require them its fine
[09:00] Murugaratham: v0.4.2
[09:01] Murugaratham: npm 0.3.15
[09:01] dve: connect or express?
[09:05] bergie has joined the channel
[09:11] xla has joined the channel
[09:11] zemanel: anyone here considering applying for YC by any chance?
[09:11] ttpva has joined the channel
[09:15] Croms has joined the channel
[09:16] lukegalea has joined the channel
[09:17] pascalopitz has joined the channel
[09:18] Murugaratham: dve: i mean express
[09:18] Murugaratham: when i use npm test socket.io
[09:18] Murugaratham: it's npm ok
[09:19] Murugaratham: likewise for express
[09:19] Murugaratham: but when i node heat tracer.js
[09:19] Murugaratham: it returns Cannot find module
[09:19] Murugaratham: wierd ._.
[09:20] jetienne: hi
[09:21] dve: morning
[09:21] dve: Murugaratham: what does your require line look like?
[09:21] thalll has joined the channel
[09:21] Murugaratham: var express = require('express');
[09:21] dve: jetienne: thanks for updating the node repository! 0.4.2 install this morning, easy! :)
[09:22] Murugaratham: when i echo $NODE_PATH: /usr/local/lib/node
[09:22] Murugaratham: all seems correct
[09:22] jetienne: dve: thanks :)
[09:23] pascalopitz: will everything break if I update from 0.4.0 to 0.4.2?
[09:23] Aria: It shouldn't!
[09:24] Aria: That's a stable series.
[09:24] Evet has joined the channel
[09:25] eganl has joined the channel
[09:26] ntelford has joined the channel
[09:31] siaoeh has joined the channel
[09:32] skm has joined the channel
[09:33] liquidproof has joined the channel
[09:33] pascalopitz: looking good
[09:34] eirikurn has joined the channel
[09:34] Evet has joined the channel
[09:35] eb4890 has joined the channel
[09:37] muhqu has joined the channel
[09:38] MattJ has joined the channel
[09:38] muhqu has joined the channel
[09:38] __tosh has joined the channel
[09:38] kawaz_air has joined the channel
[09:39] nook has joined the channel
[09:41] seivan has joined the channel
[09:44] gozala has joined the channel
[09:44] markwubben has joined the channel
[09:44] mraleph has joined the channel
[09:45] lukegalea has joined the channel
[09:45] pascalopitz has joined the channel
[09:46] matyr_ has joined the channel
[09:48] iFire has joined the channel
[09:48] floby has joined the channel
[09:50] Murugaratham has joined the channel
[09:51] Murugaratham: can any1 help me
[09:52] pascalopitz: with what
[09:52] pascalopitz: ?
[09:53] Murugaratham: i have problem running some .js from github
[09:53] Murugaratham: whenever i compile i keep getting module not found
[09:53] Murugaratham: but when i REPL require them it's fine
[09:53] pascalopitz: hmmm
[09:53] mhausenblas has joined the channel
[09:53] Murugaratham: is it due to my .bash_profile?
[09:53] pascalopitz: is it an npm module?
[09:54] Murugaratham: yup
[09:54] jetienne: Murugaratham: as a workaround, put the full path in the require()
[09:54] Murugaratham: actually it's express and socket.io
[09:54] pascalopitz: right
[09:54] Murugaratham: hmm a temp workaround?
[09:54] Murugaratham: i'm curious why it's behaving like this
[09:54] Murugaratham: when i echo $PATH and $NODE_PATH it looks fine
[09:54] kawaz_air has joined the channel
[09:55] muhqu has joined the channel
[09:55] floby: do `npm config get root`
[09:56] floby: that'll tell us where npm is putting your modules
[09:56] Murugaratham: its /usr/local/lib/node
[09:56] Murugaratham: $NODE_PATH
[09:56] floby: mmmh
[09:56] Murugaratham: is the same
[09:56] Murugaratham: wierd :(
[09:56] jetienne: nmod install express :)
[09:56] floby: do you modify in any way your require.paths in your program ?
[09:57] Murugaratham: i doubt so, i downloaded this js from github and no one's complaining
[09:57] floby: you execute code you don't read !? :p
[09:57] jetienne: https://github.com/jeromeetienne/nmod = 0.5.0 < 1.0.0 is this valid semver ?
[10:57] matyr has joined the channel
[11:02] seivan has joined the channel
[11:02] okuryu has joined the channel
[11:03] lukegalea has joined the channel
[11:03] ttpva has joined the channel
[11:06] davidc_ has joined the channel
[11:08] aklt has joined the channel
[11:08] d0k has joined the channel
[11:08] Evet has joined the channel
[11:10] Nevtus has joined the channel
[11:10] Nevtus has joined the channel
[11:11] herbySk has joined the channel
[11:12] ttpva has joined the channel
[11:13] Egbert9e9 has joined the channel
[11:14] Qix_ has joined the channel
[11:16] Egbert9e9 has joined the channel
[11:18] lukus has joined the channel
[11:20] zemanel has joined the channel
[11:24] squeeks_ has joined the channel
[11:24] mhausenblas has joined the channel
[11:24] squeeks_: Maybe I'm just blind but I'm not seeing a freebsd port for node.js?
[11:25] Sorella has joined the channel
[11:25] squeeks_: oh. it's in www.
[11:26] squeeks_: ... and it's only on 0.2.6.
[11:26] boaz has joined the channel
[11:27] piscisaureus has joined the channel
[11:27] piscisaureus: hi
[11:27] piscisaureus: anyone proficient in c here?
[11:32] johndahlstrom has joined the channel
[11:33] johndahlstrom has joined the channel
[11:34] hwinkel has joined the channel
[11:35] V1: squeeks_: just build from source @ github?
[11:36] squeeks_: V1: Err, I'm configuring for a bit more than a single server.
[11:38] lukegalea has joined the channel
[11:38] malkomalko has joined the channel
[11:38] herenowcoder has joined the channel
[11:42] floby has joined the channel
[11:44] sleeplessinc has joined the channel
[11:46] jimt_ has joined the channel
[11:48] lukegalea has joined the channel
[11:50] Egbert9e9 has joined the channel
[11:50] [AD]Turbo has joined the channel
[11:51] Egbert9e9 has joined the channel
[11:52] Qix_ has joined the channel
[11:53] aphelion has joined the channel
[11:53] aphelion has joined the channel
[11:55] Egbert9e9 has joined the channel
[11:55] abracsi has joined the channel
[11:55] Egbert9e9 has joined the channel
[11:56] jetienne: ok nmod fixed (note to self. do not rely on package.json dist-tags.latest)
[12:06] jetienne: ok i got a race on rmrf on mac...
[12:06] jetienne: node-libs++*
[12:08] siaoeh has joined the channel
[12:08] eee_c has joined the channel
[12:09] lukegalea has joined the channel
[12:10] Ori_P has joined the channel
[12:13] dve_ has joined the channel
[12:13] Murugaratham has joined the channel
[12:13] MrWarGames has joined the channel
[12:14] MrWarGames has joined the channel
[12:17] AphelionZ has joined the channel
[12:17] p0ns has joined the channel
[12:20] lukegalea has joined the channel
[12:20] pomodoro has joined the channel
[12:24] altamic has joined the channel
[12:25] phiggins has joined the channel
[12:25] larsemil has joined the channel
[12:27] Jonasbn_ has joined the channel
[12:30] eaton has joined the channel
[12:30] eaton has joined the channel
[12:30] lukegalea has joined the channel
[12:31] AphelionZ has joined the channel
[12:32] dominictarr has joined the channel
[12:32] eaton has joined the channel
[12:32] eaton has joined the channel
[12:33] nyholt has joined the channel
[12:33] adambeynon has joined the channel
[12:33] Throlkim has joined the channel
[12:34] mange has joined the channel
[12:40] mike5w3c has joined the channel
[12:42] ngs has joined the channel
[12:42] knirhs has joined the channel
[12:42] knirhs has left the channel
[12:43] p0ns has joined the channel
[12:45] Qix_ has joined the channel
[12:46] wav1 has joined the channel
[12:47] mickaelz has joined the channel
[12:48] fly-away has joined the channel
[12:48] eee_c has joined the channel
[12:50] matyr has joined the channel
[12:53] matyr_ has joined the channel
[12:54] seivan has joined the channel
[12:57] Egbert9e9 has joined the channel
[12:58] Murugaratham: any1 used socket.io for real time notifications?
[12:59] lukegalea has joined the channel
[13:00] bergie: Murugaratham: I'm using it for synchronizing RDFa between server and multiple clients... not that different from notifications
[13:00] bergie: see https://github.com/bergie/ViePalsu
[13:00] PyroPeter has joined the channel
[13:00] Murugaratham: oh i shall take a look
[13:01] DoNaLd`: is possible install nodejs on freebsd ?
[13:01] mhausenblas has joined the channel
[13:03] Murugaratham: macos install nodejs w/o any problems
[13:04] DoNaLd`: Murugaratham: yes, but macosx is not clean freebsd
[13:05] Murugaratham: hmm u gotta try i guess
[13:05] floby: DoNaLd`: I think it does. Isn't something mentionned on the wiki ?
[13:06] DoNaLd`: nothing .. but i mean, that there is some issue with Makefile (and configure) process
[13:06] kristsk: what kind of issue?
[13:06] kristsk: old libtool maybe?
[13:06] DoNaLd`: no .. w8
[13:06] floby: you shouldn't need libtool
[13:06] floby: oh snap
[13:07] floby: In Know there are often build issues with v8
[13:07] floby: what does it say ?
[13:08] Egbert9e9 has joined the channel
[13:09] DoNaLd`: http://pastebin.com/0WHm3tEB
[13:10] FireFly|n900 has joined the channel
[13:10] Qix_ has joined the channel
[13:11] floby: this seems to be a make error indeed, but i never encountered it
[13:11] Murugaratham: bergie: wow so many lib involved
[13:12] dominictarr has joined the channel
[13:12] floby: seen this ? http://marc.info/?l=freebsd-bugs&m=103030797013321&w=2
[13:13] DoNaLd`: floby: i check it
[13:14] floby: I can see one on line 58 in node Makefile
[13:14] floby: not sure though
[13:14] floby: oh
[13:14] floby: gotta go, sorry
[13:14] DoNaLd`: np
[13:15] Vertice has joined the channel
[13:17] ftf: http://www.kraftfuttermischwerk.de/blogg/wp-content/uploads2/2011/03/kdf-wagen.jpg
[13:17] bergie: Murugaratham: yeah, that was the first-ever node.js code I wrote, so there are things that are not really necessary
[13:17] Murugaratham: at least u wrote something lol i install nodejs like yesterday
[13:18] jetienne: Murugaratham: i fixed the issue with express.
[13:18] Murugaratham: Oo
[13:18] ftf: wrong channel oO
[13:18] Murugaratham: i manage to node heat tracer lol
[13:19] jetienne: ok :)
[13:19] Murugaratham: thx :D
[13:19] matyr has joined the channel
[13:22] fisted has joined the channel
[13:24] matyr_ has joined the channel
[13:24] seivan_ has joined the channel
[13:24] Murugaratham: bergie: what version of jquery u are using
[13:25] jmar777 has joined the channel
[13:25] mlncn has joined the channel
[13:25] matyr__ has joined the channel
[13:26] bergie: Murugaratham: the one installed via npm
[13:26] mscdex: DoNaLd`: you have to use gnu make
[13:26] DoNaLd`: mscdex: bingo ! .. thnx
[13:26] Murugaratham: o
[13:27] mscdex: :)
[13:29] hwinkel has joined the channel
[13:30] Murugaratham: bergie: i have to run under root?
[13:30] jetienne: grumble the states of npm packages is yuk.
[13:31] jetienne: jsdom got a wscript, but not the usual configure/build target
[13:32] [AD]Turbo has joined the channel
[13:33] bergie: Murugaratham: depends on your node.js setup
[13:33] Murugaratham: Redis error Error: Redis connection to 127.0.0.1:6379 failed - ECONNREFUSED, Connection refused
[13:33] Murugaratham: keep getting this
[13:34] drudge: is redis running? :)
[13:36] kriszyp has joined the channel
[13:37] kristsk: try "telnet 127.0.0.1 6379"
[13:38] lukegalea has joined the channel
[13:38] boaz has joined the channel
[13:38] fumanchu182 has joined the channel
[13:40] mlncn has joined the channel
[13:41] DoNaLd`: is it problem with virtualbox ? http://pastebin.com/AT8dx8aB .. because my system (freebsd) is installed on virtualbox
[13:41] altamic has joined the channel
[13:42] [AD]Turbo has joined the channel
[13:42] mikegerwitz: DoNaLd`: node does not currently build on free/openBSD
[13:43] ftf has left the channel
[13:43] mikegerwitz: DoNaLd`: I think there's a patch somewhere for FreeBSD..haven't rtied it though. I failed to compile on OpenBSD.
[13:43] dominictarr has joined the channel
[13:43] DoNaLd`: mikegerwitz: ok .. so it is issue in nodejs .. right ?
[13:44] mikegerwitz: DoNaLd`: I think it's a v8 issue. But yeah it's not your system
[13:45] DoNaLd`: mikegerwitz: ok .. is this issue already logged ?
[13:45] paul_k_ has joined the channel
[13:45] dominictarr has joined the channel
[13:46] mikegerwitz: DoNaLd`: I've seen old bug reports on it, but it's been a while. I was going to put something in a few days ago but forgot. Wouldn't hurt to comment on an existing one or open a new one if they're closed
[13:47] DoNaLd`: mikegerwitz: ok .. so .. got i it create ?
[13:48] eventi has joined the channel
[13:48] mikegerwitz: DoNaLd`: http://code.google.com/p/v8/issues/detail?id=966
[13:48] Murugaratham: bergie: hmm i think u need some documentation :|
[13:48] AphelionZ has joined the channel
[13:49] jetheredge has joined the channel
[13:51] dnolen has joined the channel
[13:51] Murugaratham: i think it doesnt work on chrome?
[13:51] matyr has joined the channel
[13:53] incon_ has joined the channel
[13:53] aceking5 has joined the channel
[13:54] iFire has joined the channel
[13:54] lukegalea has joined the channel
[13:56] mikl has joined the channel
[13:56] lukegalea_ has joined the channel
[13:57] prof-freud has joined the channel
[13:57] aho has joined the channel
[13:58] tktiddle has joined the channel
[13:59] jlecker has joined the channel
[14:01] zzak has joined the channel
[14:01] zzak has joined the channel
[14:01] davglass has joined the channel
[14:01] davglass has left the channel
[14:02] iFire has joined the channel
[14:02] mike5w3c has joined the channel
[14:02] mariano_iglesias has joined the channel
[14:03] rawfael has joined the channel
[14:04] hij1nx has joined the channel
[14:06] iFire has joined the channel
[14:07] jimt has joined the channel
[14:08] miketaylr has joined the channel
[14:09] mike5w3c has joined the channel
[14:10] shiawuentan has joined the channel
[14:10] davidsklar has joined the channel
[14:11] abracsi: Hi guys. looking for a framework to start learning for node.js I've used some jsp and jstl before. so if there's anything remotely similar to that? anyone have any suggestions for a complete newbie?
[14:12] abracsi: oh. i'm using a mysql db too if that makes a difference
[14:12] eventi: SubStack: how does one use rowbit?
[14:13] DoNaLd`: abracsi: http://visionmedia.github.com/masteringnode/
[14:15] lukegalea_ has joined the channel
[14:15] abracsi: DoNaLd, that's prety much what i was looking for. many thanks
[14:16] postwait has joined the channel
[14:16] DoNaLd`: abracsi: you are welcome
[14:18] DoNaLd`: abracsi: http://blog.nodejitsu.com/
[14:19] colinclark has joined the channel
[14:19] DoNaLd`: abracsi: http://howtonode.org/
[14:20] DoNaLd`: abracsi: http://dailyjs.com/
[14:21] malkomalko has joined the channel
[14:21] swistak has joined the channel
[14:21] jetienne: dailyjs is good
[14:22] abracsi: ok. see you in about 2 months after i've read all this stuff :)
[14:22] DoNaLd`: :))
[14:22] mackry has joined the channel
[14:24] boaz has joined the channel
[14:25] amacleod has joined the channel
[14:25] Fusspawn-Phone has joined the channel
[14:25] nivoc has joined the channel
[14:29] kenbolton has joined the channel
[14:29] fumanchu182 has joined the channel
[14:30] [AD]Turbo has joined the channel
[14:31] daleharvey has joined the channel
[14:31] Qix_ has joined the channel
[14:32] daleharvey: hey, having some problems with formidable - http://pastebin.me/d66a6d92426552f737a8d2d2b4141c28
[14:33] rfay has joined the channel
[14:33] marcello3d has joined the channel
[14:34] daleharvey: ah found it, dumb mistake, api changed from where I was looking
[14:34] jdub has joined the channel
[14:35] hwinkel has joined the channel
[14:35] daleharvey: well know that its working, doesnt look like formidable is what I want, want something that will just give me the contents of a file upload without going via file
[14:36] masahiroh has joined the channel
[14:36] floby: daleharvey: you could use connect and its bodydecoder, couldn't you?
[14:36] Fusspawn-Phone: Why the need to not use a file? Save it out to /tmp parse delete.
[14:37] trotter has joined the channel
[14:37] ajashton has joined the channel
[14:37] daleharvey: its pretty performance sensitive
[14:38] daleharvey: floby: possibly, I was looking for names to look at, not particularly familiar with node libraries
[14:38] daleharvey: so cheers
[14:38] nonnikcam has joined the channel
[14:39] seivan has joined the channel
[14:40] timmywil has joined the channel
[14:44] Fullmoon has joined the channel
[14:44] mlncn has joined the channel
[14:46] eyesUnclouded has joined the channel
[14:46] ajashton has left the channel
[14:48] zemanel_ has joined the channel
[14:49] Fusspawn-Phone has joined the channel
[14:49] kriszyp has joined the channel
[14:50] qwp has joined the channel
[14:50] Scala has joined the channel
[14:51] Scala: I have a general question: What makes javascript so good for a server-side language?
[14:51] qwp: hi why is node.js so cool?
[14:51] Scala: Closures are nice, but they can be done just as easily in many other languages
[14:51] chapel: Why not try it out
[14:51] chapel: and come back and tell us
[14:52] AndChat- has joined the channel
[14:52] Scala: chapel: I've been reading about it quite a bit already, is the event loop what makes it so well-suited?
[14:52] ajashton has joined the channel
[14:53] chapel: For evented non-blocking i/o Javascript was a natural fit because it didn't have an existing library of blocking code to deal with that all the other existing server-side languages have
[14:53] mikegerwitz: Scala: Javascript promotes an asynchronous development style by nature
[14:53] eevin has joined the channel
[14:53] mikegerwitz: Scala: And it's easy to share code between the server and client :)
[14:53] eee_c has joined the channel
[14:53] Scala: mikegerwitz: I've heard that, I guess I'm looking for the meat behind that statement though. What makes it so good for async devel?
[14:53] mikegerwitz: Scala: Do you use JS on the client?
[14:54] chapel: not to mention as mikegerwitz said, Javascript is already asynchronous by nature, so combining that and wanting an evented non-blocking i/o, Javascript just made sense
[14:54] Scala: mikegerwitz: Sure
[14:54] chapel: mikegerwitz: sharing code is a misnomer, most people don't actually share code
[14:54] chapel: but not having to context switch is nice
[14:54] mikegerwitz: Scala: Most of JS code on the client is done through events; hooking stuff
[14:54] chapel: and having the same interface and capabilities (for the most part) is key
[14:54] bradleymeck has joined the channel
[14:55] mikegerwitz: Scala: That practice of callbacks, etc translates very well into server-side development for async
[14:55] mikegerwitz: chapel: That's actually the reason I switched to node
[14:55] Scala: mikegerwitz: Well that can be done relatively easily in many other languages
[14:55] marcello3d has joined the channel
[14:55] chapel: Scala: a lot of things can be done in other languages
[14:55] chapel: what is your point?
[14:55] mikegerwitz: Scala: The argument for using JS isn't that it can do what other languages can't :)
[14:55] chapel: you can do anything in assembly
[14:56] mikegerwitz: Scala: It's just another option
[14:56] chapel: its faster than everything
[14:56] chapel: but you dont see everyone using it...
[14:56] marcello3d: JS compiles faster than Scala
[14:56] Scala: chapel: Well that's a bit of an exaggerated example
[14:56] nook has joined the channel
[14:57] mikegerwitz: Scala: JS itself is a primitive language (though highly flexible) and node is still under heavy development. Most languages have strong benefits over node. But node is very fast.
[14:57] Aikar: ok
[14:57] Aikar: so i had a cool idea last night
[14:57] marcello3d: mac os x uses an event loop
[14:57] marcello3d: for cocoa
[14:57] chapel: Not really directed towards you Scala, but I find it annoying how people question node.js' validity as a server-side 'framework' because X language can do that already, or X language has Y feature.
[14:57] marcello3d: same with iphone
[14:57] mikegerwitz: Scala: (for serving web pages on a single thread, that is)
[14:57] Aikar: want to know if someones already started on it, and if not if someone more experienced than i in C++ bindings is interested
[14:57] mikegerwitz: Scala: (or any service)
[14:58] marcello3d: node.js is great because of the community, mainly, imo
[14:58] eventi: marcello3d++
[14:58] marcello3d: I've used plenty of server-side javascript engines before, but they haven't had the same environment
[14:58] bentruyman has joined the channel
[14:58] mikegerwitz: marcello3d: agreed :)
[14:58] chapel: Node.js is not suited for everything, or everybody, but it is great in it's own ways, it has a great community, and the people actively developing it and the modules are awesome
[14:58] Aikar: chromium embedded framework bindings - the ability to render a page from node w/o any controls to use for building GUI apps and have a connection between the browser DOM and Node so say a button can call back into node. to use as a full gui app development framework
[14:58] eventi: this IRC channel has less douchebags than most, too :)
[14:59] Scala: chapel: I understand. I'm mostly just making the point that the language syntax isn't necessarily what attracts everybody, surely there's something special that is making everyone flock towards it
[14:59] marcello3d: eventi: I haven't seen any, besides myself of course ;D
[14:59] eventi: ACTION is also a douchebag
[14:59] chapel: Scala: because people like javascript
[14:59] Aikar: ACTION actually prefers JS syntax
[14:59] chapel: because people like v8
[14:59] fisted has joined the channel
[14:59] marcello3d: JS syntax is 80% good
[14:59] chapel: because people like evented server frameworks
[15:00] chapel: because people like non-blocking i/o
[15:00] marcello3d: js syntax is great because there isn't much to it, but it has a few unfortunate quirks
[15:00] chapel: because ryah is a slick dude
[15:00] Aikar: Scala: people are flocking to it because its powerful and provides a unique environment for developing I/O based async servers
[15:00] marcello3d: I love the scala syntax and what its type system is capable of, but it just isn't there yet
[15:00] chapel: I fell in love with node.js because it isn't just for websites
[15:01] jtsnow has joined the channel
[15:01] chapel: (not that ruby/python/java/... are just for websites)
[15:01] Scala: Aikar: What makes it better than any other language for non-blocking I/O?
[15:01] Aikar: fuck ruby >:(
[15:01] Aikar: Scala: most other langs have synchronous libraries, Async was added on after the matter
[15:01] marcello3d: Aikar: other than closures, nothing
[15:01] wilmoore has joined the channel
[15:01] chapel: but the speed and ease of creating cool things with node.js really sold me
[15:01] Aikar: those languages were not designed with pure async in mind
[15:02] marcello3d: Aikar: you could argue neither was JS
[15:02] Aikar: "JS" was not an I/O based language
[15:02] Aikar: until server side
[15:02] Aikar: but ajax and such was async
[15:02] Aikar: actually
[15:02] marcello3d: yea, but that's the library, not the language
[15:02] Aikar: yes JS was designed to be async
[15:03] Aikar: JS = Event Loop. Event Loo = requires async
[15:03] chapel: this has been rehashed many times, ryah has said it many times, other people as well, it boils down to the fact that Javascript doesn't have an entrenched server-side syntax or way of doing things, has no existing library of blocking code to deal with, it was easy to ryah to come in and create a way to do it without having to step over other peoples code
[15:03] Aikar: in the case of python, an event loop was added on top of it, but there was already blocking libraries
[15:04] marcello3d: chapel++
[15:04] Aikar: JS was designed around an event loop
[15:04] marcello3d: event loop doesn't require async, obviously :)
[15:04] Aikar: yes it does
[15:04] marcello3d: but it suggests it
[15:04] Aikar: unless you want the event loop stalld
[15:04] marcello3d: right
[15:04] Aikar: which = broken
[15:04] c4milo has joined the channel
[15:04] Nohryb has joined the channel
[15:05] Aikar: how do you expect a setInterval(fn, 50) to work if the thread is blocked for 10 seconds? ;)
[15:05] marcello3d: which is unfortunate, because it makes it hard to do things computational
[15:05] chapel: not really
[15:05] chapel: its easy to use a separate process for long computations
[15:05] aphelion has joined the channel
[15:05] marcello3d: if I want to write a ray tracer, I now have to add extra logic to split up the work
[15:05] chapel: node.js doesn't need coroutines as many people say it does
[15:06] Aikar: if you're writing a ray tracer and other heavy computational work, you need to stop trying to make a dead simple app
[15:06] chapel: but using rpc and separate processes, it really isn't that hard to handle long running code
[15:06] marcello3d: webworkers would probably be the solution, but they're relatively new
[15:06] Aikar: serious work requires serious implementations
[15:06] bingomanatee has joined the channel
[15:06] Aikar: webworkers is a concept
[15:06] chapel: maybe someone needs to create a library of sorts that just handles that stuff with a simple api syntax
[15:06] Aikar: it doesnt matter how old it is
[15:06] pgte has joined the channel
[15:06] marcello3d: practically speaking, it does :)
[15:06] Aikar: you spawn a process, you send it data of instructions on some work to do
[15:07] eventi: ACTION joins #whynode.js
[15:07] Aikar: webworkers is just a specific implementation on that 'instruction sending'
[15:07] chapel: marcello3d: you don't have to use webworkers specifically, you could just have a dormant process that handles computational stuff on demand
[15:07] chapel: eventi: shouldn't that be ##whynode.js
[15:07] chapel: :)
[15:07] Aikar: and that process can be a C++ process using threads
[15:07] softdrink has joined the channel
[15:08] eventi: feh - rules...
[15:08] chapel: technically under the hood, node.js uses threads
[15:08] eventi: I'm siting in #charliesheen too
[15:08] Aikar: yeah, for I/O
[15:08] chapel: but in a dead simple way that doesn't get in the way of the programmer
[15:08] Aikar: but the actual event loop stays on 1 thread
[15:08] chapel: yeah
[15:08] chapel: just saying node.js isn't immune to threads
[15:08] Aikar: and when a thread completes it signals the event loop thread to let it know
[15:09] marcello3d: the moment I have to start using c++, node.js has failed me :)
[15:09] Aikar: but spawning processes instead of threads lets the OS itself handle the 'signaling' for you
[15:09] chapel: but the idea is to leave the multi-threaded stuff to the OS for the most part
[15:09] Aikar: marcello3d: you dont HAVE to, i said it COULD be for performance reasons ;)
[15:09] marcello3d: right
[15:09] chapel: Aikar: exactly
[15:09] prof-freud has joined the channel
[15:09] marcello3d: has anyone done node.jsjava connections?
[15:09] Aikar: you can spawn a child node process that does do heavy computational work, and you wont care if the event loop gets stalled there because you intend it to
[15:10] marcello3d: Aikar: yea, which is the same as web workers, no?
[15:10] Aikar: again, webworkers is a specific implementation
[15:10] chapel: I think someone did a coroutine like module for node.js, that basically spun off another process to handle something like that
[15:10] Aikar: its built on the concept of 'spawning a child process'
[15:10] Fusspawn-Phone has joined the channel
[15:10] Aikar: spawning a child process != WebWorkers
[15:10] marcello3d: spawning a separate process is a lot heavier weight than spawning a thread or even a lightweight thread pool
[15:10] NuckingFuts has joined the channel
[15:10] Aikar: Web Workers == Spawning a child process
[15:11] marcello3d: as far as performance is concerned
[15:11] Aikar: yep, but your gonna have to write C++ code to make thread bindings and signaling handlers ;)
[15:11] Aikar: or you can make a 'child process pool'
[15:11] chapel: marcello3d: it is logically more heavy, requiring more of the programmer to keep it sane
[15:11] marcello3d: right. my point is it's a weak point of node.js currently
[15:11] matyr_ has joined the channel
[15:11] chapel: it isn't a weak point
[15:11] Aikar: so you want node to implement threads? nope
[15:12] Aikar: not gonna happen
[15:12] chapel: it is a design decision
[15:12] marcello3d: no, but there should be a good module for handling that
[15:12] chapel: modules are fine
[15:12] Aikar: so write one :P
[15:12] chapel: and there are some
[15:12] Aikar: threads are dangerous to inexperienced programmers
[15:12] Aikar: processes are safe
[15:12] asdfsafdsa: but node is already async why does it need threads?
[15:12] asdfsafdsa: why would it
[15:12] chapel: but to say that node.js core needs threads or coroutines or x thread based tech is not going to happen imo
[15:12] marcello3d: asdfsafdsa: computation
[15:12] Aikar: asdfsafdsa: talking bout computational work
[15:13] marcello3d: chapel: I never said that
[15:13] chapel: marcello3d: wasn't just at you, just a general trend
[15:13] rfay_ has joined the channel
[15:13] chapel: people keep saying node.js is bad because it doesn't have those
[15:13] Aikar: if latency of spawning a process a critical aspect, simply write a process pool. and make sure that there is enough in the pool to handle work load that ones always avail
[15:13] marcello3d: I'm merely pointing out the drawback of single-threaded event based loop systems
[15:13] chapel: marcello3d: it is a drawback sure
[15:13] marcello3d: Aikar: yep, that would be a solution
[15:13] chapel: but there are plenty of ways to handle it
[15:14] Aikar: its a 'known and desired' drawback
[15:14] chapel: and the solutions that use processes are much easier to handle, and leverage the power of the OS
[15:14] Aikar: the idea is to develop high performing apps w/o the worry of thread safety or etc. w/o threads in the picture. stuff "just works"
[15:15] hornairs has joined the channel
[15:16] davidwalsh has joined the channel
[15:16] lessthanzero has joined the channel
[15:16] Nohryb__ has joined the channel
[15:17] dylang has joined the channel
[15:17] Aikar: so
[15:17] Aikar: back to what i was asking before
[15:17] thecarlhall has joined the channel
[15:18] marcello3d: any suggested modules for doing that process pooling?
[15:18] Aikar: its a trivial concept
[15:19] Nohryb__: The problem with workers/child processes is that you've got to pass the data by copy, again and again, back and forth, data that would have just been there accessible to a new thread.
[15:19] marcello3d: with threads not processes
[15:19] yhahn has joined the channel
[15:19] marcello3d: Nohryb__: there are techniques to optimize that
[15:19] Nohryb__: Say, you complete 3d model, the one you want to ray-trace
[15:19] Aikar: Nohryb__: well for 'high computational work' the computational work better be the heavy part of the process
[15:19] marcello3d: message passing makes thread safety much easier
[15:19] Aikar: so copying data over should be light
[15:20] marcello3d: and makes it easier to scale
[15:20] marcello3d: across multiple cpus/cores/clusters
[15:20] chapel: exactly
[15:20] chapel: using processes instead of threads
[15:20] chapel: you dont even have to use the same machine
[15:20] marcello3d: chapel: I think it's better to not make that distinction
[15:21] chapel: you could have thousands of machines all handling the load, with little overhead compared to doing threads
[15:21] chapel: well there is no need
[15:21] marcello3d: it's better to make the distinction between shared memory and message passing
[15:21] chapel: it works either way
[15:21] chapel: sure
[15:21] Aikar: really
[15:21] marcello3d: doesn't matter if it's a process or a thread
[15:21] Aikar: the bottom line boils down to.....
[15:21] marcello3d: right tool for the job? :)
[15:21] Aikar: stop trying to think in the ways you did in other languages. think different, think outside of the box. learn something new with node.js
[15:21] chapel: Aikar++
[15:22] chapel: where is v8
[15:22] Aikar: dead :(
[15:22] chapel: who killed it?
[15:22] Aikar: dunno
[15:22] chapel: :(
[15:22] Nohryb__: but if it's speed what you're after, threads are better than child processes, just because the data is there *shared* (just protect the accesses with a mutex) and there's no need to copy
[15:23] dominictarr has joined the channel
[15:23] AndChat| has joined the channel
[15:23] Aikar: chromium embedded framework bindings - Thoughts on the ideas on bindings to give the ability to render a page from node w/o any controls to use for building GUI apps and have a connection between the browser DOM and Node so say a button can call back into node. to use as a full gui app development framework
[15:23] Nohryb__: ...copy again and again, back and forth
[15:24] chapel: Aikar: I would use it if you made it
[15:24] Aikar: Nohryb__: its best to do some research into what exactly your project is going to be doing, and use the best tool for the job. if copying data back and forth is too much of an issue, then that portion shouldnt be in node
[15:24] Aikar: chapel: yeah its an interesting concept. but my C++ foo on linux == null ;(
[15:24] Aikar: ive only done windows DLL development
[15:24] throughnothing has joined the channel
[15:24] chapel: I want to be able to make full gui apps using node
[15:24] chapel: but I don't know enough to contribute there to make it happen
[15:25] marcello3d: I'm out
[15:25] marcello3d: webapps are gui apps :)
[15:25] Nohryb__: the key idea is to separate the mutable unshared data from the immutable shared data. Do that well and threads become what they should be: not an abstraction violator from hell, but a scaling device that can be composed with existing abstractions.
[15:25] marcello3d: or use mozilla chromeless + xul :)
[15:26] MikhX has joined the channel
[15:26] Aikar: var window = cef.createBrowser('file://app/app.html'); window.browser.window.button_login_onClick = function() { }; then in html Login
[15:26] jetienne: Aikar: and the function() will be run in node ?
[15:26] Aikar: yep
[15:26] Nohryb___ has joined the channel
[15:26] Aikar: i did a li lresearch last night, looks fully doable
[15:27] Aikar: just need someone to write the CEF bindings
[15:27] mike5w3c has joined the channel
[15:27] jetienne: Aikar: i got a small thing close ot that. i toyed with it
[15:27] chapel: not a big fan of onclick though
[15:27] jetienne: Aikar: what is cef ?
[15:27] Aikar: chromium embedded framework
[15:27] Aikar: chapel: i just wrote that syntax style quickly for POC :P
[15:27] chapel: yeah
[15:27] jetienne: Aikar: url ?
[15:27] chapel: I know
[15:27] chapel: just saying
[15:28] Aikar: http://code.google.com/p/chromiumembedded/
[15:28] chapel: that would be pretty awesome though Aikar
[15:28] bradleymeck: Nohryb__ the speed argument of threads being faster than raw shared memory between processes (mmap) has been debated for years, and even then the arguments against shared memory due to wasted locking is pretty strong (coroutines > threads)
[15:28] darrend has joined the channel
[15:28] jetienne: Aikar: suppose you got that running. how would you use i t?
[15:29] Aikar: well its up to the dev on how creative they want to get.
[15:29] Aikar: build desktop apps with the power of node
[15:29] Aikar: a web app wont have direct access to node features
[15:29] jetienne: just write webapp ?
[15:29] jetienne: ah ok
[15:29] Aikar: file syste maccess etc
[15:30] Aikar: raw sockets
[15:30] jetienne: so what you are looking for is more about giving a node api in the browser
[15:30] Aikar: well, more so using a browser as a layout viewport
[15:30] jetienne: it is already :)
[15:30] Aikar: i mean to node
[15:30] Aikar: you could binding Qt or etc to node
[15:30] bradleymeck: we need to make a node-canvas wrapper for things so it can be shared. that and a full on binary bundler
[15:30] Aikar: and do similar
[15:30] Aikar: but i figure a normal browser viewport would just make more sense
[15:31] jetienne: bradleymeck: there is one no ? im sure i saw on
[15:31] jetienne: e
[15:31] bradleymeck: one that gives us a frame?
[15:31] nkohari has joined the channel
[15:31] jetienne: http://blog.learnboost.com/blog/introducing-node-canvas-server-side-html5-canvas-api/
[15:32] Aikar: being able to build desktop apps in node would make node on windows least have some purpose then :P
[15:32] chapel: jetienne: webapps are versatile, but sometimes you want a fully integrated system app
[15:32] bradleymeck: yea, but i want a frame w/ close/minimize/etc buttons
[15:32] dominictarr has joined the channel
[15:32] eb4890 has joined the channel
[15:32] bradleymeck: not just dumping pngs
[15:32] chapel: so Aikar
[15:32] chapel: I think you got your answer
[15:32] chapel: people want it
[15:32] Aikar: lol
[15:32] chapel: find someone to do cef
[15:32] jetienne: bradleymeck: you want to display a canvas on the screen ?
[15:33] jetienne: chapel: agreed
[15:33] mavin|gone has joined the channel
[15:33] bradleymeck: sure, i could share the display and just do feature detection and swap out stuff accordingly
[15:33] Aikar: i already got so much on my belt that learning more C++ could be a long task, would be nice if someone with C++ node binding experience would build the CEF binding
[15:33] jetienne: bradleymeck: why not run in a browser ?
[15:33] davidwalsh has joined the channel
[15:34] piscisaureus_ has joined the channel
[15:34] Aikar: a web app has to route everything over a socket to interface with node layer and requires hosting a server for it. what im talking about is the USER runs node and the web page has direct access into nodes system.
[15:34] Aikar: exposing require to the browser window would be a first step
[15:34] Nohryb___: bradleymeck: it's ok to pass messages between processes, the problem is when in addition to messages you've got to pass the *data* into the/as a message too. with mmap you can pass data inter-process quickly, but you just don't need mmap to pass data between threads...
[15:35] Aikar: how come Nohryb___'s messages come out weird >_>
[15:35] bradleymeck: as stated before I generally web apps dont have access to a whole lot of apis that I use (fs,server sockets,etc)
[15:35] bradleymeck: ^jetienne
[15:35] Fusspawn-Phone has joined the channel
[15:36] bwinton has joined the channel
[15:36] Aikar: actually its prolly easier to just expose require to the browser window then do all the node calls in the browsers event loop
[15:36] broofa has joined the channel
[15:36] Aikar: but that may not work hmm
[15:36] chapel: Aikar: broserify
[15:36] jetienne: bradleymeck: do you a node to handle all this, and only push the canvas to the browser ?
[15:36] chapel: browserify
[15:36] chapel: hmm
[15:36] bradleymeck: jetienne could, but seems an over abstraction to me
[15:36] Aikar: so $('#div').html(fs.readFileSync('/etc/passwd')); :)
[15:37] chapel: maybe jetienne is saying to have the node process be local, but you interface with it through a browser
[15:37] jetienne: yep just make a normal website
[15:37] Aikar: thats not a nacceptable user experience
[15:37] chapel: sure Aikar and I agree
[15:37] Aikar: run an app then have to go to browser to use it, then how do they close it? node app is still running
[15:37] chapel: but I think that is what he is saying
[15:37] aways|bnc: ACTION Bye all
[15:37] chapel: not to run a hosted remote server webapp
[15:37] jetienne: Aikar: all that is solvable
[15:38] Aikar: and you still have to pipe everything over a socket
[15:38] Aikar: what im suggesting is to directly expose node to the browser.
[15:38] jetienne: do a plugin :)
[15:38] Aikar: but browser == a chromium embedded framework window
[15:38] bradleymeck: im more concerned with people grabbing access to my APIs over browser id rather have no external connections for some things
[15:38] mraleph has joined the channel
[15:38] Aikar: the user wont really even know its a browser
[15:38] Aikar: they run app, a window opens, they use it
[15:38] chapel: jetienne: the benefit of a native client bundled with the node process is that you have more control over the process, it is more of a real application and not two disparate things
[15:38] jetheredge has joined the channel
[15:38] Aikar: just the developer writes the UI in html css js
[15:39] Aikar: instead of C++ with Qt or .net
[15:39] mlncn has joined the channel
[15:39] chapel: exactly
[15:39] chapel: I am all for this
[15:39] Aikar: jetienne: sure both ways work, im saying my method is better for the developer and the user ;)
[15:39] chapel: could also make it a really robust ssb app
[15:39] bradleymeck: Nohryb___ you might not need mmap, but you still need locks, lots and lots of locks. You might be interested in the fibres impl for v8 thats around somewhere
[15:39] jetienne: Aikar: i understand :)
[15:39] strmpnk has joined the channel
[15:40] matschaffer has joined the channel
[15:40] thalll has joined the channel
[15:40] fangel has joined the channel
[15:41] bradleymeck: are there docs for CEF?
[15:42] L4rd0 has joined the channel
[15:42] bradleymeck: bleh just read the.h files then
[15:44] xandrews has joined the channel
[15:45] ceej has joined the channel
[15:45] jmar777: quick poll: exports.ConstructorName = Constructor, or module.exports = Constructor, or completely depends?
[15:45] FireFly|n900 has joined the channel
[15:46] romainhuet has joined the channel
[15:46] kanja1 has joined the channel
[15:46] unomi has joined the channel
[15:46] mlncn has joined the channel
[15:48] FireFly has joined the channel
[15:48] bradleymeck: module.exports = exports.ConstructorName = Constructor
[15:48] Yuffster has joined the channel
[15:50] aheckmann has joined the channel
[15:51] ncb000gt: jmar777: typically it depends
[15:52] BillyBreen has joined the channel
[15:53] ncb000gt: I have a few different modules that seemed like it would be good to deliberately split things out with exports = module.exports; exports.Cname = Cname; exports.other = other etc..
[15:53] ncb000gt: but then have had the opposite as well
[15:53] malkomalko: damn, I'm having some serious ass express problems heh
[15:54] prof-freud has joined the channel
[15:55] jmar777: ncb000gt: thanks
[15:55] altamic has joined the channel
[15:56] jmar777: 1 out of 1 says it depends lol. another statistically significant IRC poll...
[15:56] ncb000gt: malkomalko: such as?
[15:56] ncb000gt: jmar777: lol 1 out of 2
[15:56] ncb000gt: bradleymeck: replied too
[15:56] ncb000gt: :)
[15:56] Nohryb___: bradleymeck: No locks, no, just null in thread A any refs to the data you're passing to thread B, then you won't need no locks nor copies, that's the cheapest/fastest way there is to pass data.
[15:56] warz has joined the channel
[15:56] nciagra has joined the channel
[15:57] ncb000gt: so it's doubly more statistically significant, even if it means 50%
[15:57] ryanfitz has joined the channel
[15:57] bradleymeck: Nohryb___ true but you lose any real adv over mmap doing that, either way ry has stated he has no intention of shared memory for now, bigger concerns and all
[15:57] tjholowaychuk has joined the channel
[15:57] malkomalko: ncb000gt: upgrades to node 0.4.1 and express 2.0.x/connect 1.0.x.. seems like connect-redis don't work for sessions, I can only get memory store working, that's my first major problem
[15:58] isaacs has joined the channel
[15:58] ncb000gt: malkomalko: tjholowaychuk is in the process of updating all of that stuff
[15:58] ncb000gt: you can't expect old modules to work on newer code...it might, but don't be surprised if it doesn'
[15:58] ncb000gt: t
[15:58] intrect has joined the channel
[15:59] tjholowaychuk: malkomalko: connect-redis 1.0 should work
[15:59] Evet has joined the channel
[15:59] malkomalko: connect-redis was suppose to work
[15:59] malkomalko: I don't just expect old modules to work :)
[15:59] rawfael has left the channel
[15:59] tjholowaychuk: malkomalko: it works for me :s
[15:59] ncb000gt: malkomalko: hmm
[15:59] ncb000gt: hooray, tjholowaychuk can take this one :)
[16:00] malkomalko: tj, have my server.js cluster, the cluster requires the app ... cluster('app').. and inside app I have my connect-redis..
[16:00] guybrush: tjholowaychuk: the stylus-example in express is broken
[16:00] guybrush: for me at least
[16:00] malkomalko: it looks like redis has a connection, but nothing is being inserted
[16:00] malkomalko: oh well, I'll play around with it some more I guess
[16:00] sleeplessinc has joined the channel
[16:01] tjholowaychuk: malkomalko: well try it without cluster first, make sure that works
[16:01] ncb000gt: malkomalko: are you sure you're using the latest version of connect-redis?
[16:01] malkomalko: also, another quick question.. I use to have a global object to store static images/messages for us in jade templates, but after upgrading to the new jade it doesn't seem to honor that, did that change at some point?
[16:01] tjholowaychuk: guybrush: hmm :s works for me too :(
[16:01] tjholowaychuk: wtf
[16:01] malkomalko: yes, I've upgraded all my modules from github
[16:01] guybrush: tjholowaychuk: kk will check it out
[16:01] malkomalko: hmm
[16:03] anno^da has joined the channel
[16:04] erabuj has joined the channel
[16:05] stepheneb has joined the channel
[16:05] luke` has joined the channel
[16:06] qwp: why is eventing so beneficial?
[16:06] isaacs: tjholowaychuk: hey
[16:06] tjholowaychuk: hey
[16:06] markc has joined the channel
[16:06] isaacs: tjholowaychuk: so, i've been thinking on this whole "markdown" cluster
[16:06] luke`_ has joined the channel
[16:06] weepy has joined the channel
[16:07] isaacs: tjholowaychuk: i think, most people don't want a "markdown" that is a "sensible parser" that can generate a tree and all that crap.
[16:07] pyrotechnick has joined the channel
[16:07] isaacs: they want something that is functionally equivalent to Mark Gruber's Markdown.pl, and Github's README.md parsing
[16:07] bradleymeck: qwp: use of resources, logical organization is action/reaction rather than polling
[16:07] tjholowaychuk: i just thought it was weird that html was not supported
[16:07] ikarosdaedalos has joined the channel
[16:08] tjholowaychuk: not sure what else is missing
[16:08] isaacs: yeah
[16:08] isaacs: so... i did this: https://github.com/isaacs/github-flavored-markdown#readme
[16:08] isaacs: tjholowaychuk: that's the markdown that github uses, 1:1 match.
[16:08] qwp: bradleymeck: thanks
[16:08] weepy: isaacs: what are you guys discussing ?
[16:08] isaacs: tjholowaychuk: you can do gfm.parse(someCode, "visionmedia/express") to get sha and issue number links even
[16:09] hwinkel has joined the channel
[16:09] paulrobinson has joined the channel
[16:09] qwp: bradleymeck: but isnt it just conceptual abstaction with hidden polling?
[16:10] tjholowaychuk: woot
[16:10] dewey_ has joined the channel
[16:10] Evet has joined the channel
[16:10] bradleymeck: qwp: not always, especially not true on network communications
[16:10] Evet has joined the channel
[16:10] isaacs: tjholowaychuk: to be fair, i didn't write it. i just wrapped a package.json around their showdown port.
[16:10] weepy: anyone know why => I do res.clearCookie(key) upon a page refresh which seems to work …. but document.cookie still contains the key ?
[16:11] dewey_: does someone extracted the flash class for the websocket transfer of socket.io?
[16:11] qwp: bradleymeck: are you using node.js just for fun or real production?
[16:11] isaacs: all glory to John Fraser
[16:11] dewey_: want to connect from a flash project to socket.io server
[16:11] bradleymeck: qwp i use it for personal things now, used it a bit in production at last job
[16:11] bradleymeck: not as a web server tho
[16:12] qwp: so currently its just fun to raise, like a puppy?
[16:12] isaacs: qwp: there are some production uses. we use it in several parts of the Joyent tech stach
[16:12] isaacs: *stack
[16:12] bradleymeck: mmm? not sure I understand, but I enjoy it for scripting various tasks over other things
[16:13] isaacs: as a webserver, amqp server/client, various little agent daemons, etc.
[16:13] weepy: anyone understand cookies ?
[16:13] bradleymeck: yub, but not how express does em
[16:13] isaacs: weepy: what cookie util are you using? jedschmidt's "Cookies" worked for me pretty reliably
[16:13] ikarosdaedalos has left the channel
[16:13] weepy: express's
[16:14] isaacs: weepy: maybe bug tjholowaychuk
[16:14] tjholowaychuk: weepy? what is to not understand
[16:14] weepy: i do res.clearCookie()
[16:14] bradleymeck: dewey_ you can just take out the .SWF in socket.io's repo
[16:14] weepy: seems to work
[16:14] weepy: on the server
[16:14] weepy: on the client … it's still there in document.cookie
[16:14] Metapony has joined the channel
[16:14] briznad has joined the channel
[16:15] weepy: so i'll do res.clearCookie(fbKey); res.redirect("/")
[16:15] tjholowaychuk: weepy: hmm ill check it out
[16:15] bradleymeck: anyone know of a good binary file embedder (link time)?
[16:16] pyrony has joined the channel
[16:16] weepy: tjholowaychuk: it sorta seems to work (i.e. after the refresh the inbound requests don't have the cookie). But it's still there in the client and if I do Ctrl+R -> the cookie gets sent back …
[16:18] darrend: isaacs: whats the main use case for your gfm wrapper?
[16:18] isaacs: darrend: http://izs.no.de/isaacs/npm
[16:19] Nohryb___: bradleymeck: the plus of threads is that they share the process' memory space, a big plus over separate processes (no need to mmap). And as long as the chunk of memory that contains the data that you'd want to "pass" from thread A to thread B is never used by more than a single thread at a time (mutual exclusion), it's not really being "shared", and exhibits none of the evil issues of threads wrt. shared memory. Say, memory sha
[16:19] Nohryb___: space but not shared in time. And you don't need locks to achieve that. Yeah, I know ry prefers separate processes + IPC.
[16:20] Chunk has left the channel
[16:21] qwp: thx
[16:21] bradleymeck: Nohryb___ the downside of threads is that every library must be threadsafe and no-fail compliant, and you need to want full fail on abort()/error/etc.
[16:21] piscisaureus has joined the channel
[16:22] bradleymeck: ryah, any chance we could get require to work off file descriptors (like something from pipe())?
[16:22] qwp: so its not a web thing?
[16:22] qwp: more general
[16:22] bradleymeck: node.js is not just web
[16:22] dthompson1 has joined the channel
[16:23] darrend: thanks isaac looks interesting
[16:23] isaacs: bradleymeck: that'd be tricky
[16:23] ryah: bradleymeck: mm.. probably not
[16:23] paulrobinson has left the channel
[16:23] isaacs: bradleymeck: what's the use-case?
[16:23] qwp: is it better suited for web than other things?
[16:23] EyePulp has joined the channel
[16:23] bradleymeck: isaacs yea... but it would make a binary bundler pretty easy
[16:24] qwp: is it better suited for web than for other things?
[16:24] bradleymeck: err, easier*
[16:24] isaacs: qwp: nodejs is a networking toolkit. running a http server or http client is a special case of "writing a fast networking program"
[16:24] mike5w3c_ has joined the channel
[16:24] qwp: thanks
[16:24] isaacs: qwp: it's also got filesystem stuff, dns stuff, udp stuff, raw tcp, etc.
[16:24] isaacs: qwp: it's for internet, not just web :)
[16:25] qwp: so its a networking api?
[16:25] isaacs: qwp: yeah, mostly
[16:25] qwp: ah ok
[16:25] isaacs: qwp: but with the child_process and fs utils, it also has a lot of general purpose functionality. of course, if you're going to write a shell script, and don't care about speed, and never do any networking, bash is probably a better choice.
[16:25] mariano_iglesias has left the channel
[16:26] isaacs: qwp: node is for managing streams of data
[16:26] qwp: why would bash be better sometimes?
[16:26] qwp: ok that sounds general yeah
[16:26] isaacs: qwp: if you need to manage a lot of files and child processes, bash has syntax specifically for that purpose.
[16:26] bradleymeck: swhat it was built for, supported tons of places out of box etc
[16:26] qwp: ok
[16:27] isaacs: but bash is not a very good language for string parsing/json/http/etc.
[16:27] mlncn has joined the channel
[16:27] qwp: i thought of it as php rather than perl
[16:27] darrend: can node poll / select on a fifo?
[16:27] isaacs: i see
[16:27] isaacs: qwp: node is definitely more like perl than it is like php.
[16:27] weepy: Node: the new PHP
[16:27] qwp: yeah i see
[16:28] mikegerwitz: weepy: ._.
[16:28] squeeks_: more like Perl with AE than anything else.
[16:28] isaacs: though, php was called the new perl for a while..
[16:28] isaacs: squeeks_: what's AE?
[16:28] qwp: whts AE?
[16:28] squeeks_: AnyEvent.
[16:28] isaacs: i see
[16:28] qwp: whats AnyEvent?
[16:28] weepy: The new VB
[16:29] squeeks_: qwp: Perl isn't async like Javascript. AnyEvent gives it the asynchronicity.
[16:29] isaacs: ack!
[16:29] aelaguiz_ has joined the channel
[16:29] isaacs: ACTION grew up on vb
[16:29] isaacs: and qbasic
[16:29] qwp: wht does it mean if a lang is async precisely?
[16:29] weepy: heh - sorry iscs
[16:29] mikegerwitz: isaacs: haha, qbasic days were some of my favorite
[16:29] qwp: isaacs: dont worry
[16:29] isaacs: qwp: well, js has a lot of features that pertain specifically to event-driven programs, becasue that's how web browsers work
[16:30] isaacs: