[00:01] tjholowaychuk has joined the channel [00:02] bburky: I wrote some code a while back that scrapes an html table from a url into an array of JSON objects with keys from the header of the html table. Would something like that be useful to other people? [00:02] daveyjoe: jbpros, bingomantee: Only problem is that I don't know how difficult it would be to integrate with auth mechanisms (e.g. OAuth). [00:03] jbpros: bburky: Certainly! [00:03] jbpros: daveyjoe: No idea, sorry. [00:03] daveyjoe: jbpros: Ok, thanks. [00:05] sveimac has joined the channel [00:05] twoism has joined the channel [00:05] MattDiPasquale has joined the channel [00:05] echosystm: are there any good MVC frameworks for node? [00:06] admc has joined the channel [00:07] x_or: echosystm: Check out connect. Or geddy. Both are good. [00:07] maix: is it possible to do something like [a,b] = [1,2] in node? [00:07] tjholowaychuk: echosystm: connect is like ruby's rack [00:07] maix: it works in firebug, but not in node, why? [00:07] tjholowaychuk: not really any mvc stuff [00:07] gkatsev: maix: that is only available in firefox [00:07] maix: hrm [00:08] maix: another way to do that? [00:08] gkatsev: var arr = [1,2]; var a = arr[0], b = arr[1]; [00:08] gkatsev: we all wish js had pattern matching built-in and everywhere but it doesn't [00:09] maix: yes sure that always works but is ugly :( [00:09] gkatsev: yes, pattern matching is awesome but not available in javascript [00:10] gkatsev: even the pattern matching in mozilla is very limited [00:10] maix: yes, i also think js has too few syntax elements in general [00:10] gkatsev: what other syntax elements are you missing? [00:10] pyrotechnick: #coffeescript [00:10] pyrotechnick: when you see the light, we'll be in that room [00:10] pyrotechnick: ready to help [00:10] gkatsev: there are several DSLs for javascript. [00:10] necromancer has joined the channel [00:10] gkatsev: pyrotechnick: haha [00:11] pyrotechnick: most fail [00:11] pyrotechnick: coffeescript is comprised of nothing but pure win [00:11] gkatsev: woo, 0.3.4 is out [00:11] pyrotechnick: rly? [00:11] pyrotechnick: link [00:11] necromancer: more like pure beard [00:11] gkatsev: email [00:11] gkatsev: nodejs mailing list [00:11] gkatsev: nodejs.org/docs/v0.3.4 [00:12] necromancer: haha [00:12] pyrotechnick: http://nodejs.org/docs/v0.3.4/changelog.html [00:12] pyrotechnick: • Primordal mingw build (Bert Belder) [00:12] pyrotechnick: • HTTPS server [00:12] pyrotechnick: • Built in debugger 'node debug script.js' [00:12] pyrotechnick: • realpath files during module load (Mihai Călin Bazon) [00:12] pyrotechnick: • Rename net.Stream to net.Socket (existing name will continue to be supported) [00:12] pyrotechnick: • Fix process.platform [00:12] richcollins has joined the channel [00:12] necromancer: pyrotechnick: what's the performance hit on coffeescript? i assume it's slower considering it has to compile into JS, which then has to compile into bytecode, which then has to compile into machine language [00:13] pyrotechnick: necromancer: it's not a runtime thing [00:13] pyrotechnick: it's all compiled offline [00:13] necromancer: oh cool [00:13] pyrotechnick: yep [00:13] pyrotechnick: it has a node require.extension [00:13] cheney: does fs.writeFile overwrite a file's contents or append to a file? [00:13] pyrotechnick: so that u dont need to precompile [00:13] gkatsev: though, you can run the compile inline when testing, no? [00:13] pyrotechnick: cheney: depends on the file mode i think [00:13] pyrotechnick: gkatsev: yes and on the client in the browser [00:13] pyrotechnick: gkatsev: for instance my coffeescript bot [00:14] pyrotechnick: takes coffee in from irc [00:14] pyrotechnick: and compiles it [00:14] pyrotechnick: then spits out the js [00:14] gkatsev: cool [00:14] pyrotechnick: u can do it a few ways [00:14] necromancer: but wait, why do i need node to write coffeescript? [00:14] pyrotechnick: you dont [00:14] gkatsev: you don't need to node [00:14] pyrotechnick: yeah [00:14] pyrotechnick: nobody needs to use node or coffeescript [00:14] pyrotechnick: but IMHO they should [00:14] necromancer: oh is that just for the command line util so it can run JS as a binary? [00:14] necromancer: haha [00:14] jetienne has joined the channel [00:14] necromancer: yeah node is pretty cool. it looks very similar to ruby's rack which i'm a big fan of [00:15] necromancer: has anyone created a true MVC framework in JS yet? [00:15] gkatsev: backbone.js [00:15] pyrotechnick: we're talking about backbone in #coffeescript right now [00:15] pyrotechnick: if you want a little intro [00:15] pyrotechnick: necromancer: yes [00:16] gkatsev: there is also the backbone channel, #documentcloud [00:16] pyrotechnick: necromancer: look at the express examples [00:16] SubStack: necromancer: what do you mean by MVC? [00:16] pyrotechnick: thanks gkatsev i didnt know that [00:16] augustl_eee: is there some kind of "npm unlink" functionality? [00:16] pyrotechnick: yes [00:16] gkatsev: pyrotechnick: that is also the underscore.js channel. [00:16] pyrotechnick: its npm unlink [00:16] SubStack: sometimes when people say MVC they mean "rails clone" [00:16] pyrotechnick: or just npm uninstall [00:16] gkatsev: there are rails and django clones [00:16] necromancer: well i mean [00:16] necromancer: it doesn't HAVE to be a "rails clone" or a "django clone" really [00:16] augustl_eee: pyrotechnick: doh, thanks [00:16] necromancer: but anything that follows the MVC design pattern [00:17] augustl_eee: hmm. There's no npm unlink [00:17] gkatsev: there is express, there is a bunch, see http://github.com/ry/node/wiki/modules [00:17] augustl_eee: and npm uninstall doesn't remove the linked package [00:17] mpoz2 has joined the channel [00:17] pyrotechnick: u have to do [00:17] SubStack: I don't like calling libraries frameworks [00:17] pyrotechnick: npm uninstall PACKAGE@VERSION [00:18] necromancer: lol https://github.com/mauricemach/zappa [00:18] pyrotechnick: and make sure nothing depends on it [00:18] pyrotechnick: zappa is awesome... [00:18] pyrotechnick: we use it for some things [00:18] necromancer: glad to see the tradition of naming web DSLs after great italian musicians still continues in the node.js community... ;D [00:18] pyrotechnick: it's definitely not the be all and end all of app frameworks [00:18] augustl_eee: npm rm my-package seems to unlink too [00:18] pyrotechnick: it gets in the way [00:19] pyrotechinck has joined the channel [00:19] jchris has joined the channel [00:20] CIA-121: node: 03Ryan Dahl 07master * r73f53e1 10/ (AUTHORS ChangeLog doc/index.html src/node_version.h): Bump version to v0.3.4 - http://bit.ly/emEXUX [00:20] CIA-121: node: 03Ryan Dahl 07master * r318b1a0 10/ src/node_version.h : Now working on v0.3.5-pre - http://bit.ly/hAdwhY [00:20] mgutz: augustl_eee: do you have updated npm. on OS X npm uninstall package, removes link packages [00:20] gkatsev: pyrotechnick: well, there's your announcement in the channel :) [00:20] pyrotechnick: thanks CIA-121 [00:20] augustl_eee: ah, npm uninstall foo works too, indeed [00:21] pyrotechnick: CIA-121++ [00:21] v8bot: pyrotechnick has given a beer to CIA-121. CIA-121 now has 1 beers. [00:21] augustl_eee: I tried just "npm uninstall", since the link command doesn't take a package name [00:21] pyrotechnick: ryah: congrats [00:21] ryah: thanks [00:21] pyrotechnick: ryah++ [00:21] v8bot: pyrotechnick has given a beer to ryah. ryah now has 1 beers. [00:21] pyrotechnick: the bot keeps forgetting... [00:21] pyrotechnick: ryah_++ [00:21] v8bot: pyrotechnick has given a beer to ryah_. ryah_ now has 1 beers. [00:21] pyrotechnick: or you drank them all [00:21] pyrotechnick: either way [00:22] pyrotechnick: you only have 1 now [00:22] pyrotechnick: maybe the bot keeps drinking them [00:22] c4milo has joined the channel [00:22] pyrotechnick: v8: console.log(this.bloodAlchoholLevel); [00:22] v8bot: pyrotechnick: CONSOLE: [undefined], OUTPUT: undefined [00:22] pyrotechnick: mmm [00:22] pyrotechnick: he's so drunk he doesn't even know it [00:23] evanmeagher: if one is writing a wrapper around a RESTful API (ala twitter), is it a good idea to give application writers access to the access token and secret? [00:24] josephhitchens has joined the channel [00:24] evanmeagher: in particular, if you have a setup method that fetches the key pair, should the wrapper handle authentication implicitly henceforth or would there be benefits to giving the key pair to the client at that point [00:24] evanmeagher: ? [00:25] necromancer: the one thing i think coffee is cool for is replacing (typeof != "undefined") with ? [00:26] gkatsev: well, you can do that in js [00:26] gkatsev: as long as your var isn't an int [00:27] gkatsev: since zero is a falsy value [00:27] MattDiPasquale has joined the channel [00:29] coffee has joined the channel [00:29] pyrotechnick: coffee-eval: if foo? then do foo [00:29] coffee: undefined [00:30] admc has joined the channel [00:30] pyrotechnick: coffee: if foo? then do foo [00:30] coffee: if (typeof foo != "undefined" && foo !== null) { [00:30] coffee: foo(); [00:30] coffee: } [00:30] pyrotechnick: coffee: if module?.foo? then do module.foo [00:30] coffee: if ((typeof module != "undefined" && module !== null ? module.foo : void 0) != null) { [00:30] coffee: module.foo(); [00:30] coffee: } [00:31] pyrotechnick: they can alos be chained [00:31] mikew3c has joined the channel [00:31] bburky has left the channel [00:31] bburky has joined the channel [00:34] ircretary has joined the channel [00:34] pekim: Can I somehow conditionally require a module? I want to use hrtime if it's availailable, but if it's not I can fallback to millisecond resolution. The problem is that require throws an error if it fails. I can use a try/catch, but that feels a little ugly. [00:35] mape: daveyjoe: davej on github? :) [00:36] daveyjoe: mape: yep :-D [00:36] mape: daveyjoe: node-scraper is pretty much what I want now, so you are probly better of forking and adding more advanced things to it. [00:37] bingomanatee_: is require() a blocking call? [00:37] mape: bingomanatee_: yes [00:37] bingomanatee_: thx [00:37] daveyjoe: mape: Ok, thanks for the response! [00:37] mape: daveyjoe: np, look forward to see what you do with it :) [00:37] bingomanatee_: pekim: look at the paths library - it has an exists method and thats a little cleaner than require and pray [00:38] daveyjoe: mape: :) ... Can you think of anything that might be an issue along the way? [00:38] admc has joined the channel [00:38] augustl_eee: http://pastie.org/1441400 - why am I getting that error when I run "zomg"? [00:38] bingomanatee_: that being said - knowing where things are in your own project is not ordinarially something that should be subject to branching logic :D [00:38] pgc has joined the channel [00:38] daveyjoe: ... since your already pretty familiar with the project :) [00:38] mape: daveyjoe: In what sense? [00:38] pekim: bingomanatee_: Thanks for the pointer. I'll take a look. [00:38] mape: daveyjoe: Well mostly that jsdom is slow, so doing somekinda workers solution might be a good idea [00:39] mape: Otherwise the service would lock up rather fast [00:39] bingomanatee_: I think what pekim might be driving at - I hope anyway - is a kind of "dynamic loading" scenario a la Zend Framework's autoloader - in which case it is kind of appropriate to encapsulate module exploration in logic.. [00:39] augustl_eee: updated the paste (http://pastie.org/1441400) [00:39] twoism has joined the channel [00:39] daveyjoe: mape: ok, thanks. That's pretty much what I meant with regards to issues. [00:40] mgutz: augustl_eee: zomg has no main property [00:40] augustl_eee: mgutz: did you see the updated or the old paste? [00:40] augustl_eee: it has a main property in the updated paste (if I understand you correctly) [00:41] pgc has left the channel [00:42] augustl_eee: it makes sense. Looking at console.log(require.paths), none of the paths have "buster-zomg" in them. [00:42] augustl_eee: I wonder why, though, I expected it to be present somewhere in the paths with that main property [00:42] ttpva has joined the channel [00:44] augustl_eee: should it work? Is this some kind of bug with npm? [00:44] mgutz: not sure why, i saw the older post. check if both installed with  `npm list installed` [00:44] augustl_eee: both? [00:44] bingomanatee_: pekim: you might consider developing a "manifest" json document describing what a module contains - that way you don't constantly hit the file system during program execution, you just load one file and have a hash map of files/names. [00:45] augustl_eee: the updated paste is here: http://pastie.org/1441400 [00:45] mgutz: nm ,i thought there was a buster-lol [00:45] bburky has left the channel [00:45] cafesofie has joined the channel [00:45] augustl_eee: yeah I thought that was relevant at first, but I realized I don't even get as far as loading the package itself ;) [00:45] c4milo has joined the channel [00:49] dsirijus has joined the channel [00:51] mgutz: change zomg to `require('../lib/buster-zomg').zomg() [00:51] c4milo1 has joined the channel [00:54] matt_c has joined the channel [00:55] augustl_eee: and remove the "main" call? [00:55] augustl_eee: from package.json? [00:55] mgutz: http://pastie.org/1441448 [00:56] aconbere has joined the channel [00:56] keeto has joined the channel [00:56] misham has joined the channel [00:57] AlexMax has joined the channel [00:58] c4milo has joined the channel [00:59] augustl_eee: having "bin" solves it? [00:59] mgutz: i changed two files, let me paste the two [00:59] augustl_eee: the problem persists when adding bin explicitly to package.json [01:00] mgutz: http://pastie.org/1441456 [01:00] markwubben has joined the channel [01:00] mgutz: use relative paths when working in your project directory [01:00] augustl_eee: that makes no sense to me. Isn't the point of "main" that you don't need the full path in the require? [01:01] c4milo1 has joined the channel [01:01] augustl_eee: put differently, shouldn't the main property add buster-zomg to path? [01:01] augustl_eee: perhaps I assume too much.. [01:03] cheney: what does line 130 return an empty array http://pastebin.com/dG9Hdzyg [01:04] cheney: it should be a string with data according to line 128 [01:04] rickard2 has joined the channel [01:04] markeeto has joined the channel [01:04] aklt has joined the channel [01:04] augustl_eee: I postedo n the npm mailinglist, perhaps they can make some sense out of this [01:05] arpegius has joined the channel [01:05] mgutz: npm installs your project into usr/local/lib/node so yes, it's in the node modules path [01:05] tim_smart has joined the channel [01:05] mgutz: that's what the main property does [01:06] mgutz: the bin property is for your script which it links in /usr/local/bin [01:06] augustl_eee: so without the main property, it doesn't install it to /usr/local/lib/node? [01:07] mgutz: i think so. i don't know the internals but none of my packages install or link without it [01:07] fuzzybutter has joined the channel [01:07] augustl_eee: I don't understand a damn thing about the main property, then :) [01:08] augustl_eee: if that's the case, why do you pass a path to the main property? What does npm use that path for? [01:08] mgutz: so it can find it, the structure of your project is defined by you not npm [01:08] mgutz: you don't have to use lib/ [01:09] sveimac has joined the channel [01:09] augustl_eee: the docs are vague-ish [01:09] twoism has joined the channel [01:09] augustl_eee: "The main field is a module ID that is the primary entry point to your program" [01:09] augustl_eee: what's a module ID? [01:10] mgutz: peraps like all other projects, the author is too busy mad coding and some docs become stale [01:10] misham: anyone here works on v8? [01:10] mgutz: s/peraps/perhaps [01:11] augustl_eee: let's hope the mailing list have some insights [01:11] mgutz: aight good luck [01:12] mlins has joined the channel [01:12] arpegius_ has joined the channel [01:12] cheney: you guys have any idea why line 130 returns an empty array instead of the data gathered on line 128 http://pastebin.com/dG9Hdzyg [01:13] mgutz: callback hasn't been called yet? [01:13] augustl_eee: cheney: probably because the function is not called [01:14] eazyigz has joined the channel [01:14] cheney: but the function is called because when I add console.log(pathbody) to line 129 data is returned [01:14] echosystm: cheney you asked about this yesterday [01:14] echosystm: and we already told you why [01:15] echosystm: you need to go away and learn javascript [01:15] augustl_eee: cheney: it's probably called after line 130 then [01:15] mgutz: 129 is in the callback [01:15] cheney: echosystm: this is not a JavaScript problem [01:15] cheney: it is a node problem [01:15] echosystm: it is, you clearly have no idea what youre doing [01:15] augustl_eee: cheney: user error, probably ;) [01:15] augustl_eee: not node error [01:15] nolan_d has joined the channel [01:16] cheney: augustl_eee: I am not disagreeing with you there [01:16] augustl_eee: cheney: you understand that there's no guarantee for your function synchronously being called before line 130 right? [01:16] eazyigz has joined the channel [01:16] echosystm: pathbody is empty because the 'end' event for response hasn't happened yet and thus pathbody.join hasnt happened yet [01:16] augustl_eee: if your function is not called at the same time as response.on is called, but called later, line 130 will execute first [01:17] augustl_eee: and it's veeery likely that this is the case [01:17] twoism has joined the channel [01:17] cheney: this is all inside a parent function that is called on line 226 [01:17] augustl_eee: cheney: doesn't matter [01:18] augustl_eee: cheney: the function passed to response.on may or may not get called, now or later or never. [01:18] c4milo has joined the channel [01:18] cheney: why not? pathbody is a closure and the parent function has already executed [01:19] cheney: augustl_eee: so transmission calls execute outside the execution order of the surrounding JavaScript? [01:19] echosystm: cheney: you need to take a step back and learn how event driven programming works, because everything in node.js is event driven [01:19] augustl_eee: cheney: http://pastie.org/1441492 [01:20] augustl_eee: cheney: there's an isolated example showing you the order of execution [01:20] augustl_eee: a third option is that "callback" never gets called. Then "a" will never be logged. [01:20] c4milo has joined the channel [01:21] augustl_eee: there's a big difference between defining and calling functions [01:21] cheney: does that mean that JavaScript does not halt for an event response but instead continues to execute the remainder of the code, thus possibly missing the result of something awaiting a response? [01:21] echosystm: yes [01:21] augustl_eee: cheney: yes, but it's node, not JavaScript in general [01:22] augustl_eee: cheney: this is called evented/asynchronous programming [01:22] echosystm: this is why you can handle multiple connections etc. without needing to use threads [01:22] augustl_eee: response.on("end", func) doesn't block [01:22] cheney: I will have to figure out how to make the code halt until the response is complete [01:22] echosystm: no [01:22] augustl_eee: cheney: MEEP MEEP MEEP ALARM MEEP MEEP [01:22] augustl_eee: no. [01:22] echosystm: lol [01:23] augustl_eee: cheney: asynchronous/evented code is a big part of node [01:23] echosystm: cheney: if one statement blocks until completion, your entire server will stop doing anything [01:23] cheney: the response I am complaining about is necessary for following logic, and if it is not complete errors occur [01:23] bingomanatee_: <-- experimenting with using event emitters to allow multiple models to share the same mongodb databse connection. keep an eye on noogle if you are curious. [01:23] augustl_eee: cheney: then you have to refactor [01:23] augustl_eee: cheney: you can't make it block [01:23] bingomanatee_: cheney: very relevant. Use your own event emitters. [01:24] augustl_eee: cheney: earlier today I had to refactor an entire codebase because I assumed synchronousity. [01:24] echosystm: cheney: it is possible to write any blocking code asynchronously, you just need to take a step back and get your head around it [01:25] cheney: thanks guys, I will have to figure how to process HTTP requests in the middle of a HTTP server response that is not blocked [01:25] mattc has joined the channel [01:25] binarypie has joined the channel [01:25] augustl_eee: I had a validate() function that returned true/false. Then I needed a validation for file existence, which is an asynchronous API. So I had to change it to validate(function (isValid) { }) [01:25] liar has joined the channel [01:26] augustl_eee: cheney: hint: events and callbacks ;) [01:26] ossareh has joined the channel [01:26] stepheneb has joined the channel [01:27] SubStack: the thing that tripped me up when first using node was err as the first parameter [01:27] PyroPeter has joined the channel [01:27] SubStack: I fought it at first but it's a good idea [01:27] bingomanatee_: cheney: I am still wrapping my head around this but a perfect node request is one big nested callback. [01:28] SubStack: you don't always need to nest them [01:28] SubStack: you can give them names and make top-level functions [01:28] themiddleman has joined the channel [01:28] SubStack: or use flow control libs for especially stateful logic [01:29] augustl_eee: my next miniproject is avoiding a million "var self = this;". No idea how though.. [01:29] bingomanatee_: someone's trying to pimp a work queue, maybe :D [01:29] c4milo1 has joined the channel [01:29] SubStack: augustl_eee: (var self = {}; ... return self) works [01:30] SubStack: even works with `new` [01:30] bingomanatee_: augustl_eee: for what its worth I do a lot of absolute references to the current module, a la function(){ exports.foo ++} [01:30] SubStack: I'm using that style more and more [01:31] SubStack: bingomanatee_: that style can be annoying for when you want multiple instances of an object [01:31] augustl_eee: bingomanatee_: that breaks if someone Object.create()-s your module I suppose? [01:31] augustl_eee: probably does [01:31] ossareh_ has joined the channel [01:31] augustl_eee: what SubStack said :) [01:32] SubStack: if only to make unit tests easier I try to isolate my instances as much as possible [01:32] SubStack: (global state)-- [01:32] augustl_eee: that. [01:32] bingomanatee_: yea - I do this when I want singleton behavior. Its a limited use case I know. [01:32] echosystm: whats the most common testing framework? [01:32] augustl_eee: mine, when it's released. Muhahahahaaha. [01:32] echosystm: i'm one of those bad people who enver really writes tests :P [01:32] bingomanatee_: not that I consider this best practice - but "none" [01:32] echosystm: figure i should probably start doing that [01:33] mgutz: expresso or vows [01:33] augustl_eee: echosystm: that's a shame. Sucks to waste manual testing when you could have persisted it :) [01:33] bingomanatee_: Most of the tests I see are just stateless scripts. [01:34] SubStack: I write tests all the time. [01:34] augustl_eee: it's late, emergenzy lid close inc [01:34] SubStack: not usually before features unless I've got a simple feature and the rest of the module already in place [01:34] SubStack: TDD usually doesn't seem worth it in that respect [01:34] SubStack: but unit tests are really useful for convincing yourself that you've written stuff correctly [01:35] mattc has joined the channel [01:35] bingomanatee_: For those using mongo / christkv, just figured out how to use events + mongodb databases to make processes wait for a database to load, Check out the "lines" module and how it interacts with noogle_db [01:35] bingomanatee_: https://github.com/bignomanatee/noogle [01:36] pyrotechnick: wtf just happened to coffeescript [01:36] pyrotechnick: https://github.com/jashkenas/coffee-script/graphs/traffic [01:36] echosystm: you started talking about it [01:36] echosystm: :P [01:38] bingomanatee_: BTW I have a project that Im putting out as an "Open Bid" - anyone who wants to send me a bid on converting manateebay.com to ruby let me know. [01:38] Prometheus: Internal Server Error [01:38] mgutz: to ruby? [01:38] binarypie has joined the channel [01:38] pyrotechnick: computer world magazine? [01:39] bingomanatee_: Yer; it was done in whever the F joomla used to be called a long long time ago and I can't even edit stuff any more . [01:39] ossareh_ has joined the channel [01:39] bingomanatee_: Plus I want to pick up on ruby and want something to play with. [01:40] bingomanatee_: It's not a "deep" project - its a vanilla blog - but the templating might be a little work. [01:40] bingomanatee_: Its in "old school" html tables. [01:40] mgutz: You're here all the time, found it odd you would choose ruby over node + express [01:40] mgutz: i still use Rails for most things [01:40] mgutz: i use node+express for the things I used sinatra for [01:40] RockShox: pyrotechnick: http://feedproxy.google.com/~r/oreilly/radar/atom/~3/vzvpUvKmJ8g/four-short-links-6-january-201-1.html [01:41] bingomanatee_: I need to use Ruby for a work project. I really can't fly node over the people I work with -- right away. [01:41] masahiroh has joined the channel [01:41] bingomanatee_: Of course, if one of you nodites were to apply for the open engineer position in SF (see the Cybyl.com add in Craig's List) it makes it easier for me to do so... :D [01:41] ossareh has joined the channel [01:42] skm has joined the channel [01:42] bingomanatee_: for some reason we're having trouble finding candidates so your odds are good. Just don't mention node til you get the job. [01:42] mgutz: lol [01:42] bingomanatee_: I got a reputation to maintain. [01:42] ossareh__ has joined the channel [01:43] bsdguru has joined the channel [01:43] bingomanatee_: You'd be working with the people who "Fatal System Error" is about. [01:43] bingomanatee_: And not incidentally, the former chief architect of Live Nation. [01:43] bingomanatee_: (not me by the way. ) [01:44] mlins has joined the channel [01:44] mgutz: all the cool jobs are in SF, like San Diego too much to move [01:44] jimt_ has joined the channel [01:44] bingomanatee_: your loss. [01:44] mgutz: i know :( [01:45] bingomanatee_: <-- has been to Joyent. [01:45] bingomanatee_: Just wish it could have been under better circumstances... [01:46] proppy has joined the channel [01:46] proppy: ryah: ping, node debug [01:46] proppy: ryah: there is a wierd issue with the new node debug command [01:46] proppy: Ctrl^D asks 'A debugging session is active. Quit anyway? (y or n)', and then hangs [01:47] easternbloc has joined the channel [01:47] eazyigz has joined the channel [01:47] ossareh_ has joined the channel [01:47] seancribbs has joined the channel [01:49] jimt has joined the channel [01:49] c4milo has joined the channel [01:49] SubStack: bingomanatee_: you could tie some node code to ruby with dnode-ruby [01:49] bingomanatee_: I actually think that is the way node is going to make it - as a ruby accelerator. [01:50] bingomanatee_: Possibly a Drupal accellerator too, though I don't personally want to tie my life to that train wreck of a codebase. [01:50] bingomanatee_: thanks though. [01:50] easternbloc: how on earth do I manually close a httpClient request? [01:51] bingomanatee_: client.end(); [01:51] bingomanatee_: Works on other planets too. [01:51] easternbloc: nope, that just makes the request [01:51] MattJ has joined the channel [01:51] bingomanatee_: or is it client.close()? [01:51] proppy: ryah: filled https://github.com/ry/node/issues/issue/554 [01:51] easternbloc: I'm working with long polls and I can't work out how to end it [01:51] easternbloc: how close dont exist for the client [01:51] easternbloc: only the server :S [01:51] easternbloc: it's weirding me out [01:52] bingomanatee_: easternbloc - I've been using end(). [01:53] easternbloc: erm, how? [01:53] kanru has joined the channel [01:53] bingomanatee_: https://github.com/bignomanatee/noogle/blob/master/model/pages.js - see the read function [01:53] BBommarito has joined the channel [01:54] bingomanatee_: That being said - I am not reading really huge files. [01:54] bingomanatee_: It possible that they are closing on their own. [01:54] jimt_ has joined the channel [01:54] easternbloc: yeah, in that instance they are [01:55] easternbloc: i think end is just there for the sake of the actual client [01:55] ossareh_ has joined the channel [01:55] easternbloc: but from what i can work out you can't call it to end the actual request [01:55] ryah: proppy: hey, thanks [01:55] ryah: actually i've seen that before too [01:56] aconbere has joined the channel [01:56] proppy: ryah: looking and _debugger.js/tryQuit function [01:56] easternbloc: ryah: how can I end a long polling httpClient request? [01:56] bingomanatee_: oh- you might want to make sure you have an client.on('error') handler. If you don't you can choke really easily. [01:56] easternbloc: maybe this is a dumb question but I'm just stuck :/ [01:57] ryah: easternbloc: client.destroy() [01:57] proppy: ACTION wonders if it is easy to debug the debugger :) [01:57] easternbloc: ryah: thanks, will give that a go now [01:59] Country has joined the channel [01:59] c4milo1 has joined the channel [02:00] maushu has joined the channel [02:01] easternbloc: and cheers bingomanatee_ I still need to do my client error handler [02:01] bingomanatee_: yep - even a blank function is better than not using one at all. [02:02] bingomanatee_: really. [02:02] bingomanatee_: proppy: rent "The Thirteenth Floor" [02:03] proppy: ryah: hint, Interface.prototype._onLine is never called after pressing Ctrl-D [02:03] bingomanatee_: Better in some ways than "The Matrix" [02:04] mattmob has joined the channel [02:05] c4milo has joined the channel [02:06] jchris has joined the channel [02:09] easternbloc: yay, right that's working correctly now [02:10] c4milo1 has joined the channel [02:10] seancribbs has joined the channel [02:11] seancribbs has left the channel [02:11] stepheneb has joined the channel [02:11] proppy: ryah: found it, that's because Ctrl-D close the readline (set _closed = true), and then it can't read anything more [02:13] opengeard has joined the channel [02:13] bentruyman has joined the channel [02:13] sth has joined the channel [02:16] sudoer has joined the channel [02:17] eazyigz has joined the channel [02:18] nonnikcam has joined the channel [02:19] Wizek_ has joined the channel [02:20] cafesofie has joined the channel [02:20] tjholowaychuk has joined the channel [02:22] BBommarito has joined the channel [02:22] jchris has joined the channel [02:23] bingomanatee_: question - when you create an httpClient, whats to prevent a race condition between the declaration of the client and the creation of on('data' ...) handlers? [02:26] eazyigz has joined the channel [02:26] mattc has joined the channel [02:28] bingomanatee_ has joined the channel [02:28] bingomanatee_: test [02:28] twoism has joined the channel [02:29] tim_smart has joined the channel [02:30] bsdguru_ has joined the channel [02:31] AlexMax: I'm running into a weird issue with irc-js and timers. I have a piece of code that listens for a 'you're banned' message from the server and automatically tries to rejoin every five seconds [02:31] AlexMax: http://paste.pocoo.org/show/317442/ [02:31] AlexMax: pretty simple [02:31] AlexMax: However, I eventually (after a few seconds of being banned) get this traceback [02:31] AlexMax: http://paste.pocoo.org/show/CegmcADZSucOpOatirdm/ [02:35] MattJ has joined the channel [02:37] c4milo has joined the channel [02:37] AlexMax: Hrm, putting it in it's own anonymous function seems to have cleared things up [02:37] pengwynn has joined the channel [02:40] forzan has joined the channel [02:40] cnu has joined the channel [02:40] AlexMax: http://paste.pocoo.org/show/317446/ [02:40] AlexMax: damn this is easy [02:41] bingomanatee_: what are you writing - a trollbot? [02:43] twoism has joined the channel [02:44] gartenstuhl has joined the channel [02:46] bentruyman has joined the channel [02:47] AlexMax: bingomanatee_: I'm writing a bot for my own channel [02:47] c4milo has joined the channel [02:48] AlexMax: bingomanatee_: Why do I need that anonymous function on line 18 though. I tried to just pass setTimeout connection.join(whatever) but it fired it off immediately and eventually crashed and burned [02:48] bingomanatee_: one would hope [02:48] AlexMax: setTimeout(connection.join(options.channel), 10000); [02:48] bmizerany has joined the channel [02:48] AlexMax: That doesn't work, it fires immediately and then complains that timer doesn't exist [02:49] bingomanatee_: don't know enough about irc / irc + node to help you [02:49] mlins has joined the channel [02:49] AlexMax: bingomanatee_: Oh, so that's something that you OUGHT to be able to do? [02:49] bingomanatee_: my gut says that there is an on('handlethis', function) that would kick in your callback at the proper time - can't tell you which one though. [02:51] bingomanatee_: what I would do is find every single possible handler for IRC and do a try{} catch attempt to join in each one. [02:51] bingomanatee_: By brute force you should be able to figure out which hook to put your callback in. [02:51] mikew3c has joined the channel [02:51] bingomanatee_: Don't envyy this approach. [02:51] bingomanatee_: but it would work. [02:52] bingomanatee_: Keep in mind this is VERY abstract problem solving on my part. Node in general provides event hooks that exist to allow you to trigger callbacks at the first opportunity that is appropriate for them. [02:53] bingomanatee_: so it stands to reason that there is an event that triggers when conditions are right to join a channel. You just have to find that hook. [02:55] MattDiPasquale has joined the channel [02:58] briznad has joined the channel [02:58] tokumine has joined the channel [02:59] siong1987 has joined the channel [03:02] MikhX has joined the channel [03:02] Ond has joined the channel [03:07] bsdguru has joined the channel [03:10] MikhX has joined the channel [03:10] CIA-121: node: 03Ryan Dahl 07master * r5580907 10/ lib/_debugger.js : [03:10] CIA-121: node: debugger: fix 'scripts' command [03:10] CIA-121: node: path.split() no longer available - http://bit.ly/fMvYeJ [03:10] CIA-121: node: 03Ryan Dahl 07master * r5342e3e 10/ src/node.js : expose module wrapper to native modules - http://bit.ly/f6fPFJ [03:10] CIA-121: node: 03Ryan Dahl 07master * re1f4b3f 10/ lib/_debugger.js : debugger: implement 'list' - http://bit.ly/gG7WuL [03:12] ryah: <3 list [03:16] unlink: Does ClientRequest support httpss? [03:17] unlink: *https [03:18] BBommarito has joined the channel [03:20] ryah: no https client yet [03:22] BBommarito has left the channel [03:22] unlink: what's the best way to accomplish that? shell out to curl? [03:24] JimBastard has joined the channel [03:26] ryah: i guess [03:28] pquerna: stunnel [03:28] pquerna: if you only go to a small number of targets [03:30] JimBastard has joined the channel [03:31] isaacs has joined the channel [03:31] proppy: ryah: what does list ? [03:32] tjholowaychuk: ryah: what do you think of something like this with the other console.* stuff? http://groups.google.com/group/nodejs-dev/browse_thread/thread/e2091604e8a688e8 [03:32] isaacs: jimmyjazz14: "main" : "build/default/my-module.node" [03:32] isaacs: jimmyjazz14: put that in your package.json [03:32] SubStack: and smoke it! [03:32] Ond: lol [03:32] isaacs: hahah [03:33] ryah: proppy: debugger cmd [03:33] proppy: ryah: ah it's like gdb list :) [03:34] ryah: tjholowaychuk: yeah, maybe [03:34] ryah: looks nice [03:34] tjholowaychuk: ryah: I think ruby has something similar that it ships with, pretty handy [03:35] ryah: tjholowaychuk: would be a good thing for the debugger [03:35] tjholowaychuk: ya, repl too [03:36] stagas has joined the channel [03:36] jimmyjazz14: isaacs ah thanks, I figured it out [03:36] isaacs: kew [03:36] isaacs: jimmyjazz14: yeah, `npm help json` could be a book [03:36] pquerna: going to pi bar. i think. [03:36] isaacs: basically,about half of "how npm works" is in that helpfile [03:36] sechrist: https server makes me all giddy [03:37] sechrist: Soon I will be able to stop using stunnel! [03:37] pquerna: soon (tm) [03:38] ryah: pquerna: im going to phone booth, you should come over [03:38] jimmyjazz14: isaacs really, I might recommend a more extended doc somewhere (on the npm site) that specifically targets at package creators [03:38] isaacs: jimmyjazz14: yeah [03:38] ryah: (25& vanness) [03:38] sechrist: I hate being the only person in my office that can't go out to a bar [03:39] sechrist: 2 more years :( [03:39] JimBastard: javascript party at the secret hack space with tmpvar [03:39] bingomanatee_: sechrist - is it an age thing or AA? [03:39] sechrist: age [03:41] SoftwareMaven has joined the channel [03:41] jimmyjazz14: isaacs: cabal has a nice little init program (cabal init) for creating package files (.cabal files) does npm have anything like that? [03:41] bingomanatee_: Trust me - this is not the biggest problem that Father Time has in store for you. [03:42] JimBastard: jimmyjazz14: how about, npm init [03:42] JimBastard: thats cool, i didnt know that worked [03:42] isaacs: JimBastard: you accidentallied good advice! [03:42] jimmyjazz14: oh ha, I didn't notice that [03:42] isaacs: jimmyjazz14: `npm init` is pretty rudimentary [03:42] bingomanatee_: <-- likes bars [03:42] JimBastard: me and tmpvar didnt either jimmyjazz14 [03:43] isaacs: jimmyjazz14: patches welcome [03:43] SoftwareMaven: I saw the announcement for 0.3.4 with new https support. I'm evaluatings node.js for a web service that must be 100% https. Is there a stable way of serving node.js via http/s? [03:43] JimBastard: just tried it and it worked [03:43] Ond: < also nineteen so none of that fine Oregon booze for me at or post node conf [03:43] bingomanatee_: <-- is buying and knows where they keep the good stuff [03:43] Ond: Son of a... [03:44] SubStack: delicious oregonian fermented beverage [03:44] bingomanatee_: PDX bored and bred [03:44] isaacs: SoftwareMaven: when does your service go live? [03:44] bingomanatee_: Fair warning - once you have a Terminator, everything else just tastes like fail. [03:44] SubStack: I was born in Portland too but haven't been back there since 2005 [03:44] SoftwareMaven: isaacs: A couple months [03:44] bingomanatee_: See you there. Bring your bike :D [03:44] isaacs: SoftwareMaven: and when do you expect to *stop* developing on it? [03:44] isaacs: SoftwareMaven: like, is ti some contract thing? [03:44] isaacs: or a startup? [03:45] bingomanatee_: <-- settles for Guiness -- but it is settling. [03:45] SoftwareMaven: isaacs: startup. This is the most foundational piece of our system and needs to be able to scale very well. [03:45] JimBastard: hey isaacs , you got any ideas for a name of a library that dynamically spawns and manages CouchOne couches? I'm thinking "couch-cloud" [03:45] JimBastard: im creating the same lib for redis and mongo, so i could have redis-cloud and mongo-cloud next [03:46] isaacs: SoftwareMaven: well, then not speaking for anyone else or my employer, if i were you, i'd have a long think about how intimate you'd like to be with this foundational piee. [03:46] isaacs: *piece [03:46] bingomanatee_: that would ba aaaaaaaaaaaaaaasome. [03:46] bingomanatee_: Couch Surfer? [03:46] bingomanatee_: ^ ^ JimBastard [03:46] SubStack: JimBastard: skycouch! [03:46] tim_smart: Call it "Cushion" [03:46] isaacs: SoftwareMaven: nodejs used to have badly broken https server support. then for a while it had node. now it has it, and it's done properly, afaict, but it's brand sparkling new. [03:46] SoftwareMaven: isaacs: I'm having that long think right now. Finding out where the surprises are (like this for http/s). [03:47] JimBastard: im trying to think of a name scheme that could work for multiple techs though, i also want to eventually combine them into a composite app that handles them all, "cloud-databases" [03:47] isaacs: SoftwareMaven: http (no s) has been rock solid for a long time in node now [03:47] bingomanatee_: Cloudbank? [03:47] isaacs: JimBastard: Cloudfront [03:47] JimBastard: lol [03:47] bingomanatee_: Thunder? [03:47] bingomanatee_: Thor? [03:47] tim_smart: louge [03:47] JimBastard: lol @ cloudfront [03:47] Ond: Clouch? No that's bad. [03:47] tim_smart: **lounge [03:47] ashleydev has joined the channel [03:48] isaacs: JimBastard: SubStack's idea is the best, i thin. SkyCouch [03:48] SoftwareMaven: isaacs: I really like a lot of what I see in node.js, but I'm afraid I might be 6-12 months too early. [03:48] tim_smart: You can have multiple "couch"'s in a "lounge" [03:48] SubStack: oh skycouch, why are you so comfortable? [03:48] JimBastard: i like SkyCouch, but then when i make the redis and mongo libraries, what would i call them [03:48] isaacs: tim_smart: yeah, that's what lounge is. [03:48] bingomanatee_: JimBastard: Portlandia? [03:48] isaacs: JimBastard: SkyDis and SkyNgo, of course [03:49] isaacs: SoftwareMaven: well, like i said, if you need it solid yesterday, node's not it. you'd be an early adopter (though it IS there today, you'd have to start with 0.3.x, which would probably be 0.4 by the time you laucnh) [03:49] bingomanatee_: Jimbastard: you could call it "Ollie" after the weather guy in "Family Guy" [03:49] JimBastard: CHUNKY [03:49] JimBastard: i gotta go "cloud-* [03:50] JimBastard: i can't think of any other naming scheme that can link all three together [03:50] JimBastard: and then work as a composite [03:50] JimBastard: lame libraries name [03:50] bingomanatee_: LLN [03:50] isaacs: SoftwareMaven: i'd bet on you finding a bug or two, and maybe even having to dig into the code from time to time. that being said, there are a lot of advantages to being intimate with foundational elements of your software. like, you'd be *able* to do that, and because the people who built it are curretnly working on it as a new fresh thing, they're very attentive to ie. [03:50] SubStack: fluffy-couch [03:50] bingomanatee_: Couch Potato [03:50] SubStack: ^^^ [03:50] JimBastard: thanks for the input [03:51] amerine has joined the channel [03:51] JimBastard: but you guys keep missing my main point, i gotta release three libraries one for couch, redis, and mongo [03:51] bingomanatee_: CRAM [03:51] JimBastard: and they should have similar names [03:51] bingomanatee_: ^ ^ nailed it [03:51] SubStack: yes [03:51] SubStack: sky{couch,redis,mongo} [03:51] SubStack: {couch,redis,mongo} potato [03:52] JimBastard: then im limited to those 3 [03:52] bingomanatee_: CouchBank, RedBank, MongoBank [03:52] bingomanatee_: Not original but descriptiove [03:52] Ond: RediBank maybe [03:52] sechrist: how many people in here are using Riak? [03:52] SubStack: or pile [03:53] sechrist: It seems to be an awesome project but I haven't heard much buzz about it [03:53] Ond: You already know I use Riak sechrist ;) [03:53] SubStack: or "depository" [03:53] Ond: And no it's somehow stayed under the radar [03:53] Ond: Mostly [03:53] JimBastard: cloud-databases is too lame? [03:53] JimBastard: a library for provisioning cloud database instances [03:53] bingomanatee_: a little long [03:53] bingomanatee_: cloud-db maybe [03:53] isaacs: JimBastard: you should call it "couch-provisioner" [03:53] SubStack: provision [03:53] SubStack: yes [03:53] isaacs: isn't that what it does? [03:53] bingomanatee_: but thats not going to stick out. [03:53] sechrist: cloudprovdb [03:54] JimBastard: isaacs: aye, also manages admin users [03:54] sechrist: provdb [03:54] bingomanatee_: CouchStorm, RediStorm, MongoStorm [03:54] isaacs: JimBastard: ok, then come up with a description of what it is in 1-3 words. if it's 1 word, abbreviate it to the first syllable. if ti's more than that, acronymize it. [03:54] isaacs: that is how all programs should be named. [03:55] JimBastard: hungarian naming rules? [03:55] isaacs: none of this weirdo "unicorn" and "rails" and whatnot [03:55] SubStack: hungry hungry couch [03:55] isaacs: that's why all my programs have dumb boring names. [03:55] isaacs: cuz that way i know what they do' [03:55] isaacs: branding is for humans. you should write software like a robot from the future. [03:56] SubStack: affirmative [03:56] bingomanatee_: "Jim Bastards Happy fun time {Couch/Redis/Mongodb} Unicorn Sanctuary" [03:56] Ond: crouch, credis, crongo ? 'c' for 'cloud' obviously [03:57] Ond: I give. [03:57] JimBastard: good names is hard [03:57] isaacs: JimBastard: bah. that's pre-singularity talk there. [03:57] SubStack: the-marak-variety-hour-presents-{couch,redis,mongo} [03:57] isaacs: RFTF. ROBOT FROM THE FUTURE [03:57] bingomanatee_: How about Cram, cRam, craM [03:57] JimBastard: i wanna go with my gut and go, couch-cloud, redis-cloud, mongo-cloud, then have the composite library be cloud-databases [03:57] isaacs: WOOO!! awesome. [03:57] JimBastard: i think that will be the easiest to grasp [03:58] isaacs: well done [03:58] isaacs: yes. [03:58] bingomanatee_: I'd do a web search JimBastard to make sure its original (ish) [03:58] SubStack: JimBastard: and then I will make a database called cloud and I will make you add it [03:58] JimBastard: SubStack: if you do that ill call it, cloud-cloud-i-hate-substack [03:58] JimBastard: bet on it [03:58] Ond: lol [03:58] JimBastard: ;-) [03:58] SubStack: yes sir! [03:58] SubStack: that's a pretty good name [03:59] daveyjoe has joined the channel [03:59] bingomanatee_: couchNet, redisNet, mongoNet [04:01] isaacs: Nice: while ! git rebase --skip ; do true ; done [04:01] bingomanatee_: http://tinyurl.com/futuremanexplainstwitter [04:02] ryah: isaacs: what's that do? [04:02] ryah: looks super magical [04:02] isaacs: ryah: when you have a git rebase conflict, you do that to say "throw away everything and give me what i said to give me you idiot robot" [04:03] isaacs: but... ya know... politely [04:05] noahcampbell has joined the channel [04:07] isaacs: ryah: you still interested in the child_process uid/gid thing? [04:08] ryah: yeah [04:12] mattc has joined the channel [04:21] perlmonkey2 has joined the channel [04:23] isaacs: ryah: i can't remember, was there something left to do with it? [04:23] pyrotechnick: i need to "attach" objects in my bindings i think [04:23] pyrotechnick: i don't know what it's called or where to look [04:24] pyrotechnick: but they're being gc'd because i have handles to objects that contain objects that i dont have handles to [04:24] pyrotechnick: correct? [04:26] perlmonkey2: doesn't js do reference counting to determine gc'ing? If so then that wouldn't make sense. [04:28] pyrotechnick: yeah [04:28] pyrotechnick: i've done some more testing and that doesn't seem like it [04:28] pyrotechnick: back to the drawing board. [04:29] isaacs: ryah: https://gist.github.com/771417 [04:34] bitdrift has joined the channel [04:34] mlins has joined the channel [04:37] bmizerany has joined the channel [04:39] creationix has joined the channel [04:44] josephhitchens has joined the channel [04:48] josephhitchens_ has joined the channel [04:49] mlins has joined the channel [04:50] drtyhbo has joined the channel [04:51] JimBastard: does anyone know any reason the request module isn't firing its callback. its just hanging. its not throwing any errors, only happens when i use a wrong name/password pair for basic auth against this server. i gotta assume its the server not responding ? [04:58] mlins has joined the channel [05:02] gartenst_ has joined the channel [05:05] JimBastard: mikeal: is there anything that will cause the request module to not respond? im like totally blanking on this. if i provide wrong creds for this basic auth server the request module just freezes up [05:05] JimBastard: im so confused [05:06] vborja has joined the channel [05:08] JimBastard: lets scratch that for a sec [05:11] tekky has joined the channel [05:11] ossareh has joined the channel [05:16] JimBastard: yeah, the request() method is just looping over and over again [05:16] JimBastard: i cloned it and linked it with npm [05:16] JimBastard: put in debug statements [05:18] creationix has joined the channel [05:21] admc has joined the channel [05:25] Aria has joined the channel [05:30] liar has joined the channel [05:31] JimBastard: i figured it out [05:32] JimBastard: was being redirected by the web-service in a loop [05:32] JimBastard: followRedirect: false, [05:33] ashleydev has joined the channel [05:35] creationix: nice [05:37] JimBastard: was a bit strange though, since request module just sat there looping. i wonder if there is a way to throw a warning or an error [05:37] JimBastard: staring the console waiting for nothing is a not fun [05:37] Aria: A counter's the usual way to solve that. [05:37] Aria: Set it to some reasonable number. [05:37] Aria: (and track loops.) [05:37] JimBastard: it would have to be inside the request module though [05:38] JimBastard: https://github.com/mikeal/node-utils/tree/master/request/ [05:38] Aria: Yeah. [05:38] jrgns has joined the channel [05:38] Aria: It should be. [05:38] JimBastard: im not really sure the best way to attack that in the api [05:39] stepheneb has joined the channel [05:39] mikeal: JimBastard: hrm... [05:39] Aria: {uri: foo, maxRedirects: 15} ? [05:39] JimBastard: you might want it to throw an error if it redirects to the same thing twice [05:39] Aria: (and a sane default) ? [05:40] mikeal: maxRedirects should fix [05:40] JimBastard: mikeal: followRedirect: false seems to have solved the issue, but im in the #couchone room trying to figure out why wrong basic auth creds to couchone is returning me a 302 and not a 403 [05:40] mikeal: once you exhaust it [05:40] mikeal: do I not call the callback with an error if you exhause the redirects? [05:40] JimBastard: i think calling the callback with an error is right? [05:41] mikeal: couchdb returns a redirect to the login page [05:41] JimBastard: i couldnt trace the issue without cloning request module and linking locally [05:41] mikeal: yeah, that's what it should do [05:41] JimBastard: mikeal: im building a client library for creating couch one instances, im basically done, must polishing it [05:42] mikeal: can you log a bug [05:42] mikeal: i can't fix this today [05:42] mikeal: but i should be able to tomorrow if i can remember [05:43] JimBastard: in request module? i can do that [05:44] JimBastard: done. [05:47] JimBastard: thanks mikeal ! [05:47] JimBastard: thanks Aria ! [05:48] Aria: Sure thing! [05:52] jakehow has joined the channel [05:52] pyrotechnick: is there any reason node uses waf [05:52] Aria: It's smallish and simpleish. [05:53] Aria: It's purely pragmatic and not that beloved. [05:53] pyrotechnick: coffeescript uses coffeescript [05:53] pyrotechnick: node should use node [05:53] herbySk has joined the channel [05:53] Aria: That's awesome except for the people without node. [05:53] pyrotechnick: get a node binary [05:53] Blink7 has joined the channel [05:53] Aria: For pld-linux? For macos? For freebsd? For solaris? [05:54] Aria: For ARM? [05:54] pyrotechnick: use cmake for just those 'seed' nodes [05:54] pyrotechnick: i dunno [05:54] pyrotechnick: python as a dependency for node seems [05:54] Aria: I'd rather it depend on make and sh, but python's already a dependency for V8. [05:54] pyrotechnick: oh is it? [05:54] Aria: So unless you want to remuck their build system, too.. [05:54] Aria: Yeah. [05:54] pyrotechnick: that is fine them [05:54] pyrotechnick: yeah [05:54] pyrotechnick: okay [05:54] pyrotechnick: my bad [05:55] pyrotechnick: i feel alot better now [05:55] pyrotechnick: Aria++ [05:55] v8bot: pyrotechnick has given a beer to Aria. Aria now has 1 beers. [05:55] mlins has joined the channel [05:55] Aria: Mmm, beer. [05:55] Aria: (Also: node binaries depend on openssl, if they're complete. OpenSSL dependencies are HELL.) [05:55] Aria: (They really enjoy breaking changes.) [05:56] pyrotechnick: lol [05:56] pyrotechnick: it's not a small feat [05:56] pyrotechnick: doing crypto [05:56] pyrotechnick: i dont blame them [05:56] pyrotechnick: they have other things to worry about [05:56] pyrotechnick: id rather a shitty build system and some breaking changes than broken crypto ;) [05:58] Aria: It's just needless ABI breakage. (And no sane management style for it — NSS and gnutls both don't do this ;-)) [05:58] mikeal1 has joined the channel [06:04] jdub has joined the channel [06:06] xSmurf: how does one append to a file with fs? [06:09] herbySk has joined the channel [06:09] pkrumins: open it append mode, write. [06:10] pkrumins: fs.open('file_to_appent', 'a') [06:11] Aria has joined the channel [06:20] m00kie has joined the channel [06:20] m00kie has left the channel [06:23] rchavik has joined the channel [06:24] ossareh has joined the channel [06:26] ossareh_ has joined the channel [06:27] ossareh__ has joined the channel [06:29] ossareh has joined the channel [06:31] mfernest has joined the channel [06:34] m00kie has joined the channel [06:38] ossareh has joined the channel [06:38] amerine has joined the channel [06:41] josephhitchens has joined the channel [06:47] ron_frown has joined the channel [06:50] boaz has joined the channel [06:58] ossareh has joined the channel [07:00] ossareh_ has joined the channel [07:03] drtyhbo_ has joined the channel [07:04] ossareh_ has joined the channel [07:04] KyleXY has joined the channel [07:06] ossareh__ has joined the channel [07:08] ossareh__ has joined the channel [07:16] mfernest has joined the channel [07:22] eboyjr has joined the channel [07:24] eboyjr: I wish there was a way to load files with the Script.runInThisContext() thing.. I can't tell where the errors are coming from [07:24] eboyjr: http://eboyjr.ath.cx:8080/files/source/narcissus/?pp=nodejstest.js [07:28] muk_mb has joined the channel [07:31] kawaz_air has joined the channel [07:32] cafesofie has joined the channel [07:34] kawaz_air has joined the channel [07:35] dustinwhittle has joined the channel [07:36] shinmei has joined the channel [07:36] iszak has joined the channel [07:36] iszak has joined the channel [07:37] SubStack: ACTION needs investment [07:38] mikeal has joined the channel [07:38] SubStack: yo mikeal: know any angel investors? [07:38] mikeal: yeah [07:39] SubStack: rockin' [07:40] SubStack: ACTION is running out of money :( [07:41] SubStack: actually pkrumins is running out of money, I already ran out [07:41] pkrumins: yep, we need to raise money fast [07:41] pkrumins: we got money for 1 more rent [07:41] pkrumins: 1 more month of rent, which is february [07:41] pkrumins: at march 1st we're dead [07:41] SubStack: it's a shame because all the code is in place and everything to start charging for paid plans [07:42] SubStack: all of that node.js! [07:45] pkrumins: yep [07:46] pkrumins: we have like, how many, 25 or so node.js modules written? [07:48] SubStack: anyhow! [07:55] JimBastard: only 25 node.js modules? [07:55] JimBastard: tsk tsk [07:57] eboyjr has left the channel [07:59] dustinwhittle has joined the channel [08:00] pkrumins: 28 [08:01] pkrumins: i'll go work in mcdonalds if we can't raise money. [08:02] mikeal has joined the channel [08:02] SubStack: pkrumins: nah they would need a social security number I bet [08:02] pkrumins: oh snap [08:02] pyrotechnick: we have 15 [08:02] pyrotechnick: they all build, work and do something useful [08:02] pkrumins: pyrotechnick: what's your startup? [08:02] pyrotechnick: and theyre all written in coffee [08:03] pyrotechnick: pkrumins: github.com/feisty [08:03] pkrumins: i'll go work random jobs then [08:03] pyrotechnick: it's all FOSS [08:03] pkrumins: get paid cash [08:03] pyrotechnick: pkrumins: we're doing an MMO [08:03] pyrotechnick: webgl, node.js [08:03] SubStack: oh right! [08:03] SubStack: neat [08:03] pyrotechnick: SubStack: dnode has made some really awesome shit possible for us [08:03] pyrotechnick: not that we wernt headed in that direction [08:03] pkrumins: pyrotechnick: very cool [08:04] pyrotechnick: but you've certainly saved us months [08:04] pyrotechnick: so i thankyou [08:04] SubStack: :D [08:04] pkrumins: :D [08:04] pyrotechnick: we have dropped http [08:04] pyrotechnick: and databases [08:04] pyrotechnick: we're using dnode [08:04] pyrotechnick: between nodes and the client [08:04] pyrotechnick: everything is a node [08:04] pkrumins: that's how it's supposed to be [08:04] pyrotechnick: and we emulate alot of node stuff on the cleint so that it appears to the other nodes as a node [08:04] pkrumins: very awesome [08:05] SubStack: yeah sounds super cool [08:05] pyrotechnick: the only reason [08:05] pyrotechnick: we can pull off an mmo [08:05] SubStack: I should make an 'in the wild' wiki page [08:05] pyrotechnick: is because of node and webgl [08:05] pyrotechnick: ill make it substack [08:05] pyrotechnick: i made coffee's [08:05] pyrotechnick: actually u do it lol [08:05] pyrotechnick: i have nothing to add [08:05] SubStack: I mean on github on dnode's wiki thing [08:05] pyrotechnick: yeah [08:05] pyrotechnick: do it [08:06] pyrotechnick: u shud make a site [08:06] pyrotechnick: and have a little chat that uses dnode [08:06] pyrotechnick: do something cool like let them move a pixel around [08:06] pyrotechnick: or a lil avatar [08:07] pyrotechnick: SubStack: dnode + node-bullet [08:07] pyrotechnick: is like [08:07] pyrotechnick: ultra pure win times [08:08] pyrotechnick: SubStack: TBH [08:08] pyrotechnick: when i found out about dnode [08:08] pyrotechnick: i renamed our game to toe_old [08:08] pyrotechnick: and git init'd toe [08:09] pkrumins: haha [08:09] pyrotechnick: and started from scratch [08:09] SubStack: pow made it [08:09] pyrotechnick: pow? [08:10] pquerna: blah [08:10] flippyhead has joined the channel [08:10] SubStack: https://github.com/substack/dnode/wiki/In-the-wild [08:11] pyrotechnick: nice [08:11] cafesofie has joined the channel [08:12] SubStack: yeah I'll make a site for dnode before nodeconf [08:12] kjeldahl has joined the channel [08:12] SubStack: I do have a chat example [08:13] pyrotechnick: oh nice [08:13] pkrumins: nodeconf! [08:13] SubStack: but I want to make a tron example >:D [08:13] pyrotechnick: i wish [08:13] pyrotechnick: haha [08:13] pyrotechnick: like [08:13] pyrotechnick: a game? [08:13] pyrotechnick: 2d? [08:13] SubStack: yeah, the lightcycle game [08:13] pyrotechnick: ohh wow [08:13] pyrotechnick: do u know canvas? [08:13] derferman has joined the channel [08:13] SubStack: I've used canvas and raphael [08:13] pyrotechnick: ok [08:13] pyrotechnick: ur all set then [08:13] pyrotechnick: if u put it up [08:13] pyrotechnick: we'll help... [08:14] pyrotechnick: play it [08:14] pyrotechnick: i mean [08:14] pyrotechnick: QA [08:14] pyrotechnick: yeah QA [08:14] SubStack: actually I want to build this game during my node talk [08:14] SubStack: well, beforehand obviously [08:14] pyrotechnick: oh wow [08:14] pyrotechnick: but remake it [08:14] pyrotechnick: thats awesome [08:14] SubStack: but guide through how to make the backend [08:14] SubStack: and a simple command-line client [08:15] SubStack: and then I want to have a pretty web interface prepared that uses the same backend code as the command-line client [08:16] SubStack: since with dnode you can switch between command-line and browser code really easily [08:17] SubStack: but I don't want to get too ahead of myself since none of the talks have been accepted yet [08:17] pyrotechnick: i just realised [08:17] pyrotechnick: tron = the matrix [08:17] pyrotechnick: they totally stole it [08:18] pyrotechnick: SubStack: good luck mate [08:18] SubStack: getting sucked into a computer is a pretty old idea [08:18] pyrotechnick: yeah well [08:18] SubStack: pyrotechnick: add your site to that wiki page if you like! [08:18] pyrotechnick: ahh when i push tomorrow [08:18] SubStack: or github page or whatevs [08:18] pyrotechnick: when we're actually using dnode lol [08:18] SubStack: k [08:19] SubStack: hah right [08:20] pyrotechnick: but yeah [08:20] pyrotechnick: we have this nuts idea [08:20] pyrotechnick: of just dnoding nodes together [08:20] pyrotechnick: and sort of using node clusters as redis [08:21] pyrotechnick: for an MMO [08:21] pyrotechnick: it's perfect [08:21] pyrotechnick: because not much is actually volatile [08:21] pyrotechnick: everthing's streamed through [08:21] pyrotechnick: and cached for a few seconds maybe [08:22] isaacs: sweet. just added 'semver' and 'read-package-json' utils to npm [08:22] isaacs: semver -v -r [08:22] pkrumins: what does that do? [08:22] SubStack: semver is a bin? [08:22] isaacs: yeah [08:22] isaacs: it outputs the versions that satisfy all the ranges, sorted [08:22] isaacs: or it fails [08:23] chapel: pyrotechnick: http://developer.valvesoftware.com/wiki/Latency_Compensating_Methods_in_Client/Server_In-game_Protocol_Design_and_Optimization [08:23] pyrotechnick: yeah [08:24] pyrotechnick: my mate linked me that this morning [08:24] pyrotechnick: is it recent? [08:24] chapel: dont think so [08:24] pyrotechnick: hmm [08:24] pyrotechnick: we're doing SS physics [08:25] pyrotechnick: it's a bit crazy [08:27] Druid_ has joined the channel [08:30] pyrotechnick: is npm bundle like bundler [08:30] pyrotechnick: does it use git submodules [08:30] bingomanatee__ has joined the channel [08:32] Ond has joined the channel [08:32] pyrotechnick: ryah: will node ever be under node/node [08:46] KyleXY has joined the channel [08:48] mlins has joined the channel [08:53] pdelgallego__ has joined the channel [08:54] pdelgallego has joined the channel [08:54] tim_smar1 has joined the channel [08:57] tanepiper: pyrotechnick: probably no, there is already another unix app called 'node' [08:57] pyrotechnick: ok [08:58] tim_smart has joined the channel [08:59] mikew3c has joined the channel [09:02] mgutz has joined the channel [09:08] sechrist: node is a confusing name imo [09:08] sechrist: at work when I say node they think of a machine in a rack [09:08] pkrumins: say nodejs [09:09] sechrist: I've been using "njs" in conversation and internal emails [09:09] sechrist: also has become my file extension [09:09] pkrumins: why not nodejs [09:09] pkrumins: huh [09:09] sechrist: there's rhino and other javascript technologies in the source tree [09:09] sechrist: spidermonkey based freeswitch crap [09:09] sechrist: so in order to stop confusion I picked .njs [09:10] sechrist: well for some things, modules not so much [09:11] pdelgallego_ has joined the channel [09:11] adambeynon has joined the channel [09:12] pyrotechnick: i like node [09:12] pyrotechnick: and .js [09:12] pyrotechnick: but meh [09:12] sechrist: .node [09:12] pyrotechnick: .node is taken [09:12] pyrotechnick: by node binaries [09:12] sechrist: ah [09:12] pyrotechnick: its cool [09:12] pyrotechnick: but taken [09:13] sechrist: in 30 years when nodejs is dead, people will find fossilzed code and not know how to run it [09:13] sechrist: unless there's a shebang at the top [09:13] sechrist: that gives them a hint [09:13] sechrist: if the fileext is .js, that gives absolutely zero context to how to run it [09:14] pyrotechnick: lol [09:14] pyrotechnick: they will see [09:14] pyrotechnick: require 'util' [09:14] pyrotechnick: etc [09:14] pyrotechnick: package.json [09:14] pyrotechnick: etc [09:14] sechrist: is require node-specific or commonjs? [09:14] pyrotechnick: theyll be smarter than us [09:14] pyrotechnick: commonjs [09:14] pyrotechnick: we use require on the client [09:14] pyrotechnick: but it comes thru websocket [09:14] sechrist: for lazy loading? [09:15] sechrist: cool [09:15] pyrotechnick: require is just exposed by dnode for us [09:15] sechrist: is dnode easy to put on top of socketio? [09:15] pyrotechnick: it sits on socket.io ;) [09:15] pyrotechnick: so yes [09:15] sechrist: nice [09:15] pyrotechnick: it's awesome [09:16] sechrist: so that solves my issue if having to abstract message types and stuff [09:16] sechrist: or a large switch statement in my sio code [09:16] sechrist: pkrumins: is dnode completely safe [09:17] pkrumins: it is [09:17] pkrumins: it doesnt eval code or anything like that [09:17] sechrist: cool stuff [09:17] pkrumins: yep! [09:18] pyrotechnick: its just JSON.parse [09:18] jouz has joined the channel [09:18] pyrotechnick: if ur paranoid [09:18] pyrotechnick: use a webworker [09:18] pyrotechnick: or a Script in node.js [09:18] sechrist: webworker on the serverside? [09:18] pyrotechnick: ^^ [09:18] pyrotechnick: u can do webworker in node though [09:18] sechrist: Script? [09:18] pyrotechnick: there's an emulator [09:18] pyrotechnick: look at the script module [09:18] pyrotechnick: actually i think it's global [09:18] pyrotechnick: Script [09:19] pyrotechnick: hmm maybe not let me see [09:19] sechrist: I haven't used webworkers before admittedly [09:19] sechrist: I've done multi-process node applications but with handrolled IPC [09:19] pyrotechnick: http://nodejs.org/docs/v0.3.4/api/vm.html [09:19] pyrotechnick: if socket.io cant do IPC [09:19] pyrotechnick: it wont be long [09:20] sechrist: but socketio's big thing is browser support [09:20] pyrotechnick: http://nodejs.org/docs/v0.3.4/api/vm.html#script.runInNewContext [09:20] sechrist: is it moving towards a message protocol standard for node? [09:20] pyrotechnick: doesnt matter if it is or not [09:20] pyrotechnick: it's entirely usable as that [09:20] pyrotechnick: spesh with dnode [09:20] sechrist: I wouldn't run socketio to communicate between service that don't rely on a browser [09:21] sechrist: at least in current form [09:21] pyrotechnick: we do so we get dnode [09:21] pyrotechnick: it's fast as [09:21] pyrotechnick: fast enough for realtime [09:21] pyrotechnick: 60Hz is a breeze for it [09:21] sechrist: but that's for a browser [09:21] pyrotechnick: no it's between nodes for us too [09:21] sechrist: O.o [09:21] pyrotechnick: we have physics, app, proxy-network nodes [09:21] sechrist: hmm [09:22] sechrist: but if you encapsulate it inside socketio [09:22] sechrist: then the dnode drivers for other languages have to support socketio as well [09:22] sechrist: if I'm not mistaken [09:23] SubStack: yeah dnode is just a trick for packing references to callbacks into json strings [09:23] steffkes has joined the channel [09:23] SubStack: sechrist: you are mistaken [09:23] SubStack: socket.io is just one transport that dnode can do [09:23] sechrist: neat then [09:24] SubStack: for the first few weeks it could only do process to process communication over network sockets actually [09:24] sechrist: we use protocol buffers for absolutely everything internally [09:24] sechrist: with a small framing layer on top for streams [09:24] SubStack: actually it was 1 or 2 months until it even had the callbacks trick [09:24] SubStack: ACTION built it pretty incrementally [09:26] ttpva has joined the channel [09:26] SubStack: and yay more dnode fans [09:27] sechrist: I'll definitely check it out for prototyping the next thing I'm going to use socket.io for in the browser [09:28] sechrist: but for IPC I have to set aside the time to make a dnode-python, and I haven't done that yet [09:28] SubStack: yep that would rock! [09:28] pkrumins: i am going to sleep here. [09:28] SubStack: same! [09:29] pkrumins: alright let's go. [09:29] SubStack: ACTION <-- crazy sleepy [09:29] sechrist: it's 1:30 in the bay [09:29] pkrumins: ACTION just sleepy [09:29] pkrumins: it is. [09:29] sechrist: it's prime node hacking time [09:29] pkrumins: no we're the other way around [09:29] SubStack: well my schedule floats all around [09:29] pkrumins: i have now fixed mine [09:29] SubStack: oh HAH I have a grph [09:29] pkrumins: have found it to be perfect [09:29] SubStack: *graph [09:29] pkrumins: haha yeah [09:29] pkrumins: show it [09:29] sechrist: fixed as in what [09:29] sechrist: gone to days? [09:30] SubStack: https://github.com/substack/dnode/graphs/punch_card [09:30] pkrumins: sechrist: a fixed graph to going to sleep at 1-2am. Waking up at 10-11am. [09:30] sechrist: my circadian rhythm refuses to train my brain to work efficiently turing the day [09:30] sechrist: s/turing/during [09:30] sechrist: I have a full time day job -- and I get more done at night [09:31] sechrist: aggrovates me [09:31] pkrumins: screw all full time jobs! [09:31] sechrist: well "full time" is uhm [09:31] pkrumins: well part time might be ok [09:31] sechrist: it's a startup so if I work until 5 am it's acceptable for me to come in after lunch [09:31] pkrumins: got it [09:31] sechrist: until we hire execs and stuff that get all process-oriented [09:31] SubStack: even that is a bit too formal for me [09:32] SubStack: I worked a job where I could do that [09:32] SubStack: but coming into an office to do work feels really wrong [09:32] sechrist: I worked for a web hosting company that was ridiculous about time schedules [09:32] pkrumins: i forgot how it is. [09:32] sechrist: for breaks you had to queue up in a web app [09:33] sechrist: and a super had to clear you [09:33] SubStack: that is super stupid [09:33] sechrist: and everybody could see if you were late to check back in after break [09:33] sechrist: the time went red on webapp [09:33] SubStack: and I don't like sitting in the same place for too long, so desks feel uncomfortable [09:33] pkrumins: sleeping. [09:34] sechrist: SubStack: I suppose typing is uncomfortable too, so you don't use a keyboard [09:34] sechrist: or you use dvorak [09:34] SubStack: for knowledge work fixed schedules don't seem too appropriate [09:34] mikeal has joined the channel [09:34] SubStack: nah I use qwerty [09:34] SubStack: used dvorak for a while but stopped when that computer's disk died [09:35] sechrist: how hard is it to go from qwerty to dvorak? [09:35] SubStack: not hard [09:35] SubStack: maybe I'll start up again [09:35] sechrist: it took me about a week to go from normal layout to a split-section ergo keyboard [09:35] sechrist: and that was just qwerty [09:35] SubStack: shit and I used to know morse code too, I need to relearn that [09:35] sechrist: node-morse [09:35] SubStack: yes! [09:36] sechrist: dnode morse [09:36] sechrist: tap space bar to tell node what to do! [09:36] pyrotechnick: SubStack: if i'm not mistaken there's no compiled static file i can include on the client [09:39] sechrist: maaan [09:39] ewdafa has joined the channel [09:39] pyrotechnick: mmm [09:39] sechrist: whenever I see a pull request get pulled into the origin master I get all happy [09:39] pyrotechnick: into what [09:39] sechrist: github dopamine [09:39] hasenj has joined the channel [09:39] sechrist: well erm [09:39] pyrotechnick: anything? [09:39] sechrist: whatever it was forked from [09:39] pyrotechnick: but anything? [09:39] pyrotechnick: lol [09:39] pyrotechnick: thats cool [09:41] sechrist: anybody know the mac channel on freenode? [09:43] saschagehlich has joined the channel [09:43] echosystm: #macosx [09:46] MikhX has joined the channel [09:54] saschagehlich: who else - except rauchg - is working on socket.io? [09:55] echosystm: guess what SubStack, after all that fking around, it turns out floats aren't even an official ASN.1 datatype. lol. [09:55] echosystm: so i don't think i'm going to bother finishing it :P [09:55] echosystm: i was writing a testing server in java and noticed it had no support for floats at all, so i think its safe to leave it out [09:57] easternbloc has joined the channel [09:58] matjas has joined the channel [10:03] SubStack: echosystm: what luck! [10:04] Max-Might has joined the channel [10:04] sechrist: What are you using asn.1 for? [10:04] echosystm: snmp [10:04] sechrist: ah ok [10:05] hassox has joined the channel [10:05] echosystm: i'm basically trying to make node the defacto network programming language at my work [10:05] sechrist: ASN.1 implementations scare me [10:05] echosystm: so i need to write a few modules for such things [10:05] sechrist: at least C based ones [10:05] sechrist: over the last few years I've encountered several security problems [10:06] echosystm: well, snmp isnt really that complicated [10:06] sechrist: I mean ASN.1 in general [10:06] echosystm: i dont think it uses a lot of the stuff in ASN.1 [10:06] sechrist: the spec is kind of loose [10:06] echosystm: yeah [10:07] echosystm: i'm only implementing the core primitives, thats all snmp needs [10:07] sechrist: I am interested in snmp [10:07] sechrist: I'll be having to write some monitoring tools in node soon I'm sure [10:07] echosystm: its a pretty sweet platform for that kind of thing, i reckon [10:08] echosystm: that and i just have a love-hate thing for perl :P [10:08] saschagehlich: rbranson: ping [10:09] SubStack: perl needs a real async even system [10:09] saschagehlich: rbranson: you posted that CLOSE_WAIT issue on Socket.IO-node 2 months ago, right? [10:09] sechrist: your inf is perl? [10:09] sechrist: man I thought my company's was bad and it's python [10:09] saschagehlich: sechrist: python is cool! :) [10:09] SubStack: I like perl more than python personally [10:10] sechrist: python has reached the end of it's innovation [10:10] SubStack: and I've done an awful lot of both [10:10] saschagehlich: sechrist: which does not mean that it's not cool actually [10:10] sechrist: that is true [10:10] sechrist: http://www.paulgraham.com/pypar.html [10:11] sechrist: note the date though [10:11] saschagehlich: well yeah, everything seems to be outdated. which was the reason why I switched over to node.js recently [10:11] sechrist: if you substitute python with node in that article [10:11] altamic has joined the channel [10:11] sechrist: it's relevant [10:12] stride: yeah, the mainstream adoption of python is a bit greater nowadays than it was 2004 :) [10:12] saschagehlich: good choice :) [10:12] sechrist: companies are just starting to post job listings with nodejs [10:12] stride: .oO(The Node.JS Paradox) [10:12] sechrist: which is fantastic [10:12] saschagehlich: definitely but in my eyes node.js or most of the modules are not stable enough to use it for customer projects [10:13] saschagehlich: we did an ipad app lately and we wrote the backend in node.js. it was cool, but it took us too long since the mongodb support is crappy. now we are rewriting it in rails :/ [10:14] fly-away has joined the channel [10:15] SubStack: you can fix that with dnode! [10:15] stride: meh, I was looking at using the mongo bindings fors a document store in a side-project. crappy as in unusable or crappy as in unstable saschagehlich? [10:16] SubStack: just hack up a ruby service for your db and tie it to your node systems with dnode and dnode-ruby [10:16] saschagehlich: stride: crappy as in unstable as far as i remember. I wasn't influenced in the backend development that much, I just heard the guys swearing about it [10:16] SubStack: I did a similar thing for browserling although the db server is also node.js [10:17] saschagehlich: well actually we wrote a mongodb support on our own in the end, I think [10:17] sechrist: my use of my nodejs modules has cut down [10:17] stride: saschagehlich: okay, thanks [10:17] sechrist: I stopped npm installing and using every cool project I saw [10:17] SubStack: it helps if you don't have legacy code I think [10:17] SubStack: but then that is true of pretty much anything [10:18] saschagehlich: sechrist: well yea, I'm writing the most stuff myself as well - just using the modules I really need. and it turns out that even those I'm using are unstable [10:18] masahiroh has joined the channel [10:18] saschagehlich: e.g. socket.io - lots of bugs and rauchg seems to be vanished [10:19] sechrist: that is one project that is stable for me [10:19] sechrist: use tagged releases [10:19] sechrist: I was checking out master and quickly realized I was retarded [10:20] saschagehlich: sechrist: no matter which tag I use - opera is not supported and websockets result in CLOSE_WAIT connections which makes you go crazy since you will reach your open file limit pretty fast [10:21] saschagehlich: and if you have a look at the issues on github you will see that it's not that stable... :( [10:21] sechrist: there's heartbeats though [10:22] sechrist: half open connections and shit shouldn't be occuring [10:22] sechrist: and rauchg hasn't disappeared [10:22] stride: he [10:22] sechrist: sio is in active development O.o [10:23] sechrist: but yeah the opera problems suck [10:23] saschagehlich: sechrist: well, didn't see him here for a while [10:24] saschagehlich: and the logs tell me that he just logged in and logged off again [10:24] sechrist: oh, being in here and actually working on something are two different things [10:24] saschagehlich: well yes, that's true [10:24] sechrist: https://github.com/LearnBoost/Socket.IO-node/issues#issue/118 [10:24] sechrist: LOL [10:24] sechrist: ACTION EXTREME TESTING!!!! [10:25] saschagehlich: lol I've seen that [10:25] Fullmoon has joined the channel [10:26] sechrist: for opera -- it might just be best to make them fall back onto a slower transport for now [10:26] saschagehlich: well yea, the only thing that could work cross-domain is jsonp i guess [10:26] sechrist: the way i've been using socketio is for web applications that don't necessarily need super high fast throughput message passing, but benefit if possible [10:27] sechrist: wait -- you're doing it cross-domain? [10:27] saschagehlich: yes [10:27] sechrist: that introduces all kinds of mess [10:27] saschagehlich: but I had no other choice [10:27] sechrist: how so? [10:27] saschagehlich: doing video conversion on 40 servers and I have to show the user a progress bar [10:28] sechrist: and? [10:28] Wizek_ has joined the channel [10:28] sechrist: granted I have a hacked up branch of socketio [10:28] sechrist: but I have haproxy in front of the non-websocket transports [10:28] sechrist: and the websocket transport on a non-80 port [10:28] sechrist: everything we have is load balanced and ha, so I had to make some adjustments [10:29] sechrist: but it works fine [10:29] sechrist: samedomain/socket.io urls route to socket.io daemons [10:29] sechrist: rather than the apaches/nginxes [10:29] sechrist: it depends on how crafty you want to be :) [10:30] bsdguru has joined the channel [10:31] saschagehlich: well yea, I have to say that it works pretty good except for the close_wait connections and the lack of opera support [10:31] sechrist: I was talking about implementation other than anything [10:31] sechrist: if you control the domains there's no reason you need a different domain :) [10:32] sechrist: unless you can't just add stuff to your architecture willy-nilly :) [10:32] pyrotechnick has joined the channel [10:34] saschagehlich: well yes... let's see how I do that [10:34] sechrist: now granted there's some tough assumptions by putting something on a port other than 80/443 [10:35] sechrist: With what we do, we deal with corporate environments that block off just about everything outbound [10:35] sechrist: kind of annoying [10:36] mraleph1 has joined the channel [10:40] common- has joined the channel [10:43] saschagehlich: well I don't think that this will work for me - my architecture is a bit more complicated [10:46] femtoo has joined the channel [10:52] skohorn has joined the channel [10:54] ph^ has joined the channel [11:01] Tim_Smart has joined the channel [11:02] stride: is there a "catch all" like thing for the npm scripts section (I want them all to run by a single script) [11:02] stride: ? [11:04] masahiroh has joined the channel [11:04] yrashk has joined the channel [11:05] echosystm: whats the best node persistence framework? [11:05] echosystm: if any [11:06] lupomontero has joined the channel [11:06] altamic has joined the channel [11:08] ph^_ has joined the channel [11:10] ROBOd has joined the channel [11:11] pyrotechnick: echosystm: like database? [11:11] echosystm: yes [11:11] pyrotechnick: echosystm: or you don't mind? [11:11] pyrotechnick: just want to play with something? [11:11] echosystm: no [11:11] echosystm: i'm looking for an ORM [11:11] pyrotechnick: okay [11:11] pyrotechnick: rapid is for redis [11:11] echosystm: i know there is persistence.js, but it oseems to only support mysql [11:11] pyrotechnick: mongoose is for mongodb [11:11] pyrotechnick: NETSPLIT [11:11] pyrotechnick: NETSPLIT [11:11] pyrotechnick: echosystm: what db [11:11] pyrotechnick: u want an agnostic one? [11:11] echosystm: well, if i had to use an sql database, it would probably be postgres [11:11] pyrotechnick: same [11:11] pyrotechnick: but we dont [11:11] pyrotechnick: but postgres rocks [11:11] pyrotechnick: umm [11:11] pyrotechnick: there's an adapted for postgres dont know about ORM [11:11] pyrotechnick: try perstore [11:11] echosystm: to be honest though, i'm really looking for an in-memory database that can dump to disk in the background [11:11] pyrotechnick: thats redis [11:11] ron_frown: resid [11:11] pyrotechnick: if i've ever heard it [11:11] ron_frown: redis [11:11] pyrotechnick: redis [11:11] pyrotechnick: also [11:11] mape has joined the channel [11:11] desaiu has joined the channel [11:11] AAA_awright has joined the channel [11:11] kr4fty has joined the channel [11:11] jtsnow has joined the channel [11:11] kawaz_home has joined the channel [11:11] jwcooper has joined the channel [11:11] joeshaw___ has joined the channel [11:11] squeek has joined the channel [11:11] xmux has joined the channel [11:11] hober has joined the channel [11:11] TheEmpath has joined the channel [11:11] janne has joined the channel [11:11] bruse has joined the channel [11:11] mfb has joined the channel [11:11] flippyhead has joined the channel [11:11] maix has joined the channel [11:11] sveisvei has joined the channel [11:11] broofa has joined the channel [11:11] kuya has joined the channel [11:11] aurynn has joined the channel [11:11] sanslocust has joined the channel [11:11] sideshow has joined the channel [11:11] rudebwoy has joined the channel [11:11] MrNibbles has joined the channel [11:11] ollie has joined the channel [11:11] tmzt has joined the channel [11:11] Silks has joined the channel [11:11] mrtrosen has joined the channel [11:12] ron_frown: has there been any more development into node.js native for windows? [11:12] pyrotechnick: it will have diskstore soon [11:12] pyrotechnick: which makes it even more badass [11:12] pyrotechnick: u want rapid [11:12] under__ has joined the channel [11:12] pyrotechnick: https://github.com/visionmedia/rapid [11:12] pyrotechnick: yes [11:12] ron_frown: cygwin is a big joke=( [11:12] kjeldahl has joined the channel [11:12] pyrotechnick: shh [11:13] pyrotechnick: 0.3.4 has initial mingw support [11:13] ron_frown: what does initial mingw support? [11:13] ron_frown: meaning stubs are there but not actually running through it? [11:14] d0k has joined the channel [11:15] augustl has joined the channel [11:16] derren13 has joined the channel [11:16] ROBOd: hello [11:17] ROBOd: what's the correct way to check for the existance of a file/folder? [11:19] chapel: what about SUA? [11:22] Stephen has joined the channel [11:22] pekim: ROBOd: Maybe something like - require('fs').stat('/path', function(err, stats) {console.log(stats.isDirectory())}) [11:22] pekim: ROBOd: or stats.isFile() [11:23] ROBOd: pekim: hah, i didn't see that in the api [11:23] pekim: There might be something better, I'm not sure. [11:23] ROBOd: thanks for pointing that out [11:24] altamic has joined the channel [11:26] pyrotechnick: SubStack: u there? [11:27] twoism has joined the channel [11:27] Jonasbn__ has joined the channel [11:31] rtuin has joined the channel [11:32] SamuraiJack has joined the channel [11:33] Country has joined the channel [11:33] broofa: Is there any consensus on which of the flow control modules is "the best"? https://github.com/ry/node/wiki/modules#async-flow [11:35] broofa: Specifically looking for one that allows you to manage async call dependencies. [11:37] jimt has joined the channel [11:38] siong1987 has joined the channel [11:46] svnlto has joined the channel [11:51] tanepiper: i like Seq [11:51] chapel: SubStack made Seq [11:54] ron_frown: I want to automate a non node.js server connecting to node.js and pushing messages here and there... is there a concievable reason why I'd want to resort to a sort of a http post handler over say actually using sockets to connect and send away? [11:54] ron_frown: my communications doesnt need to be bidirectional [11:55] ron_frown: and does node.js hose regular socket communications or is that simulated under the scenes with stuff like comet [11:55] stride: nah, net.Socket is just a regular tcp socket [11:56] saschagehlich: does jsonp-polling not send heartbeats? (socket.io) [11:56] stride: uh, net.Server [11:56] saschagehlich: all my connections get closed after 8 seconds (options.closeTimeout) [11:57] ron_frown: sweet.. if I can manage to get the tls stuff built etc [11:57] ron_frown: I think I'll be golden with node.js [12:03] ROBOd: we have fs.rename() to rename/move files and fs.unlink() to delete them. how about copy? [12:05] matjas has joined the channel [12:07] saschagehlich: ROBOd: I guess there is no copy function yet. just write your own, use fs.createReadStream, fs.createWriteStream and util.pump(readstream, writestream, callback) [12:08] saschagehlich: ROBOd: http://stackoverflow.com/questions/4568689/move-file-to-a-different-partition-using-node-js [12:08] ROBOd: thanks saschagehlich [12:08] saschagehlich: ROBOd: or use child_process.exec("cp ... ...") [12:08] ROBOd: hehe, i'd avoid cp ;) [12:09] stevemc has joined the channel [12:09] skm has joined the channel [12:10] broofa: tanepiper: chapel: Seq looks interesting. API "feels" a bit heavy - not sure how I feel about mixing all the array semantics in with the flow control. I guess there are use cases for that, but wouldn't it be better to have the enumerable-ish API be separate? part of Array rather then Seq? :J [12:14] chapel: well there is Step [12:14] dguttman has joined the channel [12:15] broofa: chapel: yeah, that was the other one I was looking at. [12:16] Kingdutch has joined the channel [12:18] kawaz_air has joined the channel [12:24] saschagehlich: does anyone know why rauchg gave the jsonp-polling in socket.io a closeTimeout so that a connection gets closed after 8 seconds? [12:24] siong1987 has joined the channel [12:27] SamuraiJack has joined the channel [12:30] svnlto has joined the channel [12:30] mpoz2 has joined the channel [12:31] elijah-mbp has joined the channel [12:36] saschagehlich has left the channel [12:37] saschagehlich has joined the channel [12:42] rtuin_ has joined the channel [12:45] siong1987 has joined the channel [12:47] daveyjoe has joined the channel [12:51] aklt has joined the channel [12:52] lupomontero has joined the channel [13:04] void_ has joined the channel [13:04] Gruni has joined the channel [13:07] Evet has joined the channel [13:08] lupomontero has left the channel [13:10] Evet: i still dont want to use nginx [13:11] squeek: Why not? nginx is pretty damn nice to use. [13:14] Evet: squeek: its pretty damn pain in the ass to develop web applications in C as nginx core module [13:15] squeek: oh. well, when you're digging that far into nginx, I can understand. [13:15] augustl: nginx seems pretty monolithic, internally [13:15] squeek: it's totally monolitic - hence modules having to be baked into it at compile time. [13:15] iszak: I can't imagine how apache would be in comparison to nginx. [13:15] augustl: I wonder if the whole server crashes if a module crashes [13:16] Evet: its very easy to crash event mechanism with a module [13:16] xla has joined the channel [13:18] zomgbie has joined the channel [13:20] Evet: anyways, do i still need a reverse proxy front of node.js for tcp client/server applications? [13:20] charlenopires has joined the channel [13:22] chapel: you dont need one [13:23] Evet: node.js is multithread? [13:24] ph^ has joined the channel [13:25] Evet: an event based C server can handle 7k requests/second per cpu [13:26] faure has joined the channel [13:26] charlenopires has joined the channel [13:30] zomgbie has joined the channel [13:32] chapel: you can scale node.js in a lot of different ways [13:35] Evet_ has joined the channel [13:36] Evet_: if node.js uses only one core, and it can serve http requests near 5k/second. its great [13:38] chapel: its all in how you program it [13:38] Evet_: assume "hello world" [13:38] masahiroh has joined the channel [13:39] chapel: hello world is fast [13:39] V1__ has joined the channel [13:39] chapel: but its really simple [13:42] Evet_: welcome node.js, goodbye c [13:44] SvenDowideit has joined the channel [13:44] perlmonkey2 has joined the channel [13:46] V1: Finally, i found a way for users to stop stealing my IRC nickname [13:46] bencc has joined the channel [13:46] augustl: /msg nickserv? :) [13:47] V1: almost ;) [13:48] V1: ./ns set enforce on [13:50] broofa: _Evet: I benchmarked node.js at 9K req/sec/core on a quad core machine. Scaled linearly across 4 cores. 'Used spark2 to spin up an instance per core and got ~36K/sec. [13:50] broofa: ^^^ for a simple "hello world" test. [13:51] broofa: ^^^ http://pastie.org/1442533 [13:53] Kingdutch: V1: Isn't that done by default for registerred nicks? [13:53] Kingdutch: Also, it's cool to disable that, let someone have your nick, and just ghost em when you come online [13:53] augustl: I have npm installed. How do I run a node script with npm loaded? :S [13:53] Evet_: broofa: great! [13:54] broofa: Evet_: that was on Intel Xeon, 2.5GHz. [13:54] Kingdutch: Evet_: Lol at your hello node.js, goodbye C comment [13:54] V1: Kingdutch: Nope it's not set by default. I also expected that but that's not the case [13:54] Kingdutch: C can be faster than Node.JS [13:54] Kingdutch: V1: Hmm one of freenode's weirdnesses I suppose, ghosting's still fun though [13:55] V1: Kingdutch: ghosting is fun, but sometimes they automatically re-capture the nick after they are ghosted ;( [13:55] chapel: Kingdutch: sure it can be faster, but the difference in how easy it is to code really tips in node's favor [13:55] V1: so spamming thing with /ns ghosts can be annoying [13:55] Kingdutch: Right, true [13:55] Kingdutch: You beat me to it chapel [13:55] broofa: Kingdutch: yeah, but I'm finding that node can be comparable in some cases. E.g. check out my node-uuid module. It acheives near native performance. [13:55] Kingdutch: V1: Hmm ok, then yeah, what you posetd helps [13:55] Kingdutch: I only just got into node so no clue what your uuid module does [13:56] Kingdutch: I'm just wondering if I should use MooTools or not [13:56] Evet_: node.js is faster than C while parsing plain-text requests [13:56] Kingdutch: Being able to use classes like I'm used to seems a lot nicer than all the prototype stuff [13:56] bencc1 has joined the channel [13:56] Kingdutch: Evet_: Node.js == C [13:56] augustl: anyone on running arbitrary javascript files with npm loaded? [13:57] Kingdutch: So if you made a C app to do the exact same thing as yourapp.js, C would probably win [13:57] broofa: generates UUIDs. Written in pure JS. As good/better than native libuuid implementation though. (but I play a lot of tricks to accomplish that. :-) I'm sure libuuid could be improved to out do my module.) [13:57] Kingdutch: Hmm ok, sounds nice [13:57] broofa: augustl: "node myscript.js" should work. [13:57] Evet_: Kingdutch: like, converting js to asm? [13:57] broofa: not sure what npm has to do with anything. [13:57] augustl: broofa: it alters require.paths, for example [13:58] broofa: no, it doesn't. or shouldn't. [13:58] augustl: broofa: really? [13:58] broofa: yup. sounds like you may not have it installed properly. [13:58] augustl: then how does npm make stuff available to require()? [13:58] broofa: It puts it inside node's install directory. [13:58] Kingdutch: Evet_: Node.js is writting in C, which means that if you write what you do in Node.JS in C, the C version will be faster, simply because you have the overhead of parsing the Javascript, although Node.JS code might be faster than _your_ C code since Node.JS might do some internal optimisations [13:59] Kingdutch: iirc [13:59] augustl: broofa: everything is in ~/.npm on my system [13:59] augustl: it doesn't have permission to alter node itself, which is owned by root [13:59] Evet_: Kingdutch: node.js seems as fast as nginx [14:00] broofa: augustl: I have npm and node installed in ~/local, as per npm's suggestion. [14:00] augustl: Kingdutch: parsing the JavaScript isn't an issue, running it is. [14:00] augustl: broofa: ah you're rignt. I should add npm to the NPM_PATH env variable [14:00] broofa: Kingdutch: while strictly true, the V8 JIT logic is pretty good and can (sometimes) produce more efficient bytecode. [14:00] augustl: err, NODE_PATH [14:00] broofa: augustl: yup [14:01] Evet_: http://shootout.alioth.debian.org/u32/performance.php?test=regexdna [14:01] Kingdutch: Evet_: Because nginx is a generall app to do stuff (Never really heard of nginx), if you write C code (Not talking nginx) to do the exact same thing as your Node.JS code and nothing more, the C should be faster [14:01] Kingdutch: broofa: Hence the underline on _your_ and that node.sj might be faster [14:01] Kingdutch: node.js* [14:01] rwhitby: a single roundtrip to disk will swamp any translation overhead from JS to C. Focus on the algorithm and IO, not the language. [14:02] augustl: require("foo") - that will look for "foo.js" and "foo/index.js" in the NODE_PATH and require.paths, right? [14:02] broofa: Kingdutch: yeah, node performance can be quite good, but you're at the whim and mercy of V8. The nice thing is that if you *really* need good performance, you can always implement your own binding to native code and dive down into C-land. [14:02] broofa: augustl: yes [14:03] bencc has joined the channel [14:03] broofa: augustl: don't recall if it'll find "foo/index.js" - not sure about exact path resolution logic. [14:03] Kingdutch: broofa: True [14:04] broofa: augustl: http://nodejs.org/docs/v0.3.4/api/all.html#module_Resolving [14:04] augustl: thanks [14:05] Evet_: broofa: 9k/sec per core is really good performance. maybe its because v8 parses requests better than nginx parser [14:05] augustl: that's odd. "echo $NODE_PATH" prints "/home/augustl/.npm/node_libraries". "node foo.js" prints "undefined" - foo.js contains "console.log(process.env.NODE_PATH)" [14:06] broofa: Evet_: perhaps. I recall Ryan saying they've done a lot of work to make HTTP parsing fast. [14:06] augustl: why wouldn't node pick up that environment variable? [14:06] sambao21 has joined the channel [14:07] broofa: augustl: NODE_PATH only applies to how modules are located when you do a require(). You need to provide the explicit path to your script on the node command line. [14:07] augustl: broofa: you probably misunderstood [14:07] broofa: oh, sorry [14:07] augustl: I don't do any requires here, I just print process.env.NODE_PATH [14:08] augustl: if I do NODE_PATH="foo" node foo.js, it prints "foo" [14:08] augustl: so it only picks up "in-line" environment variables for some reason [14:08] broofa: augustl: do "export NODE_PATH" [14:08] augustl: doh :) [14:09] augustl: user error [14:09] augustl: NODE_PATH is not in "env" either. Forgot to export. [14:12] augustl: regarding v8 optimizations. How good is it at optimizing file IO etc? Since that's not a part of the browser runtime. [14:13] mraleph1: file IO has nothing to do with v8 [14:13] broofa: augustl: would have to look at the source, but I suspect most of that stuff is just bindings around the native C apis. [14:14] augustl: ah [14:15] augustl: semi related: if you want to provide an environment where anyone can execute code, you'd want to sandbox it. Is JavaScript and V8 a good choice here? [14:16] mraleph1: v8bot sitting here is a good example of sandboxes v8 [14:17] mraleph1: *sandboxed [14:17] broofa: mraleph: where's the source for that bot, btw? [14:17] broofa: mraleph1: ^^^ [14:17] mraleph1: I saw something on github [14:17] Kingdutch: Does Node.JS lend itself to say a web framework? [14:17] broofa: found it https://github.com/eisd/v8bot [14:17] Kingdutch: Because I'm thinking of doing something like that, where other people would deploy it and build with it [14:18] broofa: Kingdutch: you mean like express? [14:18] broofa: http://expressjs.com/ [14:18] Kingdutch: The problem is that Node.JS allows for some pretty unsandboxed behaviour by default which means that people could just use like exec [14:18] augustl: since V8 apparently is also very good at performance, it seems like JavaScript is a perfect choice for that [14:18] Kingdutch: And I wouldn't want to have webapps that can run anything on my PC as a server admin [14:18] augustl: Kingdutch: you can run code in a blank context though [14:18] Kingdutch: Hmmm [14:18] Kingdutch: ? [14:18] Kingdutch: I'm interested [14:18] augustl: Kingdutch: with none of the global objects node provides are available [14:19] bencc has joined the channel [14:19] Kingdutch: expressjs looks like a weird MVC implementation, not quite what I'm looking for [14:19] Kingdutch: My main concern though is that if I create something and want other people to use it, I have to make it easy to deploy [14:20] Kingdutch: For Node.JS you need a (virtual) server since you need to run node [14:20] Kingdutch: And that means I limit deploy ranges for my clients [14:20] Kingdutch: If you get what I mean [14:20] augustl: Kingdutch: new Script("scriptIsHere();", "optional filename.js").runInNewContext({}); [14:20] augustl: where var Script = process.binding("evals").Script; [14:21] augustl: that's node 0.3, the API is slightly different in 0.2 [14:21] Kingdutch: Yeh [14:21] Kingdutch: but anyone can just modify that though [14:21] augustl: then you can choose what to provide in runInNewContext [14:21] Kingdutch: :') [14:21] augustl: you choose where to execute the user scripts [14:22] augustl: you do that with new Script() [14:22] augustl: I don't see how anyone can "just modify that" [14:22] Kingdutch: augustl: Think like OS-Commerce, or some of the e-commerce suites [14:22] Kingdutch: Basically people will use modules to extend functionality [14:22] Kingdutch: but no one is prevented from hacking away at the guts [14:23] Kingdutch: The problem is that, with PHP what people can do is limited to what PHP provides [14:23] augustl: thought we were talking about building a custom system [14:23] Kingdutch: which means that a server admin can configure a PHP/Apache server and let people do stuff with it without worries [14:23] Kingdutch: Node.JS needs to be executed and can run other programs, which means that it needs a (Virtual) private server [14:23] Kingdutch: Thus it's much more expensive to deploy a node app than a php app [14:23] Kingdutch: right? [14:24] Kingdutch: That's why I'm wondering, given that if node.js lends itself for say an e-commerce framework [14:25] broofa: Kingdutch: Mainstream webhosts generally don't (yet) have shared server offerings for node, if that's what you're asking. [14:25] Kingdutch: That's pretty much what I'm trying to figure out [14:25] broofa: that said, if you have an app of any significant size/traffic, you'll want your own host anyway, and companies like Heroku and Joyent are offering decent node hosting. [14:26] Kingdutch: It means that if I write e-commerce software in PHP I'd have a much larger potential userbase than with Node-JS for the simple reason of easier deployment =/ [14:26] broofa: Sure. And you'd also have all your code in PHP. :P [14:27] Kingdutch: Well yeh [14:27] broofa: There are plenty of non-node solutions to traditional webapp problems. [14:27] Kingdutch: But if you make a good e-commerce suite than people won't generally _have_ to work with the code [14:27] Kingdutch: I'm just thinking Node.JS could be much faster than your average PHP app [14:27] Kingdutch: And being able to write one language on both ends of the spectrum is really nice [14:28] qFox has joined the channel [14:28] chapel: Kingdutch: you could open source it and host it as a service [14:28] chapel: instead of trying to sell it [14:30] Kingdutch: I never said anything about selling it [14:30] chapel: oh [14:30] Kingdutch: Just thinking about userbase [14:30] chapel: well node is exploding [14:30] Kingdutch: (I consider people who download opensource stuff clients, even though they don't generate revenue) [14:30] Kingdutch: Yeh I think I'm just gonna go for it [14:31] Kingdutch: LEaves me the question [14:31] chapel: its fun too [14:31] Kingdutch: To MooTools or not to MooTools [14:31] chapel: up to you [14:31] broofa: Kingdutch: orthogonal to your decision to use node .vs. php [14:32] broofa: Kingdutch: jquery .vs. dojo .vs. mootools .vs. .... tons of js frameworks out there. pick your poison. [14:32] broofa: broofa: Personally, I find myself recommending underscore.js to take some of the sting out of low-level JS development, and jquery for DOM/UI/AJAX. [14:32] boaz has joined the channel [14:34] SamuraiJack_ has joined the channel [14:35] Kingdutch: I know Jquery [14:35] Kingdutch: and it's nice [14:35] Kingdutch: but Jquery isn't serverside [14:36] broofa: Kingdutch: is mootools? [14:36] Kingdutch: And I saw a presentation on MooTools, and the classes the way I'm used to look nice [14:36] Kingdutch: Yeh mootools can be used serverside [14:36] Kingdutch: http://davidwalsh.name/mootools-nodejs#bio-pojer [14:36] Kingdutch: Remove the hashtag [14:36] Kingdutch: lol [14:36] Kingdutch: but yeh [14:37] broofa: Kingdutch: oh, so your just looking for a lib that will let you program in a more traditional OO model? [14:38] broofa: You'll want to be a little careful with that, because the hoops mootools (and other libs) have to jump through to support things like inheritance can ding performance. [14:38] Kingdutch: Pretty much, I don't like the JS prototype stuff [14:38] Kingdutch: makes stuff look ugly imo [14:38] Kingdutch: Yeh that's been floating in the back of my mind [14:38] Kingdutch: but honestly [14:38] Kingdutch: Someclass.prototype.func = function() { }; [14:38] Kingdutch: =/ [14:38] Kingdutch: Why is that prototype word even in there? [14:42] svnlto has joined the channel [14:42] MattJ has joined the channel [14:45] Kingdutch: broofa: So ya ^^^ [14:46] broofa: Kingdutch: *meh* there's been a trend lately toward more functional programming styles in JS. You won't find stuff like mootools or prototype in very many nodejs modules. [14:47] broofa: prototype -> "Prototype.js" [14:47] broofa: bind() and extend() are 95% of what you need. [14:48] Kingdutch: Hmm ok [14:48] Kingdutch: I don't understand the prototype -> "Protoptype.js" but [14:48] Kingdutch: -but [14:48] Kingdutch: or the bind() and extend() functions [14:48] Kingdutch: ubt ya [14:48] broofa: http://prototypejs.org/ [14:49] broofa: Kingdutch: Make sure you're comfortable with how closures work in JS, then just prowl around the code of some of the more popular modules to see how people are writing code. [14:50] broofa: Oh, and I suppose you should also look at the Joose library as well, if you're considering mootools. [14:50] Kingdutch: hmm ok I'll take a look around [14:50] broofa: but like I said, I can't recommend one over the other since I don't use many libs of that ilk [14:50] Kingdutch: but I basically just wanna do [14:50] rhio_ has joined the channel [14:50] broofa: http://code.google.com/p/joose-js/ [14:51] Kingdutch: var class = { var something; function something}; var class2 extends class = { function: someotherfunc { call this->function} } [14:51] Kingdutch: If you get what I mean in dirty code [14:52] Kingdutch: Is it bad that I want to be able to do that? [14:52] broofa: yeah, I know. fwiw, I began writing my own library to do that sort of thing - https://github.com/broofa/joos - but semi-abandoned it as I got more comfortable with functional styles. [14:52] Kingdutch: Hmm ok [14:52] Kingdutch: Meh I'll look into the way JS is supposed to do it [14:53] Kingdutch: I gotta go play sports first [14:53] Kingdutch: Cya later :) [14:54] darthdeus has joined the channel [14:58] maushu has joined the channel [15:01] mattc has joined the channel [15:01] kawaz_air has joined the channel [15:02] jamescarr_ has joined the channel [15:03] confoocious has joined the channel [15:03] confoocious has joined the channel [15:03] drostie has joined the channel [15:05] confoocious: Duostack looks pretty decent. [15:05] Imperion has joined the channel [15:08] V1: Anyone here have experience with sending emails from Node.js using google SMTP? [15:09] MattDiPasquale has joined the channel [15:09] adambeynon has joined the channel [15:12] siong1987 has joined the channel [15:15] Wizek_ has joined the channel [15:16] Imperion: okay, um, I'm trying to get sessions to work in Express [15:16] Imperion: I've added app.use(express.session()); to my configure() [15:16] Imperion: but req.session is undefined [15:16] Imperion: any ideas why this would happen? [15:17] Imperion: whoops [15:17] Imperion: seems I needed to put it up at the top [15:18] V1: Yup the structure of your configuration can make or break your app [15:22] stephen_mcd has joined the channel [15:27] daveyjoe has joined the channel [15:33] easternbloc has joined the channel [15:36] Max-Might has joined the channel [15:39] ben_alman has joined the channel [15:40] gartenstuhl has joined the channel [15:41] yumike has joined the channel [15:43] jchris has joined the channel [15:44] adambeynon has joined the channel [15:45] ashleydev has joined the channel [15:45] okuryu has joined the channel [15:46] lupomontero has joined the channel [15:47] lupomontero has left the channel [15:47] [[zz]] has joined the channel [15:48] nonnikcam has joined the channel [15:52] jimt_ has joined the channel [15:55] zorzar_ has joined the channel [15:59] felixge has joined the channel [16:02] stephen_mcd has joined the channel [16:04] Kryckan has joined the channel [16:06] aconbere has joined the channel [16:07] bingomanatee_ has joined the channel [16:07] Aria has joined the channel [16:11] charlenopires has joined the channel [16:15] zomgbie has joined the channel [16:17] bentruyman has joined the channel [16:18] themiddleman has joined the channel [16:21] zorzar_ has joined the channel [16:23] robotarmy has joined the channel [16:33] hobodave has joined the channel [16:33] confoocious has joined the channel [16:38] Yuffster has joined the channel [16:42] c4milo has joined the channel [16:47] vastak has joined the channel [16:47] ashleydev has joined the channel [16:47] overthemike has joined the channel [16:47] overthemike has left the channel [16:49] bingomanatee_ has joined the channel [16:50] bingomanatee_: Hey does anyone have a visio like tool in Ubuntu they like? [16:51] jpld has joined the channel [16:51] jpld has joined the channel [16:52] under_: dunno about ubuntu but dia is decent [16:52] sechrist: I need a tool like visio myself for architecture diagrams [16:52] sechrist: I haven't found anything decent :\ [16:53] sechrist: but I haven't looked that hard :) [16:53] under_: live.gnome.org/dia [16:53] sechrist: google needs an online one imo [16:54] pengwynn has joined the channel [16:54] Hello71 has joined the channel [16:54] Hello71 has joined the channel [16:54] under_: websequencediagrams.com is pretty nifty if it does what you want [16:55] zomgbie has joined the channel [16:57] cfq has joined the channel [17:01] derren13 has joined the channel [17:07] tekky has joined the channel [17:08] matjas has joined the channel [17:09] PyroPeter has joined the channel [17:09] ron_frown has joined the channel [17:10] mgutz: i like plantUml for text to UML diagrams [17:12] kriskowal has joined the channel [17:12] PyroPeter has joined the channel [17:13] bingomanatee_: thanks [17:14] bingomanatee_: hm... sounds like a great opportunity for an open source project. [17:14] zomgbie has joined the channel [17:15] bingomanatee_: Thanks. Specifically I need to do up some wireframes. [17:16] bingomanatee_: oh I just remembered gliffy.com. [17:16] bingomanatee_: they are pretty good. [17:19] saschagehlich: wtf - why does github append my pull request if I add some commits to my fork? [17:19] rsms has joined the channel [17:22] mgutz: good practice to create topic branches for commits [17:23] mgutz: for pull requests i mean [17:23] saschagehlich: that's pain in the ass. [17:24] mgutz: makes it easier for project owners though [17:26] saschagehlich: well yes, that's right [17:26] ashleydev has joined the channel [17:29] dipser has joined the channel [17:29] Thorn has joined the channel [17:37] Aria has joined the channel [17:37] ron_frown: is the ssl support decent in 2.6? [17:38] MattDiPasquale has joined the channel [17:41] inarru has joined the channel [17:42] PyroPeter has joined the channel [17:42] derren13 has joined the channel [17:43] cronopio has joined the channel [17:43] cronopio: Hi all!! [17:43] cronopio: ryah Congrats for the new relese with the https lib!!!! [17:44] cronopio: And congrats to all devs for this new release!!! [17:44] dguttman has joined the channel [17:44] zomgbie has joined the channel [17:44] void_ has joined the channel [17:45] cronopio: felixge thanks for node-formidable its a helpfull tool for my coworkers and me [17:47] broofa: What's the right way to handle ECONNREFUSED errors for http.Clients? [17:47] broofa: ^^^ is there an event or exception for this? [17:48] broofa: The only place it seems catchable is in process.on('uncaughtException') :P [17:48] saschagehlich: just put a try...catch around it [17:48] c4milo has joined the channel [17:49] broofa: saschagehlich: around what? the createClient() call? [17:49] broofa: that didn't seem to work. [17:49] ron_frown: how come ssl support seems to be... so consistently a problem in searching around on the net [17:49] c4milo has joined the channel [17:49] saschagehlich: broofa: no, around the cilent.request() [17:50] broofa: saschagehlich: not working either. [17:50] saschagehlich: huh? give me a second [17:50] saschagehlich: could you gist your code? [17:51] strmpnk has joined the channel [17:51] c4milo has joined the channel [17:52] c4milo has joined the channel [17:52] herbySk has joined the channel [17:53] c4milo has joined the channel [17:53] broofa: saschagehlich: hmm... might take a bit. [17:53] saschagehlich: ? just gist your code? :D [17:53] jimt has joined the channel [17:53] c4milo1 has joined the channel [17:54] zorzar_ has joined the channel [17:55] c4milo2 has joined the channel [17:55] c4milo1 has joined the channel [17:58] broofa: saschagehlich: https://gist.github.com/302a870be4ea0d5f5944 [17:58] SamuraiJack_ has joined the channel [18:00] broofa: If I comment out the uncaughtException handler, the stack shows the error getting thrown in (top) -> net.js:IOWatcher -> net.js:Client [18:00] broofa: saschagehlich: i.e. my code's nowhere in the stack, so not sure how I'd be able to catch. [18:00] saschagehlich: I'm having a look at it, one second [18:03] Yuffster has joined the channel [18:04] broofa: saschagehlich: cleaner gist: https://gist.github.com/ee48ffcaa8ac64f47a5b [18:05] mgutz: broofa: did you try putting the try/catch around `client.connect`? [18:06] derferman has joined the channel [18:06] Hello71 has joined the channel [18:06] Hello71 has joined the channel [18:07] cfq has joined the channel [18:07] q_no has joined the channel [18:07] felixge: cronopio: thanks [18:08] felixge: cronopio: what are you building? [18:08] saschagehlich: broofa: you can also do connection.on("error", function(e) { ... }); [18:08] kriskowal has joined the channel [18:09] saschagehlich: directly after your http.createClient call [18:09] namelessnotion has joined the channel [18:10] marlun has joined the channel [18:14] jchris has joined the channel [18:17] webr3 has joined the channel [18:19] mgutz: Do you guys like the sync naming convention? e.g. `readFile`, `readFileSync`. `readFile` could test the last argument for a callback. Fairly easy to identify if readFile is sync or async. `readFile('foox.txt')` or `readFile('foo.txt', function() {...})` [18:20] stride: fairly easy for new folks to just leave the parameter out (or simply forget it) as well [18:21] w0rse has joined the channel [18:21] broofa has joined the channel [18:21] broofa: saschagehlich: sorry, net connection died on me. find anything? [18:21] saschagehlich: connection.on("error", function(e) { ... }); [18:21] saschagehlich: right after your http.createClient call [18:23] broofa: ah, perfect - thx! [18:23] broofa: (and obvious in hindsight :P) [18:24] Fullmoon has joined the channel [18:26] ryah: mgutz: the 'Sync' is to make it more clear [18:30] arpegius has joined the channel [18:31] comster has joined the channel [18:33] EyePulp has joined the channel [18:34] ashleydev has joined the channel [18:41] Aria has joined the channel [18:43] charlenopires has joined the channel [18:43] mgutz: ryah: Understand. I'm creating a high level utilities library for things like `appendToFile`, `prependToFile` and I'm undecided whether to follow the convention. [18:44] gartenstuhl has joined the channel [18:45] clarkfischer has joined the channel [18:46] arpegius has joined the channel [18:46] clarkfischer: Anyone have any luck with zombie.js? [18:47] shinmei has joined the channel [18:50] mlins has joined the channel [18:51] muhqu has joined the channel [18:51] hij1nx has joined the channel [18:53] qnt4b has joined the channel [18:55] Aria: I got a brief test working, clarkfischer. What's up? [18:55] b_erb has joined the channel [18:59] bencc has joined the channel [19:01] clarkfischer: Aria: I can't seem to get zombie.js, html5 or JSDOM working. [19:01] Aria: Well, I've experience with two out of three! [19:01] Aria: (I wrote the html5 library. I really need to tighten up the API, it seems!) [19:02] clarkfischer: Ah! I thought I recognized the name! [19:02] binarypie has joined the channel [19:02] jimt_ has joined the channel [19:02] qnt4b: what's the best (working) postgres library? [19:02] Aria: What're you working with? [19:03] clarkfischer: Well, I'm trying to get just basic basic html parsing done. [19:03] clarkfischer: I've tried running the test snippets from the readme, as well as running the test suites [19:03] stride: is there something in node-amqp that let's me close() the connection after the current message is acknowledged? I'm running into Stream not writeable errors [19:03] indexzero has joined the channel [19:03] Aria: Heh. I need to maintain both of those. The test suite kinda got ripped out from under me in an API change and I haven't fixed it yet. [19:04] clarkfischer: Ah, no worries. I'm not too worried about testing, moreso just using. [19:04] Aria: Indeed. Let me prod the example and see if I can't get it up to date. jsdom changed APIs a bit, too. [19:04] Aria: DOMs may be standard, but the instantiation of them not. [19:04] clarkfischer: Heh [19:04] Aria: "So, starting with an empty DOM document...", etc. [19:05] Thorn: hello [19:05] misham has joined the channel [19:05] clarkfischer: One thing that I noticed is that jsdom (maybe?) requires you to explicity instantiate the document within the window [19:05] Thorn: I'm getting "Cannot find module 'tcp'" [19:05] Thorn: this is a built-in module, no? [19:06] Aria: Yeah, that's new, I think. [19:06] clarkfischer: And in your example, you create the window, then just reference window.document to the parser [19:06] Aria: I look away for 2 weeks over the December insanity and the whole API changed. [19:06] stride: Thorn: do you mean the net module? [19:07] Thorn: stride: I hiave a module which has require("tcp") in it [19:07] stride: Aria: is that renamed in HEAD? [19:07] Aria: Which, stride? 'net'? [19:07] stride: yeah [19:07] Thorn: 0.3.4 [19:08] Aria: 0.3.4 has net.Socket [19:08] Aria: (and I think net.Stream is still an alias of it.) [19:08] stride: hm. yeah, don't know what tcp is then [19:08] Aria: require('tcp') is 0.1.x, isn't it? [19:08] Thorn: I'm trying to run https://github.com/mwild1/xmppjs [19:08] stride: oh :) that might be right [19:09] jakehow has joined the channel [19:09] Thorn: see first line in https://github.com/mwild1/xmppjs/blob/master/xmpp.js [19:09] Aria: Yeah, that's going to need to be updated. [19:09] Aria: Have you looked at node-xmpp? [19:09] Thorn: no I haven't [19:09] Aria: https://github.com/astro/node-xmpp [19:09] Aria: I played with it a bit. It's not a horrible API if you ask me. [19:10] MattJ: xmpp.js works fine in 0.2, though it does need updating I know [19:10] MattJ: I just haven't had time recently :) [19:10] Thorn: has the api changed? or only the name? [19:12] springify has joined the channel [19:12] skohorn has joined the channel [19:13] qnt4b: postgres library pointer anyone? node-postgres example fails for me with current node. [19:14] qnt4b: and makes me feel the sadness. [19:14] Alex3000 has joined the channel [19:15] Aria: The name is most of it, Thorn. Possibly all xmpp depends on [19:15] Aria: Try 'net' instead of 'tcp' and see. [19:19] stepheneb has joined the channel [19:20] galaxywatcher_ has joined the channel [19:21] Thorn: that worked, thanks a lot [19:22] mlins has joined the channel [19:22] muk_mb has joined the channel [19:28] pekim has joined the channel [19:28] aredridel has joined the channel [19:29] blueadept has joined the channel [19:29] binarypie has joined the channel [19:30] Aria: Sorry about that, clarkfischer. I'll have an updated readme / example.js shortly. [19:31] clarkfischer: No worries, Aria. I'm in no particular hurry. I'm just excited at the prospect of a functional HTML5 parser for node! [19:31] Aria: Indeed. It's not perfect, but it does pass a good portion of the test suite. [19:31] Aria: The HTML5 algorithm is basically all edge cases, so there's tons more to do, but the bulk works. [19:33] saschagehlich has joined the channel [19:33] clarkfischer: It looks great. For my purposes, it will be more than sufficient. [19:34] Aria: Yeah. Could be faster, but I'm still trying to figure out which way to take it for speed. [19:34] ron_frown: should I theoretically be able to do ssl socket stuff without a http server bit [19:34] Aria: I fought with the sparse API for buffers vs rich for strings, but the slow creation of strings, etc. [19:37] xmux has left the channel [19:40] MattDiPasquale has joined the channel [19:40] boaz has joined the channel [19:41] bbttxu has joined the channel [19:41] pt_tr has joined the channel [19:44] pt_tr_ has joined the channel [19:45] bingomanatee_: More verbose documentation maybe? [19:46] pdelgallego has joined the channel [19:46] Aria: More verbose is definitely in the works, too. But after I make the API work more nicely with jsdom. [19:47] Aria: clarkfischer: v0.2.11 is out. New README.md and example.js [19:47] sivy has joined the channel [19:49] mgutz_ has joined the channel [19:50] bingomanatee_: JSdom itself has pretty crap docs. [19:50] bingomanatee_: A youTube walkthrough is a pretty low impact way to take people into your code. [19:51] bingomanatee_: I kind of hit a wall with it - but as it turns out there is no DOM in the IRC logs - so it wouldn't have helped me much anyway :D [19:51] clarkfischer: bingomanatee_: Tell me about it. I'm just trying to start up with it, and it's already a headache. [19:52] bingomanatee_: Well given that Aria's not getting paid for the effort I like to kee my suggestions positive and upbeat. [19:52] xla has joined the channel [19:53] clarkfischer: Definitely. [19:53] bingomanatee_: but I have to admit - walking the nodes in the tests I did was not easy for me. [19:53] bingomanatee_: Just a simple API list - "these are the methods you use to get nodes, this is how you walk through the node list, this is how you get a node's children" would help. [19:57] clarkfischer: Well, as Aria said and to tmpvar's credit, DOMs are standard. But a little HTML (or even txt) file detailing how to properly instantiate a DOM would be nice. [19:59] clarkfischer: Even if it were just decently commented and run through docco.... [19:59] pt_tr has joined the channel [19:59] pt_tr has left the channel [20:00] nook: Are there any native modules existing for getting OS/system information other then spawning standart nix commands and getting data from them? [20:00] jdalton has joined the channel [20:01] qFxo has joined the channel [20:02] femtooo has joined the channel [20:02] clarkfischer: nook: http://nodejs.org/docs/v0.3.3/api/process.html#process.platform ? [20:02] zomgbie has joined the channel [20:03] nook: aha, thanks [20:03] nook: Was reading 0.2 docs :/ [20:03] josephhitchens has joined the channel [20:03] _jdalton has joined the channel [20:03] mgutz_ has joined the channel [20:06] pt_tr_ has joined the channel [20:10] qFox has joined the channel [20:11] xSmurf has joined the channel [20:11] pt_tr_ has left the channel [20:15] bingomanatee__ has joined the channel [20:16] MikhX has joined the channel [20:16] c4milo has joined the channel [20:18] pt_tr has joined the channel [20:19] bingomanatee_: By the way there is docs in the html5 folder - however you have to build them; does anyone know how to build docs in node? Aria told me - I forgot. [20:22] clarkfischer: bingomanatee_: It's not node, it's a Makefile. [20:23] clarkfischer: bingomanatee_: Take a look at the Makefile. You can make the API docs with: make doc/api.html [20:25] V1 has joined the channel [20:26] bingomanatee_: thx [20:30] bingomanatee_: okay the above prompt responded with "api is already up to date" and when I browse to index I get a nice shell but no content [20:31] isaacs has joined the channel [20:31] CrypticSwarm has joined the channel [20:32] bingomanatee_: clarkfisher: have you been able to make the docs folder? [20:32] clarkfischer: bingomanatee_: Yeah [20:33] bingomanatee_: so when you typed make doc/api.html - what was the response you got - and were you doing it from a git/download or an npm installed html5? [20:35] clarkfischer: bingomanatee_: I've got a git download. [20:35] clarkfischer: try: rm doc/api.html && make doc/api.html [20:36] bingomanatee_: thx [20:37] clarkfischer: Basically the Makefile just passes doc/api.markdown through ronn.js (converts it to html), surrounds it with header/footer, and outputs it to doc/api.html [20:37] clarkfischer: And doc/index.html is a symlink to doc/api.html [20:37] MikhX has joined the channel [20:37] bingomanatee_: Error: ENOENT, No such file or directory '/home/bingomanatee/node/tests/html5/tools/ronnjs/bin/ronn.js' [20:37] Kryckan has left the channel [20:38] clarkfischer: Did you init the submodules? [20:38] clarkfischer: try: [20:38] bingomanatee_: nope [20:38] bingomanatee_: just pulled it [20:38] clarkfischer: git submodule init && git submodule update --recursive [20:39] bingomanatee_: that did a thing. [20:40] mikeal: ryah: you around? [20:40] pt_tr has joined the channel [20:40] pkrumins: we got our first paying customer! [20:40] pkrumins: :D [20:40] clarkfischer: To use example.js you'll need to build jquery too: cd deps/jquery && rake && cd - [20:40] SubStack: makin' monies with the node.js! [20:41] Aria has joined the channel [20:41] bingomanatee_: clarkfisher - this docs shows me how to assemble nodes into HTML - I want to read html and walk the tree - should I be looking at the jsnode docs for that? [20:42] bingomanatee_: how much and from who and how do you plan to share it with us? [20:43] clarkfischer has joined the channel [20:44] HAITI has joined the channel [20:45] bingomanatee_: k looks like docs in jsdom have what I need [20:45] Aria: mmm, yeah. I was just about to comment. [20:46] bingomanatee_: okay [20:46] clarkfischer: Aria: thanks for the update. I'm up and running now! [20:46] Aria: Great! [20:48] Aria: bingomanatee_: https://github.com/aredridel/html5/blob/master/lib/html5/treewalker.js is also a decent reference. [20:51] bingomanatee_: sweet. I think I had my breakthrough [20:51] HAITI has left the channel [20:54] vineyard has joined the channel [20:55] Aria: Excellent [21:02] blueadept has joined the channel [21:04] masahiroh has joined the channel [21:05] ryah: openssl's c style is making my eyes bleed [21:05] ryah: inarru: yes [21:05] ryah: er [21:06] ryah: mikeal: yes [21:06] elijah-mbp has joined the channel [21:06] hornairs has joined the channel [21:08] vineyard has joined the channel [21:11] isaacs: hahaha, one of the people in this article didn't take it as seriously as the others: http://www.infoq.com/articles/surviving-asynchronous-programming-in-javascript [21:13] matt_c has joined the channel [21:14] mlins has joined the channel [21:15] misham has joined the channel [21:17] gkatsev: isaacs: would that person be you, perhaps? [21:17] V1: "No. My flow control is the best." ;D? isaacs [21:17] isaacs: hahah [21:18] isaacs: slide was literally, "i am too lazy to come up with something new to talk about, so i'll talk about this thing that's laying around over hear" [21:18] isaacs: *here [21:18] isaacs: it was like grabbing a random appliance from your house and bring it in for show and tell. [21:20] arrty has joined the channel [21:21] mr_daniel has joined the channel [21:22] mgutz has left the channel [21:23] V1: =P [21:23] EyePulp has joined the channel [21:24] warz has joined the channel [21:26] clarkfischer: Anyone know if there is any way to keep JSDOM from executing