[00:00] SubStack: I had really sketchy internet when I pushed a patch
[00:00] SubStack: amazingly sketchy
[00:00] SubStack: alaskernet
[00:00] Raynos: I see
[00:00] jesusabdullah: I almost miss alaskanets
[00:01] jesusabdullah: at least you know they're too small to be outright assholes like comcast
[00:01] jesusabdullah: otoh it's local tiny telecoms struggling to give their users reasonabl dsl service
[00:01] SubStack: acs in kenai is terrible
[00:01] jesusabdullah: over hundreds of miles of buried cables
[00:02] jesusabdullah: It's a hard life for acs ;)
[00:02] jesusabdullah: That said, acs is my least fave out of the AK telecoms
[00:02] jesusabdullah: MTA is where it's at \m/
[00:02] SubStack: anyways, unpublishing this and republishing
[00:02] SubStack: although npm is not being cooperative
[00:02] SubStack: ALSO my flight got delayed until 6:33
[00:02] Sorella: SubStack, I knew I had something to tell you =/
[00:03] Sorella: ACTION ended up going with the previous version
[00:03] SubStack: isaacs: I keep getting 'socket hang up' trying to unpublish browserify 1.8.3
[00:03] SubStack: I may have put it into an inconsistent state
[00:05] astropirate has joined the channel
[00:06] JakeSays: so all of the sudden facebook is calling addMonths() on a Date instance..
[00:07] mAritz has joined the channel
[00:07] douguk has joined the channel
[00:08] mara has left the channel
[00:13] devongovett has joined the channel
[00:13] EhevuTov has joined the channel
[00:18] Sorella_ has joined the channel
[00:19] versicolor has joined the channel
[00:19] koo3 has joined the channel
[00:23] SubStack: isaacs: nevermind, it was crappy airport internet keeping unpublish from working
[00:25] ChrisMatthieu has joined the channel
[00:26] subbyyy has joined the channel
[00:26] SubStack: Sorella: does it work now?
[00:26] mandric has joined the channel
[00:27] jupiter has joined the channel
[00:29] ryanfitz has joined the channel
[00:32] heavysixer has joined the channel
[00:33] Juan77 has joined the channel
[00:34] rwaldron has joined the channel
[00:34] kadnare has joined the channel
[00:34] gigafied has joined the channel
[00:35] mc_greeny1 has joined the channel
[00:35] Sorella: SubStack, yep, it werks :3
[00:35] TimTim has joined the channel
[00:41] shapeshed has joined the channel
[00:42] benvie has joined the channel
[00:43] qmx: voodootikigod__: damn 140 chars :P
[00:43] gigafied: anybody here use swig for anything?
[00:43] qmx: gigafied: used in the past, mixed feelings about it
[00:43] dwhittle has joined the channel
[00:44] JarrodBell: anybody here from melb, australia?
[00:44] joshwnj: @JarrodBell yep
[00:44] gigafied: qmx: debating whether or not to use swig or mustache (hogan rather) with express
[00:44] JarrodBell: joshwnj: come chat in #nodejs.au
[00:46] k1ttty has joined the channel
[00:46] qmx: gigafied: heh, you meant and I understood
[00:46] qmx: gigafied: btw, ugly name collision
[00:46] qmx: :P
[00:47] gigafied: qmx: heh
[00:48] gigafied: that website makes me want to punch somebody
[00:48] voodootikigod_ has joined the channel
[00:48] kyonsalt has joined the channel
[00:48] xeodox has joined the channel
[00:49] xeodox: In express, how do you match a URL that may or may not have that parameter? app.get('/friends/:id*'
[00:49] xeodox: I want that to hit regardless if ID is provided
[00:49] dylang has joined the channel
[00:49] torvalamo: #express
[00:51] neoesque has joined the channel
[00:52] EuroNerd has joined the channel
[00:53] [[zzz]] has joined the channel
[00:54] qmx: gigafied: so you can imagine how is working with the original swig :P
[00:54] styol has joined the channel
[00:56] devongovett has joined the channel
[00:57] isufy has joined the channel
[00:58] Carmivore has joined the channel
[00:58] jaitaiwan has joined the channel
[00:59] Shaunzie has joined the channel
[01:00] Shaunzie: anyone have any experience with node-mongolian?
[01:01] trotter has joined the channel
[01:03] briancray has joined the channel
[01:05] LukeBrookhart has joined the channel
[01:05] LukeBrookhart: I keep getting the after rebooting and then trying to run a local NodeJS app: node: command not found
[01:05] LukeBrookhart: Any suggestions?
[01:05] LukeBrookhart: did I not install correctly
[01:06] erichynds has joined the channel
[01:06] Shaunzie: are you on linux or mac?
[01:06] Shaunzie: or windows?
[01:06] pizthewiz_ has joined the channel
[01:07] LukeBrookhart: Mac OSX
[01:07] LukeBrookhart: I'm newer to Mac
[01:07] Shaunzie: probably a patching issue
[01:07] LukeBrookhart: so not as familiar with the install process
[01:07] neurodrone has joined the channel
[01:08] tbranyen: LukeBrookhart: download the pkg file and install it
[01:08] tbranyen: super simple
[01:08] Shaunzie: oh that mm… I wouldn't do that
[01:08] LukeBrookhart: the pkg file didn't install when I tried it last
[01:08] Shaunzie: I'd use brew to install it personally
[01:08] LukeBrookhart: since the pkg didn't work
[01:08] tbranyen: Shaunzie: its preference, but i've never had the pkg file fail for me
[01:08] LukeBrookhart: I found this
[01:08] LukeBrookhart: https://gist.github.com/579814
[01:08] LukeBrookhart: and used the first recommendation
[01:08] tbranyen: LukeBrookhart: if the pkg file didn't work you have either a screwed up system or you did something very wrong
[01:09] LukeBrookhart: hmm
[01:09] tbranyen: since its simply installing binaries into the correct path'd folders
[01:09] LukeBrookhart: a screwed up system?
[01:09] LeMike has joined the channel
[01:09] LukeBrookhart: my brand new MacBook Pro?
[01:09] tbranyen: yeah, i mean... its not like they put up a broken installer just to f with people
[01:09] Shaunzie: LukeBrookhart: try running /usr/local/bin/node --version
[01:09] Twisol has joined the channel
[01:09] tbranyen: the pkg installer isn't broken, its your system if it doesn't work
[01:10] LukeBrookhart: -bash: /usr/local/bin/node: No such file or directory
[01:10] LukeBrookhart: I can try the pkg again
[01:10] LukeBrookhart: hold on
[01:10] nicholasf: hi, is there a better way to see what kind of objects Im using when logging it in a test? The toString() method isn't very friendly (I see [Object object])
[01:10] Shaunzie: LukeBrookhart: how about running which node from terminal
[01:11] tbranyen: nicholasf: console.log(obj)
[01:11] LukeBrookhart: which node did nothing
[01:11] EuroNerd: I know this is a bit off-topic, but does anyone here have experience setting up VPN servers?
[01:11] nicholasf: tbranyen: Im doing that, I get [Object object[
[01:11] nicholasf: I'm even calling toString() on the obj
[01:11] tbranyen: > var obj = { lol: "hi" }; console.log(obj);
[01:11] tbranyen: { lol: 'hi' }
[01:11] nicholasf: tbranyen: thanks, yeh my bad
[01:12] nicholasf: tbranyen: I was combining it in a string
[01:12] tbranyen: separate with commas instead of + if you want strings in there
[01:12] nicholasf: tbranyen: thanks!
[01:12] Shaunzie: LukeBrookhart: That means it isn't installed. You might want to install it using brew http://mxcl.github.com/homebrew/
[01:13] Shaunzie: LukeBrookhart: https://github.com/mxcl/homebrew/wiki/installation
[01:13] LukeBrookhart: weird, becuase I've been running my node app over and over all day
[01:13] LukeBrookhart: until I just rebooted a couple mins ago
[01:13] hostsamurai has joined the channel
[01:16] dgathright has joined the channel
[01:16] LukeBrookhart: I just tried the pkg again and it worked fine
[01:17] LukeBrookhart: not sure what the issue was the first time
[01:17] CIA-109: node: 03Ryan Dahl 07v0.6 * r2cde498 10/ test/simple/test-http-parser-bad-ref.js : Add another test to test-http-parser-bad-ref.js demoing #2438 - http://git.io/cAQ3Hw
[01:17] LukeBrookhart: thanks for all your help!
[01:18] mandric has joined the channel
[01:20] pt_tr has joined the channel
[01:24] postwait has joined the channel
[01:27] devongovett has joined the channel
[01:27] Hanspolo has joined the channel
[01:32] Shaunzie_ has joined the channel
[01:32] CarterL has joined the channel
[01:33] stagas has joined the channel
[01:34] rsterner has joined the channel
[01:35] githogori has joined the channel
[01:37] a_suenami has joined the channel
[01:40] jldbasa has joined the channel
[01:42] innociv_ has joined the channel
[01:42] ditesh|cassini has joined the channel
[01:42] ditesh has joined the channel
[01:43] swaj: .. (function(cb){ return cb(); }(function() { console.log("works?"); }));
[01:43] catb0t: "works?"
[01:43] swaj: yay, I've written an unholy mess of anonymous functions that call themselves
[01:45] Hanspolo_ has joined the channel
[01:46] sarlalian has left the channel
[01:47] teadict: swaj: nice, now guess what this returns: http://paste.ubuntu.com/792316/
[01:47] voodootikigod_ has joined the channel
[01:48] CIA-109: node: 03Ryan Dahl 07v0.6 * rf3da6c6 10/ (src/node_http_parser.cc test/simple/test-http-parser.js): (log message trimmed)
[01:48] CIA-109: node: Potential fix for #2438
[01:48] CIA-109: node: - Save StringPtr if the header hasn't been completely received yet after one
[01:48] CIA-109: node: packet.
[01:48] CIA-109: node: - Add one to num_fields and num_values. They were actually one less than the
[01:48] CIA-109: node: number of fields and values.
[01:48] CIA-109: node: - Remove always_inline makes debugging difficult, and has negligible
[01:49] swaj: teadict: that returns "42"
[01:51] cody-- has joined the channel
[01:51] teadict: it might as well return "teadict is a moron" and I wouldn't know
[01:51] boehm has joined the channel
[01:52] tracker1 has joined the channel
[01:52] mikeal has joined the channel
[01:56] jaequery has joined the channel
[01:56] joshkehn has joined the channel
[01:56] joshkehn has left the channel
[01:57] swaj: teadict: http://www.wolframalpha.com/input/?i=Answer+to+the+Ultimate+Question+of+Life%2C+the+Universe%2C+and+Everything&lk=1&a=ClashPrefs_*Miscellaneous-
[01:57] voodootikigod_ has joined the channel
[01:58] zeade has joined the channel
[01:59] yuwang has joined the channel
[02:02] Carmivore has joined the channel
[02:03] pt_tr has joined the channel
[02:04] mandric has joined the channel
[02:04] euoia has joined the channel
[02:06] saikat has joined the channel
[02:06] willwhite has joined the channel
[02:07] langworthy has joined the channel
[02:09] Shaunzie: String.prototype.anchor .....
[02:09] Shaunzie: wtf? O.o
[02:09] Shaunzie: I didn't know that was there D:
[02:10] mike5w3c has joined the channel
[02:11] astropirate: fracking "cloud"... Cloud9 ide is down :S
[02:11] RLa: oh, rainy day
[02:13] teadict: swaj: heh, right, that joke
[02:14] Sorella: Shaunzie, String#blink is still more awesome.
[02:14] catshirt has joined the channel
[02:15] jxson has joined the channel
[02:15] wtfizzle has joined the channel
[02:15] criswell has joined the channel
[02:17] pifantastic has joined the channel
[02:18] corpix has joined the channel
[02:18] tomlion has joined the channel
[02:18] tommyvyo has joined the channel
[02:19] dwhittle has joined the channel
[02:20] catshirt has joined the channel
[02:21] tilgovi has joined the channel
[02:21] tilgovi has joined the channel
[02:22] josephmoniz has left the channel
[02:22] rurufufuss has joined the channel
[02:23] josephmoniz_ has joined the channel
[02:24] lorfds has joined the channel
[02:25] Shaunzie has joined the channel
[02:26] Shaunzie_ has joined the channel
[02:26] kishoreyekkanti has joined the channel
[02:27] MatthewS has joined the channel
[02:29] CrypticSwarm_ has joined the channel
[02:31] CrawfordComeaux has joined the channel
[02:32] colinclark has joined the channel
[02:32] catshirt has joined the channel
[02:33] mandric has joined the channel
[02:33] dylang has joined the channel
[02:33] jacobolus has joined the channel
[02:34] jstonne has joined the channel
[02:36] cmr has joined the channel
[02:37] moonmayoriii has joined the channel
[02:39] sharkbird has joined the channel
[02:40] sharkbird_ has joined the channel
[02:41] jonbaer has joined the channel
[02:43] jerrysv has joined the channel
[02:45] ryanfitz has joined the channel
[02:46] mikeal has joined the channel
[02:48] chadskidmore has joined the channel
[02:48] redir_ has joined the channel
[02:48] clarkfischer_ has joined the channel
[02:49] jimmyy111 has joined the channel
[02:50] ChrisMatthieu has joined the channel
[02:51] spathi has joined the channel
[02:53] v_y has joined the channel
[02:53] v_y: is there a way to print an object representation into a string?
[02:53] cmr: console.dir
[02:54] v_y: ?
[02:54] v_y: seems to return undefined
[02:54] cmr: That's because it prints, it doesn't return anything
[02:54] tbranyen: v_y: well you're printing it so why do you care about the return value
[02:54] v_y: i said "into a string"
[02:55] v_y: i want what console.dir prints but in a string instead of stdout or whatever
[02:55] cmr: v_y: That isn't printing...
[02:55] v_y: like using pprint.format instead of pprint.pprint in python
[02:55] tbranyen: JSON.stringify mayhaps
[02:55] tbranyen: i honestly am not sure what you're asking for
[02:55] jstonne has joined the channel
[02:55] RLa: there is sprint in c
[02:56] tbranyen: but thats the only thing that comes to mind that will turn an object into a string
[02:56] v_y: alright well wahtever you call it, how do i get the text output by console.dir stored in a string instead of displayed on the console
[02:56] v_y: that will fail when it encounters a circular structure
[02:56] cmr: v_y: So you want the string representation of an object?
[02:56] v_y: yes
[02:56] v_y: cmr: yes
[02:56] tbranyen: v_y: then learn to read documentation
[02:56] v_y: lol
[02:56] RLa: maybe you want serialization?
[02:57] RLa: it does not have to be string or anything readable
[02:57] juske_ has joined the channel
[02:57] v_y: RLa: i don't want serialization, i want the represenation given by console.dir
[02:57] cmr: That /is/ serialization
[02:58] v_y: well whatever, if you guys don't know how to get the object representation given by console.dir into a string, just say so
[02:58] xeodox has joined the channel
[02:58] tbranyen: v_y: its not possible to get that exact value
[02:58] tbranyen: its not "not knowing"
[02:58] tbranyen: its not possible
[02:58] RLa: you could always look into source
[02:58] dshaw_ has joined the channel
[02:58] tbranyen: unless you find a shim
[02:58] freewil has joined the channel
[02:58] freewil has joined the channel
[02:59] tbranyen: i'm sure someone has matched the identical output, but console.dir itself you'll never get that value
[02:59] RLa: if anything else fails, try to set you own function as handler for stdout and collect output there
[02:59] RLa: btw, if object contains function how can you represent them
[03:00] tbranyen: RLa: Function.prototype.toString
[03:00] tbranyen: heh
[03:00] v_y: RLa: the answer turns out to be: var util = require('util'); var stringRepresenation = util.inspect(someObject);
[03:00] RLa: oh nice, haven't needed it so far
[03:00] RLa: but now we know
[03:00] lorfds has joined the channel
[03:04] kerang has joined the channel
[03:04] criswell has joined the channel
[03:06] nicholasf has joined the channel
[03:08] jhurliman has joined the channel
[03:09] theycallmeswift has joined the channel
[03:10] gbanister has joined the channel
[03:11] Vennril has joined the channel
[03:15] saikat has joined the channel
[03:16] c4milo has joined the channel
[03:16] aGHz has joined the channel
[03:17] corpix has joined the channel
[03:17] MatthewS has joined the channel
[03:17] shedinja: Would it be possible to get the remote address of a server created with the http module? assuming the script is not ran from a wifi connected spot
[03:18] JasonSmith: isaacs: YT? Question about ini?
[03:18] isaacs: hey
[03:18] JasonSmith: Would you accept a patch that adds newlines between sections?
[03:18] redir_ has joined the channel
[03:18] cmr: shedinja: Get the remote address from where? You can't get it locally, you'll need to use an external server of some sort
[03:18] JasonSmith: for stringify()
[03:18] neilk_ has joined the channel
[03:19] isaacs: JasonSmith: that'd be kinda nice, i guess
[03:19] isaacs: sure
[03:19] JasonSmith: I'm thinking, if a section heading is to be output (e.g. [blah]) then prefix it with newline *unless* it is the first line of the output
[03:20] shedinja: cmr: a quick ip check from somewhere would work then?
[03:20] cmr: shedinja: yep. whatismyip.org is the best IMO
[03:20] shedinja: cmr: cool thanks
[03:20] JasonSmith: isaacs: Any thoughts about the API? How I could specify that I want that feature? Or are you okay with it just doing that by default?
[03:20] isaacs: meh. just make it the default
[03:21] isaacs: empty lines are not semantically relevant anyhow
[03:21] isaacs: JasonSmith: it'd be nice to not put an extra \n at the end of the file, if possible.
[03:21] isaacs: or at the beginning of the file
[03:21] JasonSmith: Yeah, it works like the Javascript comma prefix
[03:21] JasonSmith: i.e. add a "\n" prefix unless it is the very first line
[03:22] isaacs: yep.
[03:22] isaacs: go nuts
[03:22] JasonSmith: Ok, see you in the pull req!
[03:23] isaacs: :D
[03:23] JasonSmith: isaacs: Remember when I made your older couch travel into the future and serve production requests?
[03:23] JasonSmith: So there was like 10 hours of missing updates?
[03:24] isaacs: oh, hahah, yeah
[03:24] isaacs: righ
[03:24] isaacs: that was hilarious
[03:24] isaacs: ;P
[03:24] JasonSmith: That is because I was not handling the .ini file correctly after a restore
[03:24] isaacs: ahh
[03:24] JasonSmith: hence my interest in your package
[03:24] isaacs: kewl
[03:24] JasonSmith: One hand washes the other
[03:25] Swimming_Bird has joined the channel
[03:26] LukeBrookhart has joined the channel
[03:26] orospakr has joined the channel
[03:27] mattrobenolt has joined the channel
[03:28] mattrobenolt: Is there a V8 specific way or recommended way to merge two objects? Or extend them?
[03:28] mikeal has joined the channel
[03:28] mattrobenolt: Basically like the $.extend in jQuery. Just not sure if V8 packs an Object.extend or something.
[03:28] RLa: why not composition?
[03:29] mattrobenolt: RLa: Me?
[03:29] RLa: { object1: o1, object2: o2 } <- something like that
[03:29] RLa: yeah
[03:29] mattrobenolt: Because I'm not doing any object oriented stuff or classes.
[03:29] mikeal1 has joined the channel
[03:29] mattrobenolt: Think of defaults, and overriding defaults.
[03:30] RLa: ah ok, i see
[03:30] JasonSmith: mattrobenolt: I wrote my own for defaultable (although working on many Javascript platforms is one goal of the project) https://github.com/iriscouch/defaultable
[03:30] jhbot has joined the channel
[03:30] cjm has joined the channel
[03:30] mattrobenolt: I have an object with default settings, and I want to override as needed.
[03:30] dodo has joined the channel
[03:30] JasonSmith: as such it uses the lowest-common denominator implementation https://github.com/iriscouch/defaultable/blob/master/defaultable.js#L97-129
[03:31] mattrobenolt: JasonSmith: Thanks, but that's way too over the top for what I need, haha
[03:31] JasonSmith: mattrobenolt: Sure, I was more thinking you are free to pilfer the merge function from the second link
[03:31] mattrobenolt: I was just hoping there was something native to V8 that people didn't use in browser land that we could take advantage of in Node.
[03:32] RLa: you could always write it as extension in c++ :)
[03:33] mattrobenolt: That's completely unnecessary.
[03:33] devongovett has joined the channel
[03:35] Shaunzie: FYI don't use node-mongolian pre node 0.5 ……… -.-
[03:36] teadict: what does THAT do? log a Genghis Khan in the console? amirite?!
[03:36] tjfontaine: lame
[03:36] teadict: ):
[03:37] tjfontaine: teadict: I would have accepted "another descendent of genghis khan"
[03:38] Dmitrijus: damn mongolians
[03:38] tjfontaine: "From Poland to Korea I ravaged the land now my DNA's in dudes from New York to Japan."
[03:39] tjfontaine:
[03:40] Dmitrijus: damn you, Mongolians!
[03:40] dgathright has joined the channel
[03:44] jbueza has joined the channel
[03:45] k1ttty has joined the channel
[03:45] dougcobie has joined the channel
[03:45] tuhoojabotti: NuckOff: I don't care. :E
[03:46] tuhoojabotti: That's useless info for most of us.
[03:46] ambroff has joined the channel
[03:46] dr0id has joined the channel
[03:47] tuhoojabotti: And the persons who care, can use /away
[03:47] tuhoojabotti: I mean /whois
[03:50] lzhang has joined the channel
[03:52] joshwnj has joined the channel
[03:52] kurtzhong has joined the channel
[03:53] StanlySoManly1 has joined the channel
[03:55] jimmyy111 has joined the channel
[03:57] dwhittle has joined the channel
[03:58] ceej has joined the channel
[04:00] mbrevoort has joined the channel
[04:02] voidvector has joined the channel
[04:03] jerrysv has joined the channel
[04:04] dingomanatee: question
[04:05] cmr: answer
[04:05] dingomanatee: I created a class function Foo();
[04:05] dingomanatee: then defined the prototype Foo.prototype = { bar: [] }
[04:06] teadict: I hate it when people talk about classes
[04:06] dingomanatee: I noticed that when I created 2 new Foo()'s, they shared the same array
[04:06] cmr: dingomanatee: Yes, that is how prototypes work
[04:06] teadict: that's how prototypes work
[04:06] sarlalian has joined the channel
[04:07] cmr: dingomanatee: First off, ditch the "class" thinking
[04:07] cmr: Because that isn't what it is
[04:07] teadict: and it's exactly how classes DONT work
[04:07] tbranyen: cmr: aw come on they uses classes under the hood
[04:07] tbranyen: use*
[04:07] dingomanatee: okay … well now I know.
[04:07] dingomanatee: be nice
[04:07] cmr: tbranyen: implementation detail :P
[04:07] teadict: what under the hood? where? show me classes in JS
[04:07] dingomanatee: Date?
[04:07] tbranyen: teadict: learn how v8 uses hidden classes =)
[04:07] cmr: teadict: v8 uses hidden classes
[04:08] teadict: how? where there's no JS I bet
[04:08] RLa: why not composition?
[04:08] cmr: dingomanatee: Date is an object, not a class
[04:08] teadict: you can emulate them in JS.. I give you that...
[04:08] tbranyen: teadict: unless you're using something like narcissus, there is no JS in v8
[04:08] teadict: is that what v8 does?
[04:08] teadict: okey..
[04:08] tjfontaine: teadict: http://code.google.com/apis/v8/design.html
[04:08] teadict: then how does v8 relate to what we were talking about?
[04:08] tbranyen: no JS in the javascript interpreter is what i meant, not v8 =)
[04:09] gmcerveny has joined the channel
[04:09] RLa: most cases when you want inheritance in traditional oo sense can be solved with composition
[04:10] teadict: OO doesn't mean classes, hence everything can be solved or emulated without them
[04:10] tbranyen: yeah depending on the situation i'll sometimes use classes especially if the library/framework emulates them so closely
[04:10] tbranyen: easier to talk to people about it, instead of always saying constructors
[04:10] teadict: well, yes, that is true
[04:11] schanin has joined the channel
[04:11] tbranyen: although that is pedantically more correct
[04:11] tjfontaine: the gang of four created all the patterns the world will ever need, there was no world before it, there shant be one after it
[04:11] tbranyen: tjfontaine: are you working on anything cool lately?
[04:11] teadict: that's .... religious thinking
[04:11] tbranyen: saw you asking about ffi again recently
[04:11] tjfontaine: tbranyen: stemming from my hatered of swig I've started into NIH syndrome
[04:12] tbranyen: haha
[04:12] tjfontaine: tbranyen: right now I have a way to generate FFI bindings from a given header
[04:12] schanin has left the channel
[04:12] tbranyen: oh shit
[04:12] cmr: I don't think I've ever heard good things about swig..
[04:12] tbranyen: did you ever test perf? i'm curious if its really that far off from a native extension calling methods
[04:13] tjfontaine: no, this mostly for people looking to quickly bootstrap, perf is their problem :P
[04:13] tjfontaine: https://github.com/tjfontaine/node-libclang is where it lives atm, I've put it on hold for now while I consider a secondary project that would actually bootstrap c++ addons
[04:13] jimmyy111 has joined the channel
[04:14] isaacs has joined the channel
[04:15] QiBala has joined the channel
[04:16] jamescarr has joined the channel
[04:16] jesusabdullah: tjfontaine: What does clang do?
[04:16] tjfontaine: jesusabdullah: clang is a C/C++ compiler frontend for llvm (i.e. a gcc replacement stack)
[04:16] jesusabdullah: interesting
[04:17] tjfontaine: jesusabdullah: libclang is a C interface to the driver for things like code completion and diagnostics
[04:17] jesusabdullah: hmm
[04:17] jamescarr: so what's the recommendation for "fixing" an app where I had a paths.js that shifted "models", "services", and "routes" onto the require.paths?
[04:17] perezd has joined the channel
[04:17] tjfontaine: jesusabdullah: in this case I'm using it as a glorified C/C++ parser
[04:18] jesusabdullah: using the explicit paths, jamescarr?
[04:18] jamescarr: change all of them to ../../models/Dude and ../services/leads
[04:18] jesusabdullah: pretty much
[04:18] jamescarr: jesusabdullah, feels a little error prone?
[04:18] jesusabdullah: why?
[04:18] jesusabdullah: No more error prone than paths.unshift
[04:18] kazupon has joined the channel
[04:18] jamescarr: eh true
[04:18] shapeshed has joined the channel
[04:19] voidvector: what's the best way to intermix browser and node js files without modification or wrapping? I am currently using requirejs, but i am looking for a lighter solution
[04:19] jamescarr: very well
[04:19] teadict: I'm interested in that
[04:20] vicapow has joined the channel
[04:20] jamescarr: shouldn't hurt. I hit an issue that is resolved in 0.6
[04:20] jamescarr: so I need to update my app now :)
[04:22] nicholasf has joined the channel
[04:24] wingie has joined the channel
[04:26] meso has joined the channel
[04:26] Shaunzie: can anyone explain this time? http://pastebin.com/z7BxF6Se
[04:26] jesusabdullah: voidvector: How? Code can only be so dual-sided
[04:26] jesusabdullah: voidvector: Actually, look at some of hij1nx's stuff
[04:27] jesusabdullah: He's written ones with special trixxx and stuff
[04:27] jesusabdullah: I think plates will work on both client and server
[04:27] hij1nx: jesusabdullah: plates is not a good example, its in neglect due to my bandwidth, ee2 is a good example
[04:28] jesusabdullah: hij1nx: ee2 runs on the client? Cool!
[04:28] jesusabdullah: jamescarr: Look at ee2 then
[04:28] jamescarr: ee2?
[04:28] jamescarr: hmm
[04:28] jamescarr: I guess I shall
[04:28] admc has joined the channel
[04:28] hij1nx: http://github.com/hij1nx/eventemitter2
[04:30] hij1nx: jamescarr: also a very good example of a duel sided library is http://github.com/flatiron/director
[04:30] hij1nx: jamescarr: the why in which this is accomplished is via https://github.com/hij1nx/codesurgeon
[04:31] gregpascale has joined the channel
[04:32] dgathright has joined the channel
[04:33] blueadept has joined the channel
[04:34] benvie: I made a little thing the other day for making a pretty close parity abstraction for loading scripts in a context in both node and the browser https://github.com/Benvie/Context-Loader
[04:37] teadict: watched!
[04:37] mattrobenolt has joined the channel
[04:37] mattrobenolt has left the channel
[04:38] kurtzhong has joined the channel
[04:38] pcaulagi has joined the channel
[04:38] benvie: it's a neat little tool for what I made it for
[04:38] tkaemming has joined the channel
[04:40] OmidRaha has joined the channel
[04:41] jamescarr: man
[04:41] jamescarr: the connect-form module really pisses me off
[04:41] jamescarr: I dont understand why it is so difficult to just upload a file :(
[04:41] jesusabdullah: It's harder than it sounds
[04:41] teadict: because of security nuts
[04:42] teadict: if the world wouldn't be so afraid of other people, it'd be easier
[04:42] teadict: oh, you wanted a technical reason? sorry
[04:42] jamescarr: I always get message: 'parser error, 0 of 39666 bytes parsed'
[04:42] jamescarr: looks like everyauth or mongoose-auth interferes with it
[04:42] jamescarr: dammit
[04:43] MatthewS has joined the channel
[04:45] mattrobenolt has joined the channel
[04:45] MrNko has joined the channel
[04:45] mattrobenolt: Any way to check if a require will work?
[04:46] mattrobenolt: Like, if I wanted to check if someone had express installed? Without actually loading it.
[04:46] benvie: try { require(name); return true } catch (e) { return false }
[04:46] voidvector: codesurgeon is interesting i will play with it
[04:46] disappearedng has joined the channel
[04:46] benvie: oh you'll need to do path checking then
[04:46] mattrobenolt: Yeah, that's basically what I have now. Wasn't sure if there was a method built in to check.
[04:46] mattrobenolt: Thanks.
[04:47] benvie: yeah there's probably stuff you can reuse in node's builtin module loader
[04:47] mattrobenolt: Can you point me in the direction to look at code for that?
[04:47] benvie: or at least use for ideas
[04:47] ChrisMatthieu has joined the channel
[04:47] benvie: https://github.com/joyent/node/blob/master/lib/module.js
[04:47] benvie: enough that you can pretty easily digest it
[04:47] benvie: small enough I mean
[04:47] mattrobenolt: benvie: +1
[04:48] benvie: awesome thing about node is how much is written in js and easily understandable
[04:48] mattrobenolt: Yeah, I'm not really new to Node. I've committed some stuff. ;)
[04:49] benvie: either way I like to reflect on that every time the opporutnity presents
[04:49] benvie: because I love it
[04:49] mattrobenolt: I just haven't looked into the actual module loading.
[04:50] benvie: I was over it recently because I wanted to make a version of the module system that worked with contexts
[04:50] benvie: ultimately wasn't enough there that was usable for that goal
[04:51] mattrobenolt: Worked with contexts how?
[04:51] benvie: like say you want to set up a new "top level" module inheritance chain
[04:51] benvie: or run everything in a disconnected set of vm contexts
[04:52] benvie: the way node handles contexts now (at the js level) isn't really conducive to that kind of stuff at all
[04:52] benvie: like if you wanted to run some stuff in a true sandbox but still observe it or something
[04:52] mattrobenolt: Ah, gotcha.
[04:53] mattrobenolt: WOuldn't that be something needed to handle mor eon the V8 side?
[04:53] mattrobenolt: I guess the call stack in a failed require reveals what's going on. Nothing special.
[04:53] benvie: well it would be, except it already is handled
[04:53] mattrobenolt: Just does a resolveFilename and fails on that.
[04:54] benvie: and it's just not implemented correctly (not sure the reason, maybe there's a good one) with how node does things
[04:54] benvie: I know it's all changing with isolates for the next release anyway
[04:54] benvie: but it's possible to do all that stuff now
[04:54] mattrobenolt: I wish I knew more about Javascript land, haha
[04:54] benvie: I mean in terms of like vm contexts
[04:55] mattrobenolt: I know nothing about how that shit is handled in Node or V8.
[04:55] benvie: basically when v8 creates a context it's this bare set of builtins
[04:55] mattrobenolt: My background is a lot of Python and more frontend Javascript to get by.
[04:55] benvie: node then basically copies references for all the stuff between each one, even when you're doing the sandbox load
[04:56] tjholowaychuk has joined the channel
[04:56] benvie: and it partially breaks stuff, like you can't do some JS stuff on objects from other contexts
[04:56] benvie: and then it partially just cross-exposes the things that do work
[04:57] RLa: just lets not make it too complex :)
[04:57] benvie: so if you try to sandbox something, it'ls still using the same process object you are
[04:57] benvie: and it can do stuff to it
[04:57] benvie: or use it as a way to pass messages to other contexts that it otherwise wouldn't know about
[04:58] Skaag has joined the channel
[04:59] benvie: and then on the thing you do want to work,
[04:59] benvie: like you want to do console.log(someForeignObject) thing
[04:59] benvie: that is the thing that doesn't work
[04:59] mattrobenolt: benvie: I came here looking if there was a simple exists builtin or something to check if a module exists, and you've given me more information about contexts and sandboxing and vms than I can comprehend right now, haha
[04:59] benvie: hahah
[05:00] benvie: well to be succinct, the best answer is to try and include it as mentioned, and only avoid that if you have a specific reason to
[05:01] benvie: also maybe look into how npm keeps track of installed stuff
[05:01] mattrobenolt: I like to load settings for a project in as a "module", and I'm shoving environment specific settings into a module named: 'settings-'+env
[05:01] mattrobenolt: And I'm conditionally loading them in.
[05:01] benvie: https://github.com/isaacs/npm/blob/master/lib/ls.js
[05:01] mattrobenolt: Fail silently if it doesn't exist.
[05:02] mattrobenolt: I just don't like the way a try…catch looks.
[05:02] gigafied has joined the channel
[05:02] tuhoojabotti: Yeah
[05:02] benvie: npm is probably your bet, since it's the closest thing to a registry of what is actually on the system
[05:03] benvie: and is almost universally available
[05:03] disappearedng has joined the channel
[05:03] benvie: https://github.com/isaacs/npm/blob/master/lib/utils/read-installed.js
[05:03] mattrobenolt: benvie: I'm literally just doing: require('./conf/settings-'+env)
[05:03] mattrobenolt: That's all this is for, haha
[05:04] benvie: it's serious business to do things seriously
[05:04] ryanfitz has joined the channel
[05:04] tuhoojabotti: benvie: I wouldn't think your bindings are serious
[05:04] tuhoojabotti: :D
[05:04] mediahack has joined the channel
[05:04] MUILTR has joined the channel
[05:04] benvie: what you don't think ctrl+z and shift-insert are cross platform friendly?
[05:05] tuhoojabotti: Ctrl+f2 isn't. :E
[05:05] benvie: actually
[05:05] benvie: that doesn't work at all, anywhere
[05:05] gregpascale has joined the channel
[05:05] benvie: but it's for toggling colors off
[05:05] tuhoojabotti: Hoho
[05:05] benvie: which people should never ever do
[05:06] benvie: I just changed it so new contexts don't copy over the node builtins at all
[05:06] benvie: you start with an honest to god raw v8 context
[05:07] secoif has joined the channel
[05:07] gregpascale has joined the channel
[05:09] benvie: the keybindings libuv exposes leave much to be desired
[05:09] citris has joined the channel
[05:09] apoc has joined the channel
[05:10] voidvector has joined the channel
[05:10] al3xnull has joined the channel
[05:11] sarlalian has joined the channel
[05:11] aljosa has joined the channel
[05:12] citris: When can I abandon php/python and use just node?
[05:13] apoc has left the channel
[05:13] citris: I like working purely in JS, not having to switch my brain from one language to another.
[05:13] teadict: what's stopping you?
[05:13] tuhoojabotti: citris: That's what I did.
[05:13] tuhoojabotti: With my homepage
[05:14] teadict: node replaces apache and php or python in a web env
[05:14] tuhoojabotti: teadict: Except for me, I have to proxy requests to node. :E
[05:14] aljosa: if i have script.js how do i get script current folder? something like path.absPath(".") or something in os or fs modules?
[05:14] zeade has joined the channel
[05:14] tuhoojabotti: _dirname
[05:14] tuhoojabotti: __*
[05:14] citris: well, I feel like thats where I'm headed but I'm not sure if it's best practice at this point
[05:15] tuhoojabotti: citris: It depends.
[05:15] tuhoojabotti: citris: Node is good for some things, and not so good for others.
[05:15] tuhoojabotti: citris: It all depends what you're trying to do.
[05:16] tuhoojabotti: Node.js is for example excellent for creating Web apps in short time.
[05:16] citris: I mostly just do freelance for people that need a small site but customized cms
[05:16] tuhoojabotti: And handling concurrency and so on and so forth
[05:17] tuhoojabotti: citris: Well, personally I think Node would satisfy your needs easily.
[05:18] jamescarr: anyone here using connect-form and running into a problem with the complete callback never being executed?
[05:18] tjholowaychuk: jamescarr Connect has multipart support now
[05:18] tjholowaychuk: via req.files
[05:18] jamescarr: nice
[05:18] jamescarr: so I don't need connect-form anymore?
[05:18] tjholowaychuk: http://senchalabs.github.com/connect/middleware-bodyParser.html
[05:18] tjholowaychuk: noe
[05:18] tjholowaychuk: nope*
[05:18] tuhoojabotti: citris: The only issue I can think of, is that Node is still in rapid development and thus updates can be harder than with something that has been around for longer.
[05:18] tjholowaychuk: in 2x there's bodyParser() == json() / urlencoded() / multipart()
[05:19] tjholowaychuk: so you can pick and choose
[05:19] teadict: tuhoojabotti: why do you say you have to proxy requests like an exceptional thing? what's your case?
[05:19] jamescarr: thanks
[05:19] deeprogram has joined the channel
[05:19] jamescarr: tjholowaychuk, I have an app with everyauth, mongoose-auth, and for some reason it was making connect-form outright not work :(
[05:19] tuhoojabotti: teadict: I use mod_rewrite to proxy request to node listening on internal port
[05:19] teadict: why?
[05:20] tuhoojabotti: teadict: Because I'm running on a shared irc-shell server. xD
[05:20] jamescarr: was staring to feel useless. I mean what kind of idiot can't upload a freaking file :)
[05:20] teadict: I mean, why is that uncommon?
[05:20] tjholowaychuk: jamescarr maybe they're not pausing and missing the data events
[05:20] tuhoojabotti: Well it's not.
[05:20] teadict: oh, k
[05:20] tuhoojabotti: I guess many people use like nginx
[05:20] tjholowaychuk: jamescarr that's a big gotcha with node
[05:20] tuhoojabotti: teadict: But you said node replaces them, which is not always the case.
[05:20] jamescarr: tjholowaychuk, btw, you still writing the Manning book?
[05:20] tjholowaychuk: yup!
[05:21] jamescarr: cool. I was contacted by them the other day to see if I was interested in proofing it
[05:21] jamescarr: didn't know if it was the one you were writing or not :)
[05:22] teadict: tuhoojabotti: shouldn't have said apache
[05:22] tjholowaychuk: that's the one :D
[05:24] CAP5792 has joined the channel
[05:25] dodo has joined the channel
[05:25] aljosa has joined the channel
[05:26] sirwan has joined the channel
[05:26] sirwan: anyone know if Ryan Dahl has Aspergers … doing a survey ...
[05:26] AAA_awright: wth?
[05:27] sirwan: I am doing a survey on Aspergers … Does anyone know if Ryan Dahl has aspergers ?
[05:27] AAA_awright: Also, FUUUU South Park. I can never eat another fast food burger again.
[05:27] tjholowaychuk: haha omg..
[05:27] sirwan: is an obligatory 'wtf' warranted
[05:28] sirwan: its a permissible question
[05:28] sirwan: lol hey tj
[05:28] jamescarr: tjholowaychuk, so I just need to access the file listed under req.files ?
[05:28] tjholowaychuk: jamescarr yup
[05:28] jamescarr: or is there an event or something I need to listen for?
[05:28] Dmitrijus: hehe, south park reference! :)
[05:28] tjholowaychuk: req.files.image
[05:28] tjholowaychuk: etc
[05:28] jamescarr: coolness
[05:28] jamescarr: now I just got to figure out how to get this bastard into gridfs :)
[05:28] sirwan: lol yes AAA ol
[05:29] tjholowaychuk: jamescarr i have some grid stuff
[05:29] tjholowaychuk: one sec
[05:29] tjholowaychuk: nvm it's actually quite small probably not even worth it
[05:29] tjholowaychuk: haha
[05:29] aljosa: how can i get args list for script?
[05:29] astropirate: cloud9ide is back onliness!!!!!!!!
[05:30] cmr: Yes, let's all flood it and make it go back down!!
[05:30] tuhoojabotti: aljosa: Use node-optimist.
[05:30] tuhoojabotti: It's awesome
[05:30] tjholowaychuk: aljosa process.argv
[05:30] tuhoojabotti: That too.
[05:30] tjholowaychuk: jamescarr https://gist.github.com/7e2134c31a9d6fc10e3d
[05:30] tjholowaychuk: that was all i needed
[05:30] tjholowaychuk: but the api was bad enough to wrap
[05:31] jstonne has joined the channel
[05:31] jamescarr: tjholowaychuk, yeah, I stored stuff in gridfs during node KO but it was a super hack
[05:32] jamescarr: it'd be nice if mongoose had someway to support gridFS
[05:32] _jzl has joined the channel
[05:32] jamescarr: tjholowaychuk, thanks, I'll play around with this
[05:32] jamescarr: it actually doesn't look too bad
[05:32] tjholowaychuk: yeah i was going to integrate it in mongoose
[05:32] tjholowaychuk: but got lazy
[05:32] jamescarr: hmmm
[05:33] tjholowaychuk: mongoose.mongo.BSONPure.ObjectID(id)
[05:33] _jzl has joined the channel
[05:33] tjholowaychuk: feels like
[05:33] tjholowaychuk: java
[05:33] tjholowaychuk: haha
[05:33] jstonne has joined the channel
[05:33] jamescarr: correct me if I am wrong, but the put method would require me to read the whole file into memory right?
[05:33] Dmitrijus: tuhoojabotti: node-optimist looks awesome, ty
[05:33] jamescarr: tjfontaine, hhehehehe... yeah!
[05:33] ZeepZop has joined the channel
[05:33] tuhoojabotti: Dmitrijus: Of course it is, it's made bu SubStack. ;D
[05:33] tjholowaychuk: jamescarr my stuff is in-memory yup
[05:33] jamescarr: ah
[05:33] tjholowaychuk: minus putFile
[05:34] tjholowaychuk: you could stream too but i didnt need that
[05:34] jamescarr: yeah, I'll change it to stream it
[05:34] jamescarr: my files are primarily PDFs and Word documents, but some are a little large
[05:35] janeUbuntu has joined the channel
[05:35] jstonne has joined the channel
[05:35] ryan_stevens has joined the channel
[05:36] HT has joined the channel
[05:37] jstonne has joined the channel
[05:37] pluc has joined the channel
[05:37] joestein has joined the channel
[05:38] jstonne has joined the channel
[05:40] jstonne has joined the channel
[05:41] marcello3d has joined the channel
[05:41] DTrejo has joined the channel
[05:41] jstonne has joined the channel
[05:42] swhit has joined the channel
[05:42] blueadept: quick question, what would be the best way to link node-waf?
[05:42] k1ttty has joined the channel
[05:42] blueadept: trying to use npm update, and some packages can't find node-waf
[05:42] blueadept: i see it in node/tools though
[05:43] blueadept: i tried, ls -s /path/to/node-waf /usr/local/bin/node-waf, but that failed
[05:43] jstonne has joined the channel
[05:46] cjm has joined the channel
[05:48] moonmayoriii has joined the channel
[05:48] boltR has joined the channel
[05:50] richardr has joined the channel
[05:50] stonebranch has joined the channel
[05:51] jamescarr: Thanks tj
[05:51] jamescarr: you're a lifesaver
[05:52] munichlinux has joined the channel
[05:52] edjoperez has joined the channel
[05:52] edjoperez: whats up!
[05:53] tuhoojabotti: hoho
[05:53] tuhoojabotti: tj = CEO in finnish
[05:54] edjoperez: anyone has tried the node-gui module?
[05:55] edjoperez: ?
[05:55] edjoperez: anyone here?
[05:56] RLa: hey
[05:56] RLa: it uses gtk?
[05:56] edjoperez: yes
[05:57] RLa: btw, qt might/will get v8 as qtscript backend
[05:58] RLa: so if you are looking into writing native gui apps in javascript it might be good thing to look at
[05:58] pifantastic has joined the channel
[05:58] freakspire has joined the channel
[05:59] tuhoojabotti: edjoperez: I'd be more interested to make a cli-"gui" like irssi
[05:59] tuhoojabotti: with node-ncurses probably
[06:00] scriptle has joined the channel
[06:00] RLa: any, here is qtscript example: http://developer.qt.nokia.com/doc/qt-4.8/script-calculator.html
[06:01] pizthewiz_ has joined the channel
[06:01] edjoperez: i lov cli but, we have to think as a dummy user who likes the gui ( without any offence)
[06:01] RLa: tho main.cpp is used for loading ui file and javascript file
[06:02] Shaunzie has joined the channel
[06:02] _dc has joined the channel
[06:03] mraleph has joined the channel
[06:04] jacter has joined the channel
[06:04] kishoreyekkanti has joined the channel
[06:05] k1ttty has joined the channel
[06:05] chadskidmore has joined the channel
[06:07] shapeshed has joined the channel
[06:07] rwaldron has joined the channel
[06:07] c4milo has joined the channel
[06:08] isaacs: any rubyists in here? i've got a question about Dir.glob
[06:09] lorfds has joined the channel
[06:12] teadict: this is freaking usefull https://github.com/voodootikigod/node-serialport/blob/master/examples/logger.js
[06:13] jhurliman has joined the channel
[06:15] voidvector: so cygwin support is dropped for good? would it ever come back when node stablizes?
[06:15] isaacs: nope
[06:15] isaacs: it's gone
[06:16] jamescarr: oh?
[06:16] jamescarr: well, I guess it makes sense since there is now native windows support
[06:16] voidvector: what's the major hurdle?
[06:17] jamescarr: voidvector, cygwin is the hurdle?
[06:17] piscisaureus_ has joined the channel
[06:17] jamescarr: I use it extensively at my exclusive windows workplace and cygwin causes a lot of problems
[06:17] shinuza has joined the channel
[06:17] jamescarr: better than MSDOS, but slower than OSX or linux of course ;)
[06:17] jamescarr: I also get random shell problems
[06:18] voidvector: i use it at work and at home too, just feel bad that its the bastard child of even open source projects on Windows
[06:18] teadict: install linux, move on with life
[06:18] voidvector: not only node, but also stuff like git
[06:19] jamescarr: voidvector, yeah, I use git, git flow, and a doze other commandline tools from cygwin
[06:19] jamescarr: at work
[06:20] voidvector: i can't get the Windows binary of node to work with cygwin. it doesn't flush console correctly
[06:20] tbranyen: voidvector: wat
[06:20] astropirate: voidvector, question
[06:20] astropirate: why use windows binary in cygwin
[06:21] voidvector: stuff like "find . -name '*.js' jshint {} \; "
[06:21] dshaw_ has joined the channel
[06:21] tbranyen: voidvector: i guess the question i have now is what do you mean run in cygwin
[06:21] tbranyen: you in the cygwin terminal or something?
[06:22] voidvector: yea
[06:22] tbranyen: cause you should be able to run the cygwin binaries like find.exe inside cmd.exe
[06:22] tek has joined the channel
[06:22] mattgifford has joined the channel
[06:22] astropirate: meteor shower peeking in One hour!!
[06:22] tbranyen: oh sick
[06:22] a_meteorite: I'm a star!
[06:22] tbranyen: in what homosphere?
[06:23] astropirate: northern
[06:23] teadict: homo? sphere
[06:23] a_meteorite: I mean... relevant nickname
[06:23] astropirate: Astro Pirate :D
[06:23] michaelh_ has joined the channel
[06:24] ly- has joined the channel
[06:26] jacter has joined the channel
[06:28] voidvector: i use cygwin for the terminal, not just individual utils.
[06:28] voidvector: anyway, just wondering what's the main reason it was dropped given that most other interpreters actually work in it
[06:30] kishoreyekkanti has joined the channel
[06:33] FG has joined the channel
[06:39] braoru has joined the channel
[06:41] rgl has joined the channel
[06:42] Shaunzie has joined the channel
[06:43] tonymilne has left the channel
[06:44] Hanspolo has joined the channel
[06:46] rgl has joined the channel
[06:50] OmidRaha has joined the channel
[06:51] FG has joined the channel
[06:51] jamescarr: so close
[06:51] jamescarr: yet so far
[06:52] _dc has joined the channel
[06:54] fangel has joined the channel
[06:54] mdel_ has joined the channel
[06:55] Morkel has joined the channel
[06:57] passionke has joined the channel
[07:00] kishoreyekkanti_ has joined the channel
[07:03] hellp has joined the channel
[07:04] erikzaadi has joined the channel
[07:05] dmitrig01 has joined the channel
[07:05] disappearedng: Hey I have a basic question for testing. Let say I am writing some kind of game. I have a test => fire ready when everyone is ready. and then I want to test the actual game play which involves everyone firing ready. Any framework with nodejs that allows test cases to call other test cases?
[07:05] mattrobenolt has joined the channel
[07:09] lz1 has joined the channel
[07:09] fbartho has joined the channel
[07:10] lz1: multi-line arrays or objects in function arguments… what's the best way to declare them?
[07:11] lz1: foo([
[07:11] lz1: 'a',
[07:11] lz1: 'b',
[07:11] lz1: 'c'
[07:11] lz1: ]);
[07:11] lz1: ?
[07:12] Heisenmink has joined the channel
[07:13] Shaunzie: lz1: does it matter?
[07:13] lz1: Shaunzie, probably not, but I've seen some other styles
[07:14] lz1: I've seen this before too
[07:14] lz1: foo([
[07:14] lz1: 'a'
[07:14] lz1: , 'b'
[07:14] lz1: , 'c'
[07:14] lz1: ]);
[07:14] rauchg has joined the channel
[07:14] Shaunzie: lz1: if it's a matter of style, then do when you like best
[07:15] lz1: Shaunzie, haven't come up with one I like yet
[07:15] josh-k has joined the channel
[07:16] lz1: doesn't look right when you have a callback function right after
[07:16] isaacs has joined the channel
[07:16] Shaunzie: Well that's something you need to decide on for yourself :P. Can't expect others to define your personal style. It's part of your identity as a developer
[07:16] lz1: foo([
[07:16] lz1: 'a',
[07:16] lz1: 'b',
[07:16] lz1: 'c'
[07:16] lz1: ],function(){
[07:16] lz1: blah blah
[07:16] lz1: });
[07:16] lz1: yuck
[07:17] Shaunzie: If you don't like that, don't do it?
[07:19] disappearedng: Hey anyone able to help? http://stackoverflow.com/questions/8723346/how-do-you-test-an-application-that-involves-multiple-steps-to-reach-a-particula
[07:20] garrensmith has joined the channel
[07:20] DaBunny has joined the channel
[07:21] boltR has joined the channel
[07:21] lz1: Shaunzie, semicolon insertion sucks :/
[07:22] Shaunzie: disappearedng: There are a number of testing frameworks out there for node: https://github.com/joyent/node/wiki/modules#wiki-testing
[07:22] disappearedng: Shaunzie: thanks? Which one should I use
[07:22] disappearedng: nodeunit doesn't cut it
[07:22] Shaunzie: disappearedng: I like mocha personally
[07:22] disappearedng: as a matter of fact I dun think I should be using unit testing frameowkrs at all
[07:23] disappearedng: Did you read my question
[07:23] Shaunzie: https://github.com/visionmedia/mocha
[07:23] disappearedng: or are you just blindly recommending testing frameworks
[07:23] Shaunzie: disappearedng: yes, I read your question, but I don't see why you would use unit tests
[07:23] disappearedng: ok yeah I agree. How do I even test ?
[07:24] disappearedng: do I chain 1, 2, 3, 4, 5,... test cases like that?
[07:24] Shaunzie: disappearedng: that's sort of a loaded question :). That's like asking "How do I design my application"
[07:24] SamuraiJack has joined the channel
[07:25] disappearedng: well is calling testStep5() { test1(); test2(); test3(); test4(); ... } even correct?
[07:25] lz: Shaunzie, mocha's a good find, thanks
[07:25] disappearedng: I mean I am not asking you how to test
[07:25] __doc__ has joined the channel
[07:25] disappearedng: I am asking you what I should do to test step5
[07:26] Shaunzie: You could create a mock object that contains all the necessary data to show that a player is in step 5 and test against that known data
[07:26] martin_sunset_ has joined the channel
[07:27] disappearedng: Shaunzie: What if the steps require to test step 5 IS step 1, 2, 3, 4?
[07:27] disappearedng: aka 1) Everyone joins the game, 2) Everyone presses ready, 3) Someone fires a shot at UserC
[07:28] disappearedng: i.e. I want to test UserC is dead (step4) and the steps required to construct this case is ACTUALLY all those 3 combined in that chronological order?
[07:28] FG has joined the channel
[07:30] Shaunzie: disappearedng: Can't you just test step 1, 2, 3, 4 separately?
[07:30] disappearedng: how can you test step 4?
[07:30] Shaunzie: disappearedng: that depends on how you design your app :-/
[07:31] disappearedng: in setUp() { this.userC = new User("USER_C") ... }, testStep4 = function() { assert(this.userC.dead(), true); } throws userC is has not joined the game yet
[07:31] Shaunzie: when in doubt steal. Try taking a look at existing applications that do unit tests and learn from their examples. That's more or less what I do
[07:32] Shaunzie: disappearedng: Then your setup is incorrect. If you are trying to test with the condition that a user has joined, manually join the user then test it.
[07:34] disappearedng: Then that's step2 !
[07:34] disappearedng: Shaunzie: What I am saying is, ALL THE MANUAL STEPS ARE PREVIOUS STEPS
[07:34] disappearedng: Do you see what I am getting at?
[07:35] tuhoojabotti: jsQ: How to "map" and ignore some items?
[07:36] Shaunzie: disappearedng: If you need to remove the old steps in order to correctly test the new steps you can do that. Thats what I do when I test against data stored in a database. Delete old data, insert new data, test against the known data.
[07:37] disappearedng: Shaunzie: ok let say you are testing a database that allows you to retrieve previous data
[07:37] disappearedng: So you first test "after inserting hello" I can get hello
[07:37] otakutomo has joined the channel
[07:37] disappearedng: and then you want to test "after inserting hello then inserting world", I can get "world then hello"
[07:37] disappearedng: kind of like a stack
[07:37] disappearedng: you will realize that you are essentially testing over and over again the crap that you have tested previously
[07:38] disappearedng: anyway I am just gonna do soemthing else I dun see this conversation leading to anything fruitful thanks anyway
[07:38] ph^ has joined the channel
[07:38] clarkfischer has joined the channel
[07:39] mikeal has joined the channel
[07:40] pyparadigm has joined the channel
[07:40] inarru has joined the channel
[07:42] isaacs has joined the channel
[07:43] k1ttty has joined the channel
[07:43] CarterL has joined the channel
[07:45] disappearedng: Anyone here uses vows?
[07:45] tuhoojabotti: disappearedng: You must be the only one.
[07:46] disappearedng: great tuhoojabotti do you know if nesting of topics will inherit the state of the parent topic?
[07:47] tuhoojabotti: I have no idea.
[07:48] shapeshed has joined the channel
[07:48] groom has joined the channel
[07:48] herbySk has joined the channel
[07:49] isaacs: JasonSmith: hey, yt?
[07:49] JasonSmith: isaacs: yo
[07:50] isaacs: so, i think it'd be better to just make the separator *always* be the end-of-line character.
[07:50] isaacs: and, make that \r\n on windows, rather than \n
[07:50] JasonSmith: So just a boolean option whether you want one or not?
[07:50] isaacs: no, just always do it
[07:50] isaacs: if anyone complains, we can make it an option
[07:51] JasonSmith: yeah I doubt they will complain
[07:51] isaacs: but they won't complain, because it's not relevant
[07:51] JasonSmith: also `tap test` fails BTW
[07:51] isaacs: doesn't change the results
[07:51] StanlySoManly has joined the channel
[07:51] isaacs: oh, that's lame
[07:51] JasonSmith: because fixtures/foo.ini cannot exec
[07:51] JasonSmith: I wish there was .tapignore :)
[07:51] isaacs: oh, yeah, you gotta do `tap test/*.js`
[07:51] isaacs: working on that!!
[07:51] isaacs: i'm building out a generic .ignore glob handling stuff
[07:52] JasonSmith: no doubt. At your convenience, heck your email about that new couch "system db" feature
[07:52] JasonSmith: I read the patch and we may want to just backport that and rock just that
[07:52] isaacs: yeah, i saw that, haven't properly digested yet
[07:52] JasonSmith: It has a "likelihood of being commited" coefficient of 1.0
[07:53] JasonSmith: it gives you basically the same thing as my inbox db with _update hack
[07:53] JasonSmith: I will rewrite the inbox db to use its new API in fact
[07:54] isaacs: When a "password" field is present, save_doc() will hash the password
[07:54] isaacs: and write the result to the "password_sha" field, add a "salt" field
[07:54] isaacs: and delete the "password" field:
[07:54] isaacs: oh, man. want.
[07:54] JasonSmith: yeah
[07:54] isaacs: i could stop doing that client-side
[07:54] JasonSmith: so this also has repercussions on the PBKDF2 stuff
[07:54] JasonSmith: so now there is an obvious way for that to happen
[07:54] ZeepZop has joined the channel
[07:54] isaacs: If the request's userCtx.name doesn't match the doc's name
[07:54] isaacs: -> 404 // Not Found
[07:55] isaacs: that's not ideal for me, but i can hijack that default behavior to do shadow passwords
[07:55] JasonSmith: The good news is Couch developers decided that it's not always what you see is what you get anymore
[07:55] isaacs: yeah, that's very good news.
[07:55] JasonSmith: there is spooky action at a distance. Sometimes, some types of changes on some types of documents just DTRT
[07:56] JasonSmith: isaacs: Well I will backport this to 1.1 so what is the reason why that 404 is not ideal?
[07:56] pors has joined the channel
[07:56] isaacs: npm owner add user package
[07:56] isaacs: that checks to make sure that the user exists, and then does a write to package with their username and email address.
[07:57] JasonSmith: I see
[07:57] JasonSmith: so it's not that you want the document obscured, you just want the password fields obscured
[07:57] isaacs: yeah
[07:57] isaacs: but i mean, presumably this after_doc_read will be in javascript somewhere?
[07:58] JasonSmith: no it's Erlang
[07:58] JasonSmith: it's already implemented
[07:58] JasonSmith: the after_doc_read is an implementation detail to achieve the little workflow specified at the top of the commit message
[07:59] isaacs: ahh, ok
[07:59] _jzl has joined the channel
[08:00] isaacs: hrm.
[08:00] ly- has joined the channel
[08:00] mdel_ has joined the channel
[08:01] smathy has joined the channel
[08:01] aliem has joined the channel
[08:01] fangel has joined the channel
[08:01] JasonSmith: I will ask the list whether there can be an alternative option where instead of 404 you get password fields scrubbed
[08:03] wenger has joined the channel
[08:03] `3rdEden has joined the channel
[08:03] wenger: any udp experts out here?
[08:04] kmurph79 has joined the channel
[08:06] raphdg has joined the channel
[08:06] kishoreyekkanti_ has joined the channel
[08:07] scientes has joined the channel
[08:08] mange has joined the channel
[08:10] mike5w3c has joined the channel
[08:15] p1d has joined the channel
[08:15] hipsters_ has joined the channel
[08:16] vvo has joined the channel
[08:18] sylvinus has joined the channel
[08:18] dannyamey has joined the channel
[08:21] rurufufuss has joined the channel
[08:22] djcoin has joined the channel
[08:23] paera has joined the channel
[08:23] paera has left the channel
[08:23] salva has joined the channel
[08:24] mattgifford has joined the channel
[08:25] p3rsist has joined the channel
[08:25] liar has joined the channel
[08:25] LeMike has joined the channel
[08:25] ablomen has joined the channel
[08:26] p3rsist has left the channel
[08:26] mytrile has joined the channel
[08:26] stonebranch has joined the channel
[08:27] shapeshed has joined the channel
[08:29] mike5w3c has joined the channel
[08:31] jacter1 has joined the channel
[08:34] Shaunzie has joined the channel
[08:34] hackband has joined the channel
[08:36] vol4ok has joined the channel
[08:37] kazupon_ has joined the channel
[08:37] secoif: isaacs if I want to module-ize my app, but not fill npm up with a bunch of tiny modules, what are my options?
[08:38] sproates has joined the channel
[08:38] isaacs: secoif: finding that boundary can be tricky
[08:39] secoif: isaacs I'm thinking along the lines of a private npm, or perhaps a different npm channel? npm namespace?
[08:40] mikeal has joined the channel
[08:40] secoif: no issue with the modules being open source, just that they're fairly specific to our app
[08:40] secoif: or
[08:40] secoif: suite of apps.
[08:40] isaacs: well, here's the thing: publish the smallest module that you can, which is independently useful and test-covered.
[08:41] isaacs: SubStack's a good role model to follow on thise
[08:41] whitman has joined the channel
[08:41] isaacs: but, if X is only ever useful in the presence of Y and Z, you either a) need to just publish all three bits of functionality as one thing, or b) need to re-think the boundaries
[08:41] secoif: yeah I've been trying to get us more SubStack-like, "library driven development" processes
[08:42] SubStack: what what
[08:42] isaacs: SubStack: you're a role model.
[08:42] isaacs: for the kids
[08:42] SubStack: FOR THE KIDS
[08:42] isaacs: and their modules
[08:42] isaacs: (no loudbot in here, :(
[08:42] SubStack: that's right kids, you should drink espresso late and night and write node modules
[08:42] secoif: issacs I guess I could simply use git urls to pull in the other components without ever publishing to npm
[08:42] HardPhuck has joined the channel
[08:42] isaacs: secoif: ew.
[08:43] isaacs: secoif: why not just publish them all?
[08:43] isaacs: if they suck, and that's why, then you've probably got other reasons to make them not suck, so just do that first.
[08:43] DTrejo: isaacs: do you agree with mikeal's post on checking in node_modules in production apps?
[08:43] isaacs: DTrejo: yes.
[08:43] isaacs: if you deploy it, check it in
[08:43] isaacs: if you don't, don
[08:43] isaacs: '
[08:43] isaacs: t
[08:43] DTrejo: k, good to know
[08:43] DTrejo: right
[08:43] secoif: isaacs yeah. The sucking is probably the issue.
[08:43] tbranyen: i checked in some node_modules and i dunno, kind of sucked to see my commit flooded
[08:43] AD7six has joined the channel
[08:43] isaacs: libraries should not have node_modules bundled in most cases.
[08:43] tbranyen: next time i'm making separate commits for node_modules
[08:44] isaacs: tbranyen: well, just commit them atomically.
[08:44] isaacs: npm install blah; git add node_modules/blah; git commit -m "install blah"
[08:44] tbranyen: yeah i didn't think of it at the time
[08:44] tbranyen: there were kinda just there and then :'(
[08:44] isaacs: rather than git ci -m "install foo and also fix a bunch of crap"
[08:44] isaacs: the point is to be able to bisect
[08:45] pquerna: +1, node_modules checked into apps, but not things posted to npm
[08:45] DTrejo: ^ gree
[08:45] DTrejo: agree
[08:45] isaacs: everyone agrees with this.
[08:45] DTrejo: felix might not agree
[08:45] isaacs: at least, everyone who has both published a module to npm, and also deployed anything ever.
[08:45] tbranyen: isaacs: question, is it possible to have a root level package.json but upon npm install instead installs to a node_modules folder in a sub dir?
[08:46] isaacs: tbranyen: no.
[08:46] djQuery has joined the channel
[08:46] tbranyen: oke doke
[08:46] romanb has joined the channel
[08:46] isaacs: tbranyen: but you can `npm install blah --prefix some/other/dir`
[08:46] isaacs: not sure why you'd want to do that.
[08:46] SubStack: split up your code into as many modules as possible
[08:46] isaacs: SubStack: not "possible"!
[08:47] SubStack: you're unlikely to encounter the lower bound of module size for a while
[08:47] pquerna: DTrejo: felix doesn't count, he is more like father time, from the old ages of node.js, before known history
[08:47] tbranyen: isaacs: hmmm that might be perfect
[08:47] tbranyen: i will try
[08:47] isaacs: as many modules as is reasonable, which is probably slightly more modules than you think is reasonable.
[08:47] isaacs: i aimed hard for "unreasonable" territory with node-tap initially, and found it.
[08:47] SubStack: I am known to be an unreasonable character!
[08:47] tbranyen: ah shit son
[08:47] DTrejo: pquerna: oh, I see.
[08:47] secoif: isaacs how small was unreasonable
[08:47] pquerna: DTrejo: (but <3 felix, haven't talked to him in awhile though)
[08:47] isaacs: secoif: 1 module per package.
[08:48] tbranyen: thx isaacs, any reason why you don't allow prefix configurable in the package.json?
[08:48] isaacs: secoif: many of them ended up all depending on each other.
[08:48] tbranyen: philosophical reasoning?
[08:48] DTrejo: *formidable <3 haha
[08:48] SubStack: isaacs: I think with re-targetting it could work
[08:48] secoif: isaacs is that a problem though?
[08:48] isaacs: tbranyen: because package.json defines one package. that package has deps. that is the entirety of the complexity
[08:48] SubStack: seems to have more been a problem of circular deps than modules being too small
[08:48] isaacs: secoif: eventually yes.
[08:48] secoif: isaacs other than cluttering up the npm repo…
[08:48] tbranyen: isaacs: fair enough
[08:48] isaacs: SubStack: not small in LoC or whatever, small in functionality.
[08:49] SubStack: check out this module I wrote earlier today https://github.com/substack/node-coords/blob/master/index.js
[08:49] SubStack: so tiny
[08:49] tbranyen: isaacs: is it possible for package.json to reference folders above its containment? basically i have an app that is a package, but i want everything contained to a build folder, because the rest of it is just a static web app
[08:49] isaacs: tap-test can't even exist without tap-consumer and tap-producer and tap-harness.
[08:49] mike5w3c has joined the channel
[08:49] isaacs: tap-harness depends on tap consumer and tap producer
[08:49] tbranyen: so if i had a build/package.json could package.json see folders/files at one level up so the same level as build?
[08:49] isaacs: it's all too incestuous.
[08:49] isaacs: may as well just be one thing
[08:50] isaacs: tbranyen: no
[08:50] tbranyen: kk
[08:50] secoif: SubStack yeah I have little things like that all through our codebase, could be broken out but I'm hesitant to add more clutter.
[08:50] isaacs: tbranyen: why not just have one root-level package, and that's it?
[08:50] zilch has joined the channel
[08:50] secoif: not suggesting your module is clutter :P
[08:50] isaacs: tbranyen: you can get at modules in parent node_modules folders just as easily
[08:50] tbranyen: isaacs: because its a static web app with an optional build process, why bother installing node_modules to the root if its never used
[08:50] isaacs: SubStack: the trick with writing tiny modules is finding tiny pieces of functionality that are independently useful
[08:51] SubStack: secoif: better to keep the clutter on npm where it is isaacs's problem than to keep them in your own codebase
[08:51] tbranyen: it'd be nice to define those deps at the root and install to the prefix, which is what i'm thinking now, except i'd also like to publish to npm
[08:51] tbranyen: and that kind of breaks the whole prefix thing :-/
[08:51] tbranyen: unless i do a post script to move it manually
[08:51] raincole has joined the channel
[08:51] isaacs: tbranyen: is it really that big a problem to have it there if it's not used?
[08:51] isaacs: is it some compilation that might fail?
[08:52] secoif: SubStack good idea. I'm all for giving isaacs my problems.
[08:52] tbranyen: isaacs: trying to maintain a separation of concerns atm
[08:52] SubStack: SEPARATE ALL THE CONCERNS
[08:52] isaacs: tbranyen: a noble ambition.
[08:52] isaacs: however, often overrated.
[08:52] tbranyen: someone could theoretically install this "boilerplate" jazz and then simply delete a single folder to work with a static site
[08:52] isaacs: adding complexity to save a single .js file is probably not worth it.
[08:52] tbranyen: and not worry about lingering node_modules
[08:52] isaacs: just put the extra file there.
[08:53] garrensm_ has joined the channel
[08:53] isaacs: disk space is growing faster than money.
[08:53] isaacs: it's free.
[08:53] isaacs: the other day i was cleaning my room, and stumbled across a spindle of CD-Rs
[08:53] isaacs: i realized how horribly outdated those are.
[08:54] tbranyen: =)
[08:54] isaacs: the whole spindle has less storage power than my phone's SD card.
[08:54] isaacs: and my phone's sd card is only 16GB
[08:54] zilch: if I want to have "esper" or "streambase" alternative in node.js land, what would be it ?
[08:54] isaacs: because i have a crappy phone.
[08:54] SubStack: that's it
[08:55] SubStack: I was drawing snoop dawg but now I'm going to draw some snowclones
[08:55] zilch: basically, I am looking for complex event processing solution in node.js
[08:55] isaacs: zilch: i've never heard of those two things.
[08:55] isaacs: zilch: have you seen EventEmitter2?
[08:55] SubStack: zilch: why are you looking for complex solutions
[08:56] isaacs: zilch: npm install eventemitter2
[08:56] secoif: zilch perhaps explain what you're trying to achieve
[08:56] zilch: issacs, I will check the ee2 ... I am also going through the hook.io
[08:57] tokka has joined the channel
[08:57] zilch: which is based on ee2
[08:57] jacter has joined the channel
[08:57] cesconix has joined the channel
[08:57] secoif: what do you guys think of hook.io?
[08:58] isaacs: secoif: i haven't really played with it too much
[08:58] a_suenami has joined the channel
[08:58] Shaunzie: secoif: hook.io = bangable
[08:58] isaacs: seems a bit like erlang
[08:58] jomoho has joined the channel
[08:58] isaacs: in that, it's a pretty solid approach, but a huge pita, and destined to be a bit slow.
[08:59] isaacs: but, it IS a solid approach to writing distributable programs
[09:00] aaronmcadam has joined the channel
[09:01] secoif: interesting.
[09:01] hipsters_ has joined the channel
[09:01] zilch: what I am looking for is standing queries
[09:01] lperrin has joined the channel
[09:02] zilch: a stream of event are generated at listened to at point A ... where we apply some filter criteria and forward the event and/or do some processing
[09:02] daglees has joined the channel
[09:02] secoif: zilch perhaps https://github.com/dominictarr/event-stream ?
[09:04] davetayls has joined the channel
[09:04] secoif: zilch you could also look into http://www.zeromq.org/ or http://www.rabbitmq.com/
[09:06] secoif: Shaunzie what are you using hookio for?
[09:08] HardPhuck: guys, a question, how can I "transmit" data from one nodejs application to another (both on the same server)
[09:08] martin_sunset: secoif: I am using it for background processing, in combination with rabbitmq. Hook.io is really great, takes a lot of inspiration from akka
[09:08] HardPhuck: for example, If I save a document to mongo, I would like to alert the other application (and send it the same document)
[09:09] martin_sunset: HardPhuck: Rabbitmq could be used for that
[09:09] HardPhuck: isn't that a bit overkill?
[09:09] martin_sunset: HardPhuck: It depends on te number of docs ;)
[09:10] HardPhuck: 1 every 10 seconds
[09:10] dnjaramba has joined the channel
[09:10] HardPhuck: and those are small documents, tweet-kind
[09:11] martin_sunset: HardPhuck: I see. You could Do API push easily then.
[09:11] HardPhuck: any useful links?
[09:11] __tosh has joined the channel
[09:11] martin_sunset: Basically implement a web hook system like github, to keep it super simple
[09:11] yatesy has joined the channel
[09:12] HardPhuck: hmm on the other hand, I'm just checking the rabbit.js
[09:12] HardPhuck: seems easy enough
[09:13] test1 has joined the channel
[09:13] booyaa: martin_sunset: any joy with the rest api service discovery?
[09:13] martin_sunset: booyaa: Already implemented. Super smooth. Now creating te docs from it
[09:13] test1: dd
[09:13] test1: hi
[09:14] test1: someone here/
[09:14] martin_sunset: test1: Hmm, yeah I think so;)
[09:15] secoif: HardPhuck you could also use http://redis.io/topics/pubsub
[09:15] disappearedng: I find myself doing a lot of this: _(this.users).chain().values().each(function(user) { Any shorter way to do this with underscore?
[09:15] zilch: secoif, thanks :)
[09:15] booyaa: martin_sunset: groovy!
[09:16] secoif: disappearedng what are you trying to do there?
[09:16] disappearedng: this.users is a userId: UserInstance object I want to call user.fireSeomthing()
[09:16] HardPhuck: hm ok
[09:16] HardPhuck: will try that as well
[09:17] leo2007 has joined the channel
[09:17] Locke23rus has joined the channel
[09:17] leo2007: My npm seems to behave differently on Linux and OSX.
[09:18] SubStack: zilch: also check https://github.com/dominictarr/event-stream
[09:18] lzskiss has joined the channel
[09:18] secoif: disappearedng what's the chain() for in there
[09:18] leo2007: On Linux, it seems it installs libs in ~/.some_dir but on OSX, it installs in node_modules of current directory.
[09:18] disappearedng: you can't chain unless you have that
[09:18] disappearedng: lolz
[09:18] secoif: what are you chaining?
[09:18] disappearedng: wtf? do you know underscore?
[09:18] secoif: the values?
[09:19] HardPhuck: leo2007: it depends on the user
[09:19] HardPhuck: and how you install modules
[09:19] leo2007: npm install MODULE
[09:19] secoif: disappearedng no reason to act like an asshole when I'm trying to help you. it looks like you're just looping over an object?
[09:19] HardPhuck: if you do -g then it installs them globally
[09:19] ccare has joined the channel
[09:19] bearnard has joined the channel
[09:19] lperrin1 has joined the channel
[09:19] HardPhuck: if you do npm install module it will install it in the current directory
[09:19] disappearedng: secoif: sorry I come off as an asshole. Are you familiar with underscore?
[09:20] SubStack: from earlier: http://substack.net/images/separation_of_concerns.png
[09:20] lperrin1 has joined the channel
[09:20] aaronmcadam: hehe
[09:20] leo2007: HardPhuck: is ~/.npm where npm caches its downloads?
[09:20] tytsim has joined the channel
[09:21] secoif: disappearedng yes, I'm not sure how the chain is helping you though since you're only calling .each on values, not a chaining whole bunch of other methods
[09:21] icebox has joined the channel
[09:21] zomg: Is there any common solution to using npm modules you've patched yourself?
[09:21] disappearedng: a = {1:2, 3:4}; a.keys().each(function(k) { console.log(k);}); TypeError: Object #