[00:00] mAritz has joined the channel [00:01] ryah_: node includes scons already [00:02] Aria: Yeah? As part of v8? [00:02] dysinger has joined the channel [00:02] tj: id imagine it would have to lol [00:03] ryah_: http://github.com/ry/node/tree/master/tools/scons/ [00:03] ryah_: no [00:04] Aria: Ooh, there's a scons-local. I did not know about this! [00:04] Aria: Wow. And even works on ancient python [00:04] Aria: Nice. [00:04] trotter has joined the channel [00:04] robmason has joined the channel [00:05] captain_morgan has joined the channel [00:05] Blackguard has joined the channel [00:06] yviktorov has joined the channel [00:07] willwhite has joined the channel [00:08] banjiewen: where's the best place to learn about node/v8's memory mgmt and GC? [00:09] diggersf has joined the channel [00:10] modular has joined the channel [00:13] flintf has joined the channel [00:15] rnewson has joined the channel [00:15] rnewson has joined the channel [00:16] devinus- has joined the channel [00:19] batasrki_u has joined the channel [00:20] rasztasd has joined the channel [00:21] rasztasd has left the channel [00:21] MikhX has joined the channel [00:21] bentruyman has joined the channel [00:22] CIA-93: node: 03Ryan Dahl 07writev * r112d0c3 10/ (10 files in 5 dirs): Rip out the old TLS implementation - http://bit.ly/8XujHc [00:22] CIA-93: node: 03Ryan Dahl 07writev * rcc44e34 10/ (6 files in 4 dirs): dumper - http://bit.ly/cz7qng [00:22] CIA-93: node: 03Ryan Dahl 07writev * r982c3d5 10/ (3 files in 3 dirs): ... - http://bit.ly/bMLYAm [00:22] CIA-93: node: 03Ryan Dahl 07writev * r10187e3 10/ (test/pummel/test-dumper2.js test/fixtures/dumper2.js): move - http://bit.ly/bLZUJe [00:24] pedrobelo has joined the channel [00:27] Aria has joined the channel [00:29] omygawshkenas has joined the channel [00:30] isaacs: ryah_: w00t! writev! [00:30] rcy has joined the channel [00:31] echosystm has joined the channel [00:32] deepthawt has joined the channel [00:32] Akufen has joined the channel [00:32] Akufen has joined the channel [00:35] echosystm: whats the best kind of database for easily/efficiently mapping to js objects? [00:35] echosystm: i assume documented oriented like mongodb/ [00:35] echosystm: ? [00:36] batasrki_u: echosystm: the document db that maps JS objects the closest would be couchdb, IMO [00:36] echosystm: ok [00:37] echosystm: say you have some "Person" objects, with each person having a collection (array) of "Child" objects [00:38] echosystm: in json you'd have something liek this... {name: 'whatever', children: [, ]}... correct? [00:39] echosystm: assuming that is correct, what is the best way to handle retrieval of related objects? [00:39] batasrki_u: echosystm: that would an array of Child object ids [00:39] pengwynn has joined the channel [00:39] echosystm: yes, a child may belong to many Person objects [00:39] echosystm: so you wouldnt want to duplicate the whole object and instead just store a reference [00:40] batasrki_u: echosystm: in mongodb, you'd have to run first a query to select the Person object and then a query to select all Child objects referenced by the object ids [00:40] echosystm: ok [00:40] batasrki_u: I don't think it'd be much different in couch [00:40] echosystm: now lets say both People (parents) referring to a child are deleted from the db [00:40] echosystm: is there any automagic way to make the db purge the children? [00:41] batasrki_u: I don't think so [00:41] echosystm: ok [00:41] batasrki_u: if you lose the parent reference, it'll be hard to find the orphaned children [00:42] batasrki_u: this is true in any dbms where the cascading delete constraint hasn't been set up [00:42] echosystm: yep [00:42] echosystm: i'm just concerned about failed transactions [00:42] batasrki_u: what do you mean failed transactions? [00:42] echosystm: eg. if a parent is deleted then something crashes before children can be manually GCed [00:43] echosystm: anyway, disasters aside, i have 1 more question :P [00:43] sprout has joined the channel [00:44] echosystm: how do you model inheritance in a document db? [00:45] batasrki_u: that's a tough question [00:45] batasrki_u: why do you need inheritance? [00:46] TheEmpath has joined the channel [00:46] echosystm: its a requirement of my software [00:47] batasrki_u: ok, but that doesn't answer the why really [00:47] echosystm: ok, i'll give you an example [00:47] echosystm: my job is to work on the network managment system of an ISP [00:48] echosystm: our network obviously has lots of Devices [00:48] echosystm: a Device might also be a Router [00:48] rbranson: document db's don't typically have schemas... so just stick the data in there [00:48] echosystm: at the level of a "Device", we handle DNS and so on [00:48] JimBastard: ahaha i dont think ive ever heard indexzero curse soo much [00:48] echosystm: at the level of a "Router", we handle interfaces etc. [00:49] echosystm: thus, we need the ability to retrieve the "Device" portion of "Routers" very often [00:49] JimBastard: echosystm: http://techno-weenie.net/images/2010/05/fault-tolerance.png [00:49] echosystm: haha [00:50] MikhX_ has joined the channel [00:50] JimBastard: except you write it in javascript as a couchdb view [00:50] JimBastard: its actually pretty easy, there is a couchdb book [00:50] JimBastard: or you can use mongo [00:51] echosystm: so hang on [00:51] wilmoore has joined the channel [00:51] rwaldron_ has joined the channel [00:52] echosystm: the way i look at it, i have two options for handling inheritance in an ODM [00:52] herbySk74 has joined the channel [00:52] echosystm: 1. smash all objects in the same heirarchy into one store, and make sure they all have a 'type' attribute [00:53] echosystm: 2. have one store per inheritance level, with each object having the same key as its parent in another store [00:53] echosystm: yes? no? [00:54] metad has joined the channel [00:54] echosystm: obviously option 2 is a heck of a lot harder, because every operation would work on multiple stores [00:55] JimBastard: i like how in test driven everything is suppose to work but then it magically fails. i like how in hack and slash nothing is suppose to work, but then it magically never breaks. [00:56] batasrki_u: echosystm: how many properties of the Device are going to change and are they changed per type? [00:56] echosystm: pretty much all of them other than the ID and... what do you mean per type? [00:58] batasrki_u: what I mean is, are there any Device properties that will change if the device type changes. So, can a Router share the same Device document with a Switch, say. [00:58] s0enke has joined the channel [01:02] echosystm: nope [01:02] echosystm: the behaviour of properties is bound to the type [01:02] echosystm: i think i answered my own question though with 1. above [01:03] echosystm: eg. within one store... [01:03] echosystm: { id: 1, ip: 'x', type: 'Device' } [01:03] benburkert has joined the channel [01:03] batasrki_u: echosystm: yeah, that one makes the most sense [01:03] sarmiena_ has joined the channel [01:03] echosystm: { id 2, ip: 'x', ports: 8, type: 'Switch' } [01:04] batasrki_u: echosystm: just be careful that type is not a reserved keyword in either the ODM you're using nor the DB [01:04] echosystm: ah, yep [01:04] echosystm: ran into that problem once before :P [01:04] echosystm: in terms of references, perhaps i could also do someting like this... [01:04] batasrki_u: as have probably everyone here [01:05] echosystm: { _store: 'Store', _key: 'x' } [01:05] echosystm: and make some sort of mapper that will automagically resolve references whenever it sees something like that [01:06] echosystm: this way i wouldnt need to define a schema [01:07] echosystm: only problem is... without a schema, cleaning up unwanted referenced objects would be essentially impossible [01:07] echosystm: hrm [01:08] batasrki_u: ahhhh, tradeoffs [01:11] miccolis has joined the channel [01:14] softdrink: TEEHEE! i have mouse reporting working in a terminal with node now :D [01:14] TomsB_ has joined the channel [01:14] Yuffster has joined the channel [01:16] c4milo: congrats :) [01:18] bencc has left the channel [01:19] norviller has joined the channel [01:22] tekky has joined the channel [01:27] jashkenas has joined the channel [01:27] mbrochh has joined the channel [01:29] sarmiena_: how does the io setpath work for socket.io-node? i'm trying to have rails point to the socket.io/socket.io.js file that node is serving up [01:29] sarmiena_: but then i see a request for /socket.io/lib/vendor/web-socket-js/WebSocketMain.swf going to the rails server, which it cannot find [01:30] stepheneb has joined the channel [01:31] mtodd has joined the channel [01:33] jpld has joined the channel [01:33] jpld has joined the channel [01:36] sprout has left the channel [01:37] sprout has joined the channel [01:42] langworthy has joined the channel [01:43] benburkert has joined the channel [01:43] mikeal has joined the channel [01:43] softdrink has joined the channel [01:45] shaver: oh, where is mjr when I need to make an unreasonable demand of him? [01:47] Aria has joined the channel [01:49] JimBastard has joined the channel [01:50] stepheneb_ has joined the channel [01:51] mbrochh has joined the channel [01:51] softdrink: ACTION twiddles his thumbs and waits on a compile [01:53] necrodearia has joined the channel [01:54] megana has joined the channel [01:54] megana: have you guys figured out how to write your web apps yet? [01:55] necrodearia has joined the channel [01:55] matt_c has joined the channel [01:55] megana: I need the optimum design pattern, node makes it tricky with all those callbacks [01:55] echosystm: what do you mean megana ? [01:55] megana: well... [01:55] _808 has joined the channel [01:55] megana: it's a very different way of programming, so it can be easy to create messes. [01:56] megana: I am not sure what are and aren't good practices anymore [01:56] echosystm: you can still implement patterns like MVC, you just need to think a bit differently [01:56] Tim_Smart has joined the channel [01:56] megana: but not ddd [01:56] banjiewen has joined the channel [01:56] megana: cause there's no classes [01:56] naturalethic_ has joined the channel [01:57] echosystm: i'm not familiar with DDD, so i can't comment unfortunately [01:57] megana: well, you make some repositories and orient your database around that [01:58] pengwynn has joined the channel [01:58] wilmoore has joined the channel [01:58] echosystm: most vague description ever. :P [01:59] megana: :P [02:01] cardona507 has joined the channel [02:01] quirkey has joined the channel [02:02] softdrink: ewwwwwwwwww i just triple nested some switches *sigh* [02:02] EyePulp has joined the channel [02:02] megana: eww [02:03] shaver: helper functions? in my JS? it's more likely than you think [02:04] megana: so when you want to make a function that takes several arguments, do you use a dto, or just have a big list of arguments? [02:04] megana: and.... if you do that. How will anyone else know what all the args are supposed to be? [02:04] megana: or how to use them properly? o_O [02:05] s0enke has joined the channel [02:07] c4milo: megana: the best approach is to have a js object (yes a kind of dto) [02:07] softdrink: woot, mouse scroll events in a terminal now [02:07] SubStack: I hate design patterns [02:07] megana: why? [02:07] Raevel: megana: i use a schema definition/parser for args sometimes [02:08] c4milo: megana: because to have 20 arguments in a function is crazy :) [02:08] megana: c4milo, you mean with a function that exposes stuff? [02:08] SubStack: megana: because when a pattern shows up again and again in code it's a sign that it should be abstracted into a reusable library [02:08] megana: what does a software pattern mean to you substack? [02:08] c4milo: usually you just need to understand patterns, but most of them are already implemented by frameworks [02:08] SubStack: meta-DRY, if you will [02:09] MikhX has joined the channel [02:09] c4milo: s/but/because/i [02:09] shaver: if you have 20 parameters to a function, whether wrapped in an object or not, you need to split that function up [02:10] c4milo: shaver: true [02:10] shaver: first, kill all the booleans [02:10] megana: what about something listening to a web form? [02:10] SubStack: software patterns are mathematical structures that appear commonly [02:10] shaver: because they're cryptic as hell, and usually indicate something that should be in the name [02:10] c4milo: shaver: 5 params is too much [02:10] SubStack: they usually map to well-understood higher-order combinators [02:10] c4milo: for more than 5 params i'll use an object [02:11] c4milo: even 4 [02:11] SubStack: 3 is too much [02:11] SubStack: unless you are hacking on [].slice.call(arguments) [02:11] megana: substack, so how is ioc a mathematical pattern? :P [02:12] dgathright has joined the channel [02:12] SubStack: continuations, obviously [02:12] megana: uh huh [02:12] shaver: obviously! [02:12] c4milo: ahaha [02:13] SubStack: the phrase "inversion of control" even appears in the wiki article [02:14] unomi has joined the channel [02:14] SubStack: fuck design patterns, learn haskell instead [02:14] SubStack: :p [02:14] JimBastard: SubStack: did you guys win yet? [02:14] JimBastard: :-D [02:15] SubStack: emails should be sent in < 3 hours, according to an HN thread [02:15] softdrink: ....aaaaand 256 color support :D [02:15] c4milo: hahaha softdrink [02:15] JimBastard: i saw some other company apply to yc for a node.js hosting platform. if they get in ill be annoyed [02:15] softdrink: modern terminals ftw. [02:15] softdrink: mac os x terminal.app FAIL [02:16] SubStack: node.js hosting is the new hotness it seems [02:16] JimBastard: also, rackspace doesnt really like it when you create a shit ton of instances really fast [02:16] megana: what's wrong with terminal.app? [02:16] softdrink: java = old and busted. :D [02:16] SubStack: unless you already have infrastructure up and code written I doubt a new startup will be able to keep up [02:16] megana: lol old and busted [02:16] softdrink: megana: mouse reporting doesnt work correctly, doesn't have 88 or 256 color support... [02:17] JimBastard: SubStack: aye, we've got a shit ton of code [02:17] JimBastard: should have launched yesterday, dealing with some last minute rackspace snafus [02:17] megana: ACTION hugs her mac [02:17] stepheneb has joined the channel [02:17] SubStack: awesome [02:17] megana: how does this rackspace nodejs work? [02:17] softdrink: megana: (that said, i use a mac... just iTerm) [02:17] SubStack: JimBastard: so it looks like we'll be launching far sooner than we thought [02:17] JimBastard: o? [02:18] JimBastard: megana: http://github.com/nodejitsu/node-cloudservers [02:18] SubStack: since it was crazy easy to get windows instances set up in ec2 and integrated with our stack [02:18] JimBastard: is part of it [02:18] JimBastard: yeah, we are gonna add ec2 next [02:18] megana: neat [02:18] megana: so that keeps me from having to worry about keeping my app from crashing? [02:18] JimBastard: no [02:18] SubStack: and hot damn dnode has been so excellent for managing these processes [02:19] megana: so there's nothing like say... apache handling js files where an end user just writes js code and puts it in a folder [02:19] SubStack: if you need to write a new service to do statistics or some new functionality hook you can just DNode.connect to the service, it's so nice [02:19] xla has joined the channel [02:20] SubStack: and to expose a new api to the browser side is just as easy [02:20] megana: yeah... I don't get the whole cloud thing. I'm kind of slow :) [02:20] JimBastard: megana: we maintain a pool of node.js servers to deploy apps to [02:21] JimBastard: that project i sent you is for provisioning servers on the rackspacecloud [02:21] unomi has joined the channel [02:22] c4milo: JimBastard: when are you going to launch that ? [02:22] jesusabdullah: SubStack: Browserling's on its way? [02:23] JimBastard: c4milo: im just waiting on indexzero, hes been having last minute issues with rackspace all day [02:23] JimBastard: it could be any minute lol [02:23] aubergine has joined the channel [02:23] JimBastard: everything works locally [02:23] JimBastard: at least the bare bones functionality [02:24] SubStack: jesusabdullah: hey now, you should already know that [02:25] jesusabdullah: SubStack: Hah [02:26] pkrumins has joined the channel [02:26] pkrumins has joined the channel [02:27] c4milo has left the channel [02:29] [[zz]] has joined the channel [02:29] rwaldron__ has joined the channel [02:33] tmpvar: you lose w3c: "This is in logical order and not in document order." [02:34] shaver: now I want me some non-blocking JSON parser [02:35] shaver: as though it were really a blocking factor for me [02:40] mbrochh_ has joined the channel [02:42] unomi has joined the channel [02:43] mikeal has joined the channel [02:43] okuryu has joined the channel [02:45] AAA_awright_ has joined the channel [02:46] softdrink: HOKAY, so. terminal utility module so far: http://pastebin.com/27SKvd4h [02:48] softdrink: you basically just attach event listeners to watch for key presses and mouse events after you instantiate it [02:48] softdrink: and it has some basic cursor/style manipulation stuff [02:49] cardona507 has joined the channel [02:50] [[zz]] has joined the channel [02:51] shaver: that's terrifying [02:51] technoweenie has joined the channel [02:52] unomi has joined the channel [02:52] SubStack: JimBastard: just heard, rejected [02:52] JimBastard: SubStack: fuck yc, they dont know anything [02:52] JimBastard: you are on pkrumins team right? [02:52] SubStack: yep [02:52] JimBastard: thats fucking bullshit [02:52] SubStack: yeah it seems like they are shit at picking winners [02:52] pkrumins: we'll write it and do it live [02:52] pkrumins: we'er actually about to launch [02:52] JimBastard: hell yeah [02:58] unomi has joined the channel [02:58] deepthawtz has joined the channel [03:01] stepheneb has joined the channel [03:02] tilgovi has joined the channel [03:02] mikeal has joined the channel [03:02] jvolkman_ has joined the channel [03:04] rafaelcaricio has joined the channel [03:06] blaines has joined the channel [03:06] LionMadeOfLions has joined the channel [03:07] springmeyer has joined the channel [03:09] blaines has joined the channel [03:11] blaines has joined the channel [03:14] Me1000 has joined the channel [03:14] mtodd has joined the channel [03:15] blaines has joined the channel [03:16] stepheneb has joined the channel [03:16] dysinger has joined the channel [03:18] blaines has joined the channel [03:19] willwhite has joined the channel [03:21] melgray has joined the channel [03:22] Yuffster has joined the channel [03:28] matt_c has joined the channel [03:31] boaz_ has joined the channel [03:32] necrodearia has joined the channel [03:32] blaines has joined the channel [03:32] modular: i'm using http.Clients to make search requests. when the request closes, i want to spawn another one. here's my current method: http://pastebin.com/hsUb64RM [03:33] shaver: modular: I have something like that (with redis requests) [03:33] modular: but this doesn't seem right. am i going to cause a stack overflow eventually? [03:33] shaver: no [03:34] shaver: when your callback is called, the outer function has returned [03:34] shaver: then some network stuff has happened [03:34] shaver: then it gets called from a mostly-empty stack [03:36] modular: hm. i guess it's confusing, because the scope from the containing function still exists. it still knows what "host" is, for example. [03:36] shaver: yes, the closure retains that scope [03:36] shaver: or referenced portions of it, at least [03:37] bentruyman has joined the channel [03:38] ajpiano has joined the channel [03:40] banjiewen has joined the channel [03:40] noahcampbell has joined the channel [03:41] necrodearia has joined the channel [03:42] modular: interesting, thanks. i'm trying to understand a lot of new concepts at once, after 10 years of mostly php. [03:42] Tim_Smart: shaver: As in can parse chunks as they come in? [03:43] shaver: yeah, so it parses during the network waits [03:43] shaver: not at the end of the network waiting [03:46] modular: yeah, i was happy that was possible. i actually have 5 of these search requests going out at once, each to a different server. [03:46] modular: and i'm able to mix it all together for the user as it comes in. really cool. [03:46] Aria: getting used to closures is a head-trip. A good one. [03:47] modular: :) [03:48] shaver: I need to finish extending async so that you can have requests done in parallel, but only up to N outstanding at a time [03:48] shaver: for some of the API bulk-loading I'm doing [03:48] shaver: serial: too slow [03:48] shaver: fully parallel: can someone restart apache on the API server? [03:48] modular: hehe [03:50] pkrumins: anyone knows how to edit images in macbooks? [03:50] pkrumins: i just got a macbook and i am totally clumsy with this [03:50] SubStack: get the gimp? [03:51] pkrumins: gimp! [03:51] pkrumins: trying iphoto now [03:51] modular: pirate photoshop like 99% of other mac users ;p [03:51] Aria: Gimp is the only good free option, but it comes with the UI clumsy. [03:51] mbrochh has joined the channel [03:51] Aria: Seashore's okay [03:51] pkrumins: installing these [03:51] Aria: http://flyingmeat.com/acorn/ is nice. [03:52] necrodearia has joined the channel [03:52] pkrumins: also is there a shortcut on mac to minimize ALL windows? (show desktop) [03:52] necrodearia has joined the channel [03:52] pkrumins: otherwise i have to click like 10 times to minimize each window separately [03:53] pkrumins: and then click again to restore them [03:53] pkrumins: makes me go crazy [03:53] Aria: Usually one uses exposé [03:53] Aria: (hot corner or hot key for it; defaults vary among models) [03:53] modular: yeah, four finger swipe up or down [03:53] pkrumins: oh hah [03:54] pkrumins: this is awesome [03:54] modular: :D [03:54] Aria: Hehe. Welcome to the Mac. Enjoy your stay. [03:54] blaines has joined the channel [03:54] Aria: It's not that they play the game better than Windows. It's that they're playing an entirely different game. [03:54] pkrumins: oh and after i am in expose, is there a way to free the desktop? cause i can't still click anything on the desktop [03:54] Aria: 'free'? [03:54] pkrumins: umm [03:55] Aria: You should be able to manipulate things, but it won't stick. [03:55] pkrumins: send the expose preview ions away [03:55] pkrumins: so that i can click desktop icons [03:55] modular: try swipe 4 fingers up [03:55] Aria: Oh, not that exposé. There's a mode where the windows fly out. [03:55] Aria: Not zoom out. [03:55] pkrumins: yeah [03:55] pkrumins: it's 4 fingers up! [03:55] Aria: (Wish I had a new macbook with the multitouch.) [03:55] deepthawtz has joined the channel [03:56] pkrumins: i got the new macbook air a few days ago [03:56] Aria: How do you like it? [03:56] Aria: I'm tempted. [03:57] modular: also be sure to check out the "spaces" feature in system preferences. [03:57] pkrumins: Aria: i love it! [03:58] Aria: Sweet! [03:58] pkrumins: Aria: absolutely amazing [03:58] pkrumins: go get one! [03:58] Aria: Fast as rumoured for something with a slow CPU? [03:58] pkrumins: modular: looking at that [03:58] pkrumins: Aria: it's fast yeah [03:58] blaines has joined the channel [03:58] pkrumins: the cpu is dual core, i think 1.4ghz intel thing [03:58] Aria: Sweet. I'll have to give it more thought. [03:59] Aria: Yeah. Core 2 Duo. [03:59] Aria: Newer but slower rev of what's in this macbook that I have. [03:59] modular: pkrumins: set up 3 or 4 spaces, hotkey them to command+1, command+2, etc. you can switch back and fourth between them so fast, it's like having multiple monitors. [03:59] pkrumins: OH HAH! [03:59] pkrumins: virtual desktops [03:59] halfhalo: Tri monitor ftw [03:59] modular: ya :) [03:59] pkrumins: i had been looking for them for a few days now [03:59] pkrumins: bwahaha [04:00] pkrumins: now i just have o locate the system preferences [04:00] pkrumins: aha, here they are [04:00] Aria: Apple menu! [04:00] ajpiano has joined the channel [04:01] pkrumins: hah [04:01] pkrumins: this is so awesome [04:01] pkrumins: screw the pc. [04:01] pkrumins: this is so much better [04:02] pkrumins: got shell and everything, no need to install software [04:02] Aria: Ayep. [04:02] pkrumins: works out of the box as soon as i have unpacked it [04:02] SubStack: well try a nice linux desktop too with compiz and/or xmonad [04:02] Aria: Also: use the 'open' command. try typing "open ~" [04:02] pkrumins: ya [04:02] pkrumins: will try that on thinkpad! [04:02] pkrumins: Aria: where is this? [04:02] pkrumins: Aria: can't quite see it [04:03] pkrumins: oh [04:03] Aria: In a terminal. [04:03] pkrumins: in the shell [04:03] pkrumins: yeah [04:03] JimBastard: hrmm systems seem nominal [04:03] Aria: Seamless integration of GUI and command line. [04:03] jesusghostullah: pkrumins: Learning how2mac? [04:03] JimBastard: we have no way of updating all our instances at once though, oops [04:03] pkrumins: jesusghostullah: yeah [04:03] pkrumins: jesusghostullah: got the macbook air, not sure if i told you [04:03] jesusghostullah: Is it everything you dreamed? [04:03] jesusghostullah: Naw, I remembered that [04:03] JimBastard: we can execute bash scripts async though, so it shouldnt be too hard [04:03] JimBastard: (across servers) [04:04] pkrumins: jesusghostullah: it's cool, yeah [04:04] pkrumins: Aria: awesome! [04:04] jesusghostullah: Sweet [04:04] pkrumins: Aria: i also set up this 'tab' alias for myself [04:04] pkrumins: Aria: so i can type 'tab' and it opens a new shell tab! [04:04] Aria: Fun! [04:04] pkrumins: then i can cycle throught house with shift+applekey+left right [04:04] Aria: Though command-T is reasonable too ;-) [04:04] pkrumins: and then tmux [04:04] jesusghostullah: You're using tmux? [04:04] pkrumins: oops, cmd+t [04:04] pkrumins: yeah i ditched screen [04:05] pkrumins: cause i had to patch it to get vertical splits [04:05] pkrumins: beh [04:05] pkrumins: and tmus already has those [04:06] jesusghostullah: hmm [04:06] jesusghostullah: Haven't tried tmux yet [04:06] jesusghostullah: would like to someday though [04:06] jesusghostullah: just have been busy/lazy [04:07] pkrumins: i spent a few hours learning it [04:07] pkrumins: the shortcuts and config [04:07] pkrumins: and customizing it [04:07] dohtem has joined the channel [04:07] dohtem has joined the channel [04:08] jesusghostullah: Are the shortcuts sane? [04:08] pkrumins: yeah just like screens [04:09] pkrumins: wrt sanity [04:09] pkrumins: but different layout [04:09] pkrumins: like ctrl+b+c creates a new win in tmux, but in screen it's ctrl+a+c [04:09] pkrumins: but i remapped ctrl+b to ctrl+] [04:10] jesusghostullah: ctrl-b, huh? Interesting. ctrl-] would be fine with a full keyboard, but mine's not so well-behaved :) [04:10] pkrumins: ctrl+b is a bit stupid [04:10] pkrumins: cause you dont have fingers on b [04:11] pkrumins: oh snap got to restart [04:11] pkrumins: installed pack of updates [04:12] necrodearia has joined the channel [04:13] shaver: ryah_: you want me to s/sys/util/ the node-amqp stuff too, while I'm in here? [04:15] twoism has joined the channel [04:16] stepheneb has joined the channel [04:16] [[zz]] has joined the channel [04:18] ryah_: shaver: nah [04:18] ryah_: we should take out that warning [04:19] ryah_: it's too soon [04:21] CIA-93: node: 03Ryan Dahl 07master * r6ce007e 10/ lib/sys.js : Remove warning in 'sys' - too aggressive - http://bit.ly/97cjui [04:21] shaver: also, it doesn't seem to emit error for login mismatch [04:21] shaver: amqp, I mean [04:21] shaver: but I got it working with my site [04:22] jamescarr has joined the channel [04:22] ryah_: shaver: a test and a fix are much appriciated [04:24] [[zz]] has joined the channel [04:25] aldosarmiento has joined the channel [04:25] shaver: yeah [04:25] shaver: not sure how to do the test, I guess maybe against the dev.rabbitmq one [04:26] jamescarr: shaver, what's the problem? [04:26] aldosarmiento: Do you have to do an in memory index of clients => channels for socket.io pub/sub with redis? [04:26] shaver: jamescarr: when your auth credentials are wrong with node-amqp, it doesn't emit error [04:26] jamescarr: I know there were couple blind alleys I went down when starting with node-amqp, but so far it's been rock solid [04:26] shaver: just quits [04:26] jamescarr: ah [04:28] jamescarr: cant say anything there... I've been using amqp internally so had no need to configure authentication [04:29] jamescarr: making some progress replacing jasmine's ruby gem with a node.js implementation [04:29] jamescarr: I mean, node,js based commandline app / runner [04:30] blaines has joined the channel [04:30] shaver: I just had a typo in the name of the account, which isn't guest/guest for our public broker [04:30] shaver: took me a little while, but better once I found NODE_DEBUG_AMQP :-) [04:32] JohnDav: ryah_: the node_chat project you have, with only long-polling. any idea how scalable that approach was on node? [04:33] pkrumins has joined the channel [04:34] pkrumins: screw yc! i am investing my own money in our company! [04:34] shaver: that's the spirit [04:35] pkrumins: here is our first product: http://i.imgur.com/UXBdJ.png [04:35] pkrumins: interactive web testing service [04:36] pkrumins: through stackvm - www.stackvm.com [04:38] Yurik has joined the channel [04:38] JimBastard: pkrumins: agreed [04:39] pzich has joined the channel [04:40] Aku has joined the channel [04:40] Blink7 has joined the channel [04:42] blaines has joined the channel [04:43] tmpvar: boo @ frames [04:43] SubStack: frames? [04:43] tmpvar: yeah, they suck. [04:44] Aria: Quite. [04:44] SubStack: it's true [04:44] Aria: iframe seamless for the win. Now if only browsers did it. [04:44] SubStack: iframes are super annoying [04:44] amerine has joined the channel [04:44] tmpvar: Aria, I have good news. level2/html is at 88% passing [04:45] tmpvar: fgnass did all the easy stuff (joking) [04:45] SubStack: especially for passing javascript messages around through [04:45] cloudhead: does node not install with python 3? [04:45] pkrumins: pesky frames. [04:45] Aria: woo! [04:45] Aria: SubStack: Seamless ones are much less so [04:46] Aria: (they work like "include" mostly) [04:46] SubStack: I have not heard of these before! [04:46] Aria: Just no support yet. [04:46] deepthawtz has joined the channel [04:49] pquerna: okay [04:51] aldosarmiento: is there a common design pattern for creating url base socket.io channels for node? [04:51] SubStack: aldosarmiento: you can .setPath on the stream if that's what you mean [04:52] SubStack: it's a global setting though, at least in 0.5x [04:52] aldosarmiento: io.setPath? how can i use that to create channels for broadcasting? [04:53] aldosarmiento: "If you won't leverage Node.JS to serve your files, make sure to call `io.setPath()` with the path to your client side" [04:53] aldosarmiento: that's what the socket.io website says about setPath [04:54] bartt has joined the channel [05:01] hzin has joined the channel [05:02] langworthy has joined the channel [05:04] pedrobelo has joined the channel [05:05] twoism has joined the channel [05:07] matt_c has joined the channel [05:09] robmason has joined the channel [05:16] SubStack: aldosarmiento: you want channels? o_O [05:16] SubStack: aldosarmiento: you could always build something like that on dnode, my rpc system built on socket.io [05:18] robmason has joined the channel [05:20] rcy has joined the channel [05:21] JimBastard: SubStack: do you think maybe you would compete with too many yc companies ? [05:22] JimBastard: im trying to figure out why you guys didnt get in [05:23] SubStack: Compete with yc companies? Seems unlikely. [05:24] SubStack: since this tech is so new and shiny [05:24] jpld has joined the channel [05:24] SubStack: YC rejected learnboost and couchdb too, puzzlingly [05:24] pzich has joined the channel [05:25] JimBastard: i want to start an incubator where we only give money to bad asses [05:25] pquerna: make as much money as pg, and then good luck :) [05:25] JimBastard: im on it [05:25] Tprice has joined the channel [05:25] SubStack: awesome [05:26] JimBastard: clouckick is yc right ? [05:26] SubStack: JimBastard: build a news site too for recruiting purposes [05:26] JimBastard: ohh.io , i really want to [05:26] SubStack: yeah but cloudkick does server uptime reporting [05:26] Tprice: how do i make a var read and write from all over the script? [05:26] SubStack: not really the same space at all [05:26] pquerna: JimBastard: yes, cloudkick was w09. [05:27] JimBastard: we are building some tools that are similar to cloudkick [05:27] Aria: Tprice: I'm not sure what you mean. [05:27] SubStack: JimBastard: maybe it has to do with how little time they spend on each application [05:27] JimBastard: since we have the common problem of managing many servers [05:27] SubStack: since they have so much volume to get through [05:27] JimBastard: i mean, pkrumins is kinda a beast [05:27] shaver: JimBastard: does libcloud help you? [05:27] JimBastard: shaver: sup? [05:27] Tprice: is the scope the same as javascript? [05:28] Tprice: dont know why a var is not changing [05:28] Aria: Tprice: Yes, node is javascript. [05:28] Aria: Tprice: What sort of variable? Changed from where? [05:28] Tim_Smart: JimBastard: How many switches have you got to flick? :) [05:29] JimBastard: Tim_Smart: like 12, but they were taking like 1.5 hours to flip [05:29] JimBastard: and then after we flip the switch, we had to look and rewire the whole thing and turn off and on again [05:30] JimBastard: we've employed a way to rewire without having to wait 1.5 hours now, so things are moving along faster [05:30] JimBastard: lol [05:30] Tprice: ok so i changed na if you wonder http://pastebin.com/iKCtSZiZ [05:30] Tprice: why is something not changing? [05:30] JimBastard: cloudhosting is actually non-trivial [05:30] JimBastard: if you are rolling your own [05:30] JimBastard: ^_^ [05:31] Tprice: rocklinux? [05:31] pkrumins: beast! [05:31] JimBastard: heh, thats what i can people with more github followers then me [05:32] Aria: Tprice: Because it's changed after you print it. [05:32] Aria: Tprice: mysql.query starts, but does not run the callback right away. [05:32] Aria: Tprice: So you set it up, start the query, then print the something. Then the query returns and something gets set. [05:32] Aria: (the function passed to mysql.query is called asynchronously) [05:33] pquerna: clouds are hard; I suggest shopping. [05:33] JimBastard: hard, but so fun to build [05:34] Aria: Tprice: Also, connect() doesn't connect right away. It too takes a callback. [05:34] Tprice: aria but on line 21 function(err, results, fields) is that not the call back? [05:34] Aria: Yes. But who says line 21 runs before the bit that prints? [05:34] Aria: (that's the callback to query, not to connect) [05:37] Tprice: aria: so what should i do about that? [05:37] Aria: Well, restructure your code. Stop thinking top to bottom, and more when-something-then-something [05:37] Aria: try printing inside the callback. [05:38] Aria: Try making smaller functions and passing them around by name. [05:38] Aria: function queryComplete(error, results, fields) { print here }; mysql.query('query string', queryComplete) [05:38] Tprice: i can do a sys.print(results) inside the call back works [05:39] Aria: Right. Because the callback happens later. [05:39] Aria: When mysql answers. [05:39] Aria: If you put the print below the callback, it runs FIRST, then mysql answers. [05:40] Aria: (read mysql.query as "mysql, START a query") [05:41] Tprice: ok note line 26 http://pastebin.com/YdheVh09 [05:41] Tprice: it get a print out [05:42] AAA_awright has joined the channel [05:43] Tprice: Aria: oh looking at it i get something been printed first [05:44] tmpvar: hrm, i think i found a bug in the tests [05:46] tmpvar: there are thousands, so im not too surprised [05:48] twoism has joined the channel [05:49] saschagehlich has joined the channel [05:51] Aria: Tprice: Yeah. It runs out of order -- grasping that is pretty much the trick to asynchronous programming. If you have to wait for something, you have to connect the parts. [05:51] Aria: And now, good night [05:51] mbrochh has joined the channel [05:56] matjas has joined the channel [05:59] AAA_awright_ has joined the channel [06:00] jakehow has joined the channel [06:07] deepthawtz has joined the channel [06:08] admc has joined the channel [06:18] MikhX has joined the channel [06:19] peutetre has joined the channel [06:22] robmason_ has joined the channel [06:24] jdalton has joined the channel [06:27] wilmoore has joined the channel [06:29] matjas has joined the channel [06:33] dgathright has joined the channel [06:35] hassox has joined the channel [06:36] robmason has joined the channel [06:37] jdalton has left the channel [06:37] dquestions has joined the channel [06:37] MikhX has joined the channel [06:38] shreekavi has joined the channel [06:38] sstreza has joined the channel [06:39] necrodearia has joined the channel [06:44] quirkey has joined the channel [06:48] muhqu has joined the channel [06:50] aldosarmiento: is there a hash object for v8? [06:52] masahiroh has joined the channel [06:53] faust45 has joined the channel [07:02] JimBastard: ACTION flipping more switches [07:04] dgathright_ has joined the channel [07:09] kawaz_air has joined the channel [07:16] MikhX has joined the channel [07:17] hassox has joined the channel [07:21] stalled has joined the channel [07:24] SamuraiJack has joined the channel [07:25] path[l] has joined the channel [07:25] jesusghostullah: I imagine these switches are large exposed wood-and-metal hinge affairs, JimBastard? [07:26] jesusghostullah: *whoosh* *CLICK* [07:27] mikedeboer has joined the channel [07:33] JimBastard: jesusghostullah: to actually get to the switch room requires putting on the ninja suits and battling down a 40 foot pitch black gauntlet of unknown terrors [07:34] mikew3c has joined the channel [07:34] JimBastard: we've been minutes away from launching for two days lol [07:34] vandenoever has joined the channel [07:34] vandenoever has joined the channel [07:34] saschagehlich has joined the channel [07:35] JimBastard: im taking the extra time to continue work on the client application [07:35] JimBastard: its gonna require nonstop updates for a month or two [07:36] JimBastard: if you wanna have fun you can start teasing @indexzero over twitter about the cluster [07:37] JimBastard: ask him where it is [07:37] JimBastard: :p [07:37] jesusghostullah: Where's the cluster? [07:37] jesusghostullah: What's the story there? [07:37] JimBastard: !tweet @indexzero who is your javascript, and what does he do? [07:39] TomSlick` has joined the channel [07:39] blaines has joined the channel [07:39] JimBastard: cluster is online, its just been taking longer to spin up 100 machines and bootstrap them then we'd like [07:40] JimBastard: we assumed that rackspace images would take less time to use then actually installing everything [07:40] JimBastard: kinda lame [07:40] shaver: pdsh ! [07:40] blaines has joined the channel [07:40] jesusghostullah: haha [07:41] jesusghostullah: I tweeted, "how u rackspace lol" >:D [07:41] JimBastard: :-D [07:42] JimBastard: cloud elasticity, do you haz [07:42] blaines has joined the channel [07:42] JimBastard: im kinda disappointed we werent ready nov 1, but its all good stuff here, just adding more stuff to backend [07:42] JimBastard: pointing the test domain dns to the new load balancer now... [07:43] jesusghostullah: could've been ready in time for THE ELECTION [07:43] jesusghostullah: S [07:43] jesusghostullah: Tea party candidate, it appears, got defeated [07:43] jesusghostullah: by a write-in [07:43] jesusghostullah: but we won't know until "write-in" is sorted out [07:44] blaines has joined the channel [07:44] micheil: ryah_: what's the correct capitalization of the name, Node.js? [07:46] shaver: "Node" [07:51] siebertm has joined the channel [07:52] mbrochh has joined the channel [07:52] mbrochh has joined the channel [07:52] ph^ has joined the channel [07:57] stephank has joined the channel [08:00] mif86 has joined the channel [08:01] mraleph has joined the channel [08:04] ph^ has joined the channel [08:05] simme has joined the channel [08:08] JimBastard: looks like indexzero is calling it quits again lol [08:08] JimBastard: i think im gonna have to jump into his code when he's sleeping [08:14] JimBastard: yeah hrmm. i think i can push the new site with some voodoo magic with a static pool size [08:18] saschagehlich has joined the channel [08:19] V1 has joined the channel [08:20] dquestions has joined the channel [08:23] delapouite has joined the channel [08:26] virtuo has joined the channel [08:26] stalled has joined the channel [08:34] codemanki has joined the channel [08:35] adambeynon has joined the channel [08:36] pkrumins: got a question about macbooks - suppose i open two chrome windows, and minimize one of them. i cant find a way to get the minimized one back, it kinda disappears in the black home. applekey-~ doesnt bring it up cuz it's minimized [08:36] pkrumins: any ideas how to get the other window back? [08:36] ajsie has joined the channel [08:36] jesusghostullah: You can click the chrome icon in the dock I think [08:36] jesusghostullah: That's where things go to hide iirc [08:36] pkrumins: yeah but its' not there [08:36] jesusghostullah: weird D: [08:36] pkrumins: i mean [08:36] pkrumins: chrome is there [08:36] pkrumins: but if i click it, it doesnt bring the minimized one up [08:36] jesusghostullah: JimBastard: indexzero is a grad student? [08:36] pkrumins: just brings the active one to the front [08:36] jesusghostullah: pkrumins: Weird! :S [08:37] jesusghostullah: I have no idea, having only used macs a few times [08:37] JimBastard: jesusghostullah: yeah [08:37] jesusghostullah: They bewilder me [08:37] jesusghostullah: Hah! Me too :D [08:37] jesusghostullah: Different field though, I'm sure. [08:37] JimBastard: we make a good team since hes soo smart and im dumb [08:37] jesusghostullah: I solved heat transfer equations while drinking screwdrivers this evening [08:37] jesusghostullah: I felt pretty BA [08:37] JimBastard: nice [08:37] jesusghostullah: ...still not done with the equations though [08:38] tjgillies has joined the channel [08:38] jesusghostullah: simple governing equation, annoying boundary conditions [08:38] ajsie: JimBastard: what is the status? =) [08:38] V1: pkrumins: Is it in a different "space"? [08:38] JimBastard: ajsie: things are moving along, we are making lots of improvements as we go [08:38] olivvv has joined the channel [08:39] JimBastard: im going to try and just get the new site up in the next few hours [08:39] ajsie: JimBastard: okay great =) [08:39] JimBastard: im a little disappointed, but we are making great progress [08:39] JimBastard: so its mixed feelings [08:39] olivvv: I want to try node.js ! [08:40] olivvv: but I fail at installing it on my vista laptop : https://github.com/ry/node/issues/issue/391 [08:40] ajsie: JimBastard: disappointed in what? [08:40] janm has joined the channel [08:40] olivvv: this may takes months to be resoleved, so what are my option ? [08:40] JimBastard: ajsie: not being live yet! [08:41] JimBastard: :-D [08:41] ajsie: JimBastard: yeah .. my app was going to be ready 1 year ago [08:41] olivvv: Should I use an online hosting and develop directly on that ? [08:41] ajsie: i havent yet really started =) [08:41] JimBastard: rackspace hasnt been ideal for what we are doing [08:41] ajsie: olivvv: like? [08:41] ajsie: olivvv: try linode [08:41] JimBastard: at least so far... [08:42] jetienne has joined the channel [08:42] ajsie: JimBastard: maybe Google storage or S3 then? [08:43] JimBastard: ajsie: ec2 and no.de me thinks [08:43] JimBastard: we'll keep it pluggable so people can pick if they want [08:43] JimBastard: maybe transload.it for storage [08:43] ajsie: yeah [08:48] shreekavi has joined the channel [08:50] xla has joined the channel [08:52] Druid_ has joined the channel [08:55] olivvv: ajsie:does that run node.js, or do I have to install it there too ? I'm not a linux, I have a php/js experience and want to play with node [08:56] ajsie: olivvv: you have to install it [08:56] ajsie: but its really simple [08:56] ajsie: or you can use webbynode i guess they have it preinstalled [08:57] ajsie: git clone git://github.com/ry/node.git && cd node && ./configure && make && sudo make install [08:57] ajsie: there is how you install it [08:57] olivvv: looks simple [08:58] olivvv: I ll look into this [08:58] ajsie: but do : sudo aptitude -y install build-essential autoconf flex man-db vim curl git-core subversion zip openssl libssl-dev libreadline5 libreadline-dev zlib1g zlib1g-dev libxml2-dev libxslt-dev [08:58] ajsie: first [08:58] ajsie: on a ubuntu/debian system [08:58] olivvv: But do you know if I have an alternative for my windows install ? [08:58] mikedeboer has joined the channel [08:58] ajsie: olivvv: http://pastie.org/1268950 [08:58] olivvv: like getting some already comiles files or so [08:59] ajsie: dont know im not using windows [08:59] ajsie: learn linux ;) its good for development..ubuntu is pretty simple =) [09:00] olivvv: I cant buy a computer right now [09:00] ajsie: dont have to .. use linode or another VPS provider [09:00] olivvv: but yes, I want to get some linux skills in the future [09:00] Lorentz: Try it in a virtual machine. [09:00] Tprice: how would i deal with single and double quest? [09:00] tanepiper: oh man, this is sweet! http://www.youtube.com/watch?v=64TcBiqmVko [09:00] rasztasd has joined the channel [09:00] tanepiper: nodejs ftw [09:01] JimBastard: okay [09:01] Lorentz: Last I checked, ubuntu can "boot" inside windows and be usable, no? [09:01] olivvv: but if I could find a way to have node installed and be able to play with it before to pay for some hosting.. [09:01] JimBastard: i've got like 6 ssh sessions open and i've hardcoded an unknown amount of variables [09:01] JimBastard: ive got the client app up and talking to the master broodmother [09:01] vandenoever: Lorentz: with a vm like virtualbox, that's easy [09:01] JimBastard: take that logic! [09:01] ajsie: olivvv: there is some cheaper VPS [09:02] vandenoever has left the channel [09:02] ajsie: olivvv: that charges per minute [09:02] olivvv: interesting [09:02] JimBastard: now i just gotta get the demo domain pointed to the balancer and have the balancer point to the client [09:02] kawaz_air has joined the channel [09:02] ajsie: olivvv: the main point i guess is to not only run node.js .. you will always need to do more later on .. good to have a VPS for that then [09:03] Lorentz: Really cheap per-month deals can be had for under $10 a month. [09:03] olivvv: some names ? [09:03] ajsie: JimBastard: will nodejitsu help people like olivvv that just want to use node.js but not care about the underlying architecture? [09:03] JimBastard: aye [09:03] Lorentz: vpslink is pretty cheap, you don't get much from them, but they're cheap. [09:03] necrodearia has joined the channel [09:03] JimBastard: we'll help prep sample apps for deployment [09:03] JimBastard: then you can code them and do stuff [09:03] JimBastard: with the javascript [09:05] ajsie: Lorentz: they are much more expensive if you compare the same specs [09:05] ajsie: than linode [09:05] ajsie: http://vpslink.com/vps-hosting/ [09:05] ajsie: https://www.linode.com/ [09:06] ajsie: olivvv: dont use the 64 mb ram =) ... i cant isntall anything there because ubuntu then complains about "no ram" [09:06] jfd1 has joined the channel [09:06] olivvv: what do yout hink of that : http://node-js.prcn.co.cc/ [09:06] olivvv: *think [09:06] Lorentz: ajsie: Hmm, so it is, so it is [09:06] ajsie: i dont know what people can do with 64 mb ram =) edit some files maybe [09:06] herbySk has joined the channel [09:06] LionMadeOfLions has joined the channel [09:07] ajsie: olivvv: what do you need Node.js for? [09:07] Lorentz: Eh, it fits stuff if you want a very simple blog or whatever. [09:07] ajsie: you are a .Net developer? [09:08] ajsie: Lorentz: yeah .. i always get out of Ram when installing stuff with apt-get or compilation when i have too little RAM [09:08] ajsie: last time i had 256 and it ran out .. when i increased the RAM to 512 i was able to install some packages [09:09] Lorentz: I used to live with 128MB, and it was comfortable, even ran rtorrent in the vm. [09:09] olivvv: ajsie: I want to test it first, and I'm interested in building a chat thingy to see how it runs [09:09] Lorentz: And mysql and apache. Standard stuff. [09:10] kawaz_air has joined the channel [09:10] ajsie: "Node is tested on Linux, Macintosh, and Solaris. It also runs on Windows/Cygwin, FreeBSD, and OpenBSD." [09:10] tanepiper: No one needs more than 640kb :p [09:11] necrodearia has joined the channel [09:11] markwubben has joined the channel [09:11] javruben has joined the channel [09:18] margle has joined the channel [09:19] ajsie: im coding a Restful node.js framework at the moment .. anyone that feels it lacks some good restful node.js frameworks right now that want to share some thoughts and answer some questions? [09:19] JimBastard: hrmmm ive lost 8 servers [09:19] JimBastard: i mean, i can ssh into them [09:19] JimBastard: but i cant find where they are managed [09:19] JimBastard: lol [09:19] ajsie: JimBastard: :( [09:19] JimBastard: ahaha [09:19] JimBastard: i got it up, i just want to point the dns to it [09:20] kawaz_air has joined the channel [09:20] rikarends has joined the channel [09:21] ntelford has joined the channel [09:21] necrodearia has joined the channel [09:22] kawaz_ai_ has joined the channel [09:24] unomi: http://bash.org/?5273 [09:25] ajsie: JimBastard: are you using any js frameworks for nodejitsu like mootools, yui etc? [09:25] garrensmith has joined the channel [09:25] ajsie: on server side [09:25] garrensmith: morning all [09:25] unomi: morning garren [09:25] mif86 has joined the channel [09:26] JimBastard: i think the rackspacecloud api is messing with me [09:26] JimBastard: ajsie: yes, we have a list on the new site [09:26] JimBastard: brb [09:26] ajsie: ok [09:26] unomi: blackbox within a blackbox [09:28] faust45 has joined the channel [09:28] hzin has joined the channel [09:29] meandi has joined the channel [09:29] JimBastard: okay, should be good [09:30] JimBastard: rackspace website cookies were messing with me hardcore [09:30] JimBastard: switching between accounts [09:30] Tprice: anyway to escape a string in node? [09:30] JimBastard: so ohh.io should be online soon with the new site [09:30] JimBastard: when / if the dns resolves [09:31] Tprice: my string would look like var test = 'dsf'dffsdf"dsf'; [09:32] JimBastard: \ [09:33] JimBastard: var test = 'dsf\'dffsdf\"dsf'; [09:33] JimBastard: well just the first [09:33] JimBastard: var test = 'dsf\'dffsdf"dsf'; [09:36] garrensmith: anyone interested in trying out my new BDD framework for Node? http://github.com/garrensmith/Jody I would appreciate some constructive reviews/criticisms [09:36] caolanm has joined the channel [09:38] fbits has joined the channel [09:41] pkrumins: anyone around who's really good with jade? [09:42] JimBastard: garrensmith: use vows, thats my feedback :-) [09:42] pkrumins: so i am passing locals : { webapp : { config : { ... } ... } } to jade and when I use webapp.config.host in the jade template, i always get [Object ...] [09:42] pkrumins: instead of the actual string which webapp.config.host is. [09:42] pkrumins: kindof hard to see why that happens [09:44] margle has joined the channel [09:46] garrensmith: JimBastard: Not a big fan of the syntax, but thanks :-) [09:47] cefn has joined the channel [09:50] MikhX has joined the channel [09:50] dquestions has joined the channel [09:52] mbrochh has joined the channel [09:52] benburkert has joined the channel [09:53] quag has joined the channel [09:57] TomY has joined the channel [09:57] xla has joined the channel [09:59] JimBastard: a watched domain never resolves [10:01] path[l] has joined the channel [10:01] cefn has left the channel [10:03] mraleph has joined the channel [10:04] Anti-X has joined the channel [10:07] Utkarsh has joined the channel [10:07] JimBastard: i think ive hardcoded enough env variables [10:08] JimBastard: breakfast time and maybe i can start pushing traffic to new site >.< [10:08] Anti-X: env vars! [10:08] Anti-X: are you running node as cgi? :p [10:09] JimBastard: Anti-X: i was making a general statement for like the 30 things i just did that will make indexzero cry when he wakes up [10:09] Anti-X: from joy or despair? [10:10] JimBastard: this is what happens when you tell me "it will be ready monday morning" on sunday night and then tuesday night it becomes "im not sure" [10:10] JimBastard: prob sadness [10:10] JimBastard: i hardcoded a cluster [10:10] JimBastard: big enough to work for a bunch of users [10:10] Anti-X: right [10:10] MattJ has joined the channel [10:10] JimBastard: :-p [10:10] JimBastard: we'll see! [10:11] MikhX has joined the channel [10:14] hassox has joined the channel [10:18] margle has joined the channel [10:19] sideshowcoder has joined the channel [10:19] masm has joined the channel [10:21] saschagehlich has joined the channel [10:25] dquestions has joined the channel [10:26] stagas: who agrees github search sucks? [10:26] Anti-X: you [10:27] Anti-X: i think it's fine.. unless you don't know the name of the author or the project [10:27] Anti-X: :p [10:27] Anti-X: would probably be slightly difficult to implement a search through repos [10:27] stagas: I literally type in a repo description and I get no results of that repo [10:27] Anti-X: if not difficult, then at least impractical [10:28] Anti-X: oh descriptions [10:28] Anti-X: yeah that should be included [10:28] JimBastard: you can use google? [10:28] caolanm: stagas: yeah github search really does suck [10:29] caolanm: I tend to just use google instead [10:29] Anti-X: i found a repo that had my search word in the description [10:29] Anti-X: and not in the name [10:30] Anti-X: but yeah it left some out [10:30] Anti-X: for some reason [10:35] JimBastard: i think i pushed the new site [10:36] mape: Did it fall? [10:36] JimBastard: ajsie: www.nodejitsu.com did that load? [10:36] chapel: loads for me [10:36] mape: works [10:36] JimBastard: neat [10:36] chapel: submitted my email [10:36] saschagehlich has joined the channel [10:36] JimBastard: chapel: its the same place as before [10:36] JimBastard: lol [10:36] JimBastard: i should add a dupe check there [10:36] stagas: free hosting woo hoo [10:36] inarru has joined the channel [10:36] chapel: oh, still the subscription :) [10:36] JimBastard: hells yeah [10:36] stagas: ;) [10:36] chapel: when do I get my free account? [10:36] chapel: :P [10:37] JimBastard: as soon as indexzero wakes up [10:37] JimBastard: ive been yelling at him as hard as i can all week [10:37] chapel: stagas << I saw your post on hn about wanting ideas to make stuff [10:37] mape: JimBastard: Thought about killing the photoshop bevel on the free button? [10:37] stagas: chapel: got one? [10:37] chapel: umm, no unfortunately, any come from that post? [10:37] JimBastard: mape: sure, im not really thrilled with the current design [10:37] JimBastard: its not complete [10:37] JimBastard: you wanna change it? [10:38] chapel: mape, you made node-profile ? [10:38] stagas: chapel: nah I'm still on burn out. My attention span is down to a few minutes [10:38] mape: Hmm don't really have the time, so would be bad of me to offer any help [10:38] JimBastard: also, super secret [10:38] mape: chapel: Well kinda, it is just glue for the current linux-ticker stuff [10:38] JimBastard: http://www.nodejitsu.com/#/deploy/ [10:38] JimBastard: :-D [10:38] chapel: yeah, where does that py file need to be? [10:38] JimBastard: you can actually use the whole UI without an account [10:38] mape: chapel: Well it can be anywhere, as long as it shows up when you use the locate command [10:39] chapel: okay [10:39] chapel: yeah I used your thing to rebuilt the local.plist (osx) [10:39] chapel: just hadn't tried to install again :P [10:39] stagas: JimBastard: nice! I like the marketplace idea [10:39] JimBastard: stagas: its only just the beginning... :-D [10:40] stagas: can we submit stuff there in the future? [10:40] JimBastard: ohhh yeah [10:40] JimBastard: big time [10:40] JimBastard: and then we'll pay you per app deployment [10:40] mape: Google marketplace? [10:41] JimBastard: nono, we arent that smart [10:41] JimBastard: nodejitsu! [10:42] ctp has joined the channel [10:42] mape: 94 req/sec [10:43] JimBastard: mape: are you abing me lol ? [10:43] sixtus42 has joined the channel [10:43] mape: Yeah [10:43] JimBastard: bad mape lol [10:43] mape: Its just a poke [10:43] JimBastard: thats actually going through like 5 proxies right now [10:43] JimBastard: each one reduces by 1/2 [10:43] JimBastard: about [10:43] path[l] has joined the channel [10:43] JimBastard: i would think 400 - 600 would be more reasonable [10:44] mape: Transfer rate: 2128.02 [Kbytes/sec] received [10:44] mape: perhaps that capping it? [10:44] JimBastard: the current setup is not what we'll be running on production [10:44] JimBastard: not idea [10:44] JimBastard: no idea* [10:44] stagas: JimBastard: will you offer url too? [10:44] JimBastard: stagas: subdomain? [10:45] stagas: yeah [10:45] JimBastard: of course [10:45] themiddleman has joined the channel [10:45] path[l]2 has joined the channel [10:45] garrensmith: JimBastard: are people currently able to host on your system already? [10:45] stagas: cool [10:46] JimBastard: garrensmith: we have been hosting apps for a while [10:46] JimBastard: garrensmith: we are pushing a huge delta though, rebuilt everything [10:46] JimBastard: ready for go time with a big elastic cloud [10:46] JimBastard: also got the UI working [10:46] caolanm: JimBastard: you have a beta available now? [10:46] JimBastard: caolanm: we'll be sending out account information to irc friends asap [10:47] JimBastard: i wanted nov 1, but its gonna be a few more days [10:47] JimBastard: we are close [10:47] caolanm: ok cool [10:47] caolanm: I look forward to my invitation ;) [10:47] garrensmith: JimBastard: I'm your biggest irc friend/fan :-) [10:47] JimBastard: garrensmith: i dunno, i haven't gotten any pull requests from you :-( [10:48] JimBastard: :-D [10:48] garrensmith: nnnooooo :-( [10:48] JimBastard: https://github.com/nodejitsu [10:48] JimBastard: https://github.com/marak/ [10:48] JimBastard: as soon as we can though ill be sending out accounts for everyone [10:48] chapel: :) [10:48] chapel: I am a big fan [10:49] chapel: :biggrin!!! [10:49] chapel: curious, memory/cpu usage limits? [10:49] JimBastard: chapel: BRING IT [10:49] chapel: not that I ever plan on going overboard [10:49] chapel: just curious [10:49] JimBastard: BRING IT [10:49] Anti-X: bring IT? [10:49] chapel: my current app is pretty sloppy atm [10:49] Anti-X: information technology [10:49] JimBastard: chapel: you'll be jailed into a set amount, if you want to upgrade we can [10:50] JimBastard: everyone gets their own machine right now [10:50] JimBastard: (its transparent to you ) [10:50] JimBastard: so you its jailed on a VM level by the utility provider [10:50] chapel: its so sloppy that a few seconds into running, it doesn't output any thing, spikes 100% cpu and goes in the 100+mb range... then after like 20 seconds calms down and goes back to normal [10:50] silence has joined the channel [10:50] chapel: bad coding :) [10:54] guybrush: JimBastard: which virtualization-software do you use? [10:54] Anti-X: power of the mind [10:54] JimBastard: guybrush: javascripts [10:54] JimBastard: lol yeah [10:54] JimBastard: pretty much [10:54] guybrush: right what else :p [10:54] JimBastard: javascript and a strong will [10:54] Anti-X: if you can't keep your app inside your head, then it's too big to be worth implementing [10:54] Anti-X: split it up [10:54] JimBastard: we allocate cloud instances from utility providers [10:54] JimBastard: dynamically [10:55] guybrush: sounds cool [10:55] JimBastard: Anti-X: i think we have like 6 actors now, i dunno [10:55] ryah_: JimBastard: isnt it late there? [10:55] JimBastard: 6:55am [10:55] JimBastard: ACTION is unstoppable [10:55] ajsie: go Jimmie go! [10:55] JimBastard: i had to ninja up our servers while indexzero was sleeping or else the new site would never launch [10:55] ryah_: micheil: capitalize how you'd like [10:56] micheil: ryah_: ok [10:56] Anti-X: little jimmie [10:56] rikarends has joined the channel [10:57] mikedeboer_ has joined the channel [10:57] ajsie: so eager to use nodejitsu .. its like Apple is launching a new iDevice =) [10:57] JimBastard: if no.de instances can outperform ec2 instances when running node, no.de starts to look like a sexy utility provider [10:57] JimBastard: :-D [10:58] ajsie: JimBastard: so you are on top of no.de with abstraction layer? [10:58] JimBastard: no [10:58] JimBastard: we are using rackspace [10:58] JimBastard: but that part is pluggable [10:58] JimBastard: its just a matter of api wrappers / tests [10:58] ajsie: but abstraction layer as in higher level than no.de right? [10:58] JimBastard: ya [10:58] garrensmith: with fs.watchFile the options are persistance and milliseconds, I understand milliseconds. What is persistance? [10:59] Anti-X: iPad and iMac and iThis and iThat [11:01] ph^ has joined the channel [11:01] sepehr has joined the channel [11:03] saschagehlich has joined the channel [11:03] loxs has joined the channel [11:03] loxs: how do I get the request params from the request object? [11:04] loxs: I mean, GET, POST etc params [11:05] aliem has joined the channel [11:06] unomi: anyone here use google closure? [11:06] JimBastard: loxs: you gonna have to parse the query string and the body [11:06] stagas: loxs: http://nodejs.org/api.html#request-url-175 and http://nodejs.org/api.html#query-string-316 [11:07] JimBastard: loxs: https://gist.github.com/660973 [11:07] JimBastard: copy pasta [11:07] JimBastard: i think [11:07] ajsie: stagas: if you use express you have it for free [11:07] ajsie: oh wrong [11:07] ajsie: loxs: [11:07] sideshowcoder has joined the channel [11:07] ajsie: loxs: or even connect.js [11:07] loxs: ajsie, I don't want to use a framework for something so simple [11:07] ajsie: i think [11:08] ajsie: connect.js is very low level .. just adding some stuff you want to use [11:08] loxs: thanks all [11:09] Anti-X has joined the channel [11:09] ajsie: cause it sucks if everyone has to reinvent a uri parser for every app .. thats why connect.js exist as a middleware [11:10] loxs: could you give me a link to connect.js? [11:10] loxs: google leads me to some facebook stuff [11:10] stagas: loxs: add 'node' in your query [11:10] micheil: loxs: https://github.com/senchalabs/connect [11:11] loxs: thanks [11:12] ajsie: loxs: yeah me too..thanks for the link micheil .. =) [11:13] micheil: connect is a framework for building frameworks on [11:13] stagas: has anyone experienced typing in something in instant google, and see the result you want just before ajax wipes it out with the new results [11:13] ajsie: loxs: read this one too : http://senchalabs.github.com/connect/ [11:13] micheil: so, things like express are layered on top of connect [11:13] stagas: it happens to me a lot [11:13] ajsie: micheil: yeah great for me im building a restful framework [11:13] ajsie: thought using connect.js would be better than express [11:14] micheil: well, yeah, if you need just a little abstraction from node core [11:14] ajsie: micheil: is connect.js comparable to journey? [11:14] zorzar_ has joined the channel [11:14] micheil: uhh, journeu? [11:14] micheil: *journey? [11:14] ajsie: micheil: journey [11:14] micheil: is...? [11:14] ajsie: https://github.com/cloudhead/journey [11:15] guybrush: if you use express, you are actually using connect too - so the question is not, what is better to use. it always comes to what you need [11:15] ajsie: maybe not .. journey is just a json router [11:15] micheil: Just what out for letting the abstractions out of the box. [11:16] metad has joined the channel [11:16] micheil: journey would be more for like, express for json [11:16] micheil: looking at it's API [11:16] ajsie: yeah [11:17] ajsie: and connect is more all round [11:17] micheil: yeah [11:17] jvolkman has joined the channel [11:17] micheil: like, you could build journey on top of connect [11:17] MikhX has joined the channel [11:17] eee_c has joined the channel [11:18] ajsie: is there a good javascript object parser or do I have to use multiple foreach loops? [11:18] micheil: ajsie: what do you mean? [11:18] micheil: ajsie: JSON.parse is built in [11:19] micheil: then there's also bindings to YAJL iirc [11:19] ajsie: but that is parsing json strings not javascript objects (with functions) right [11:19] ajsie: let me write an example [11:19] stagas: connect is a middleware for an http server. ie. gets req, res objects, messes with them and then passes them through [11:19] mape: walk the object and toString? [11:19] vito_ has joined the channel [11:19] garrensmith: ajsie: what is your usecase? [11:20] ajsie: garrensmith: writing it in jsfiddle [11:20] micheil: ajsie: JSON doesn't allow functions. [11:20] micheil: if you want functions, just store it as an object. [11:20] ajsie: micheil: yeah .. thats why i want to parse js object not json [11:21] micheil: exports.filters = {something: function...} [11:21] micheil: you don't need to parse it. [11:21] rikarends: i think you need to define your usecase pretty clearly [11:21] ajsie: with parse i mean "scan" the objects all levels for a function [11:21] ajsie: oops wrong word [11:21] ajsie: or for a string [11:21] rikarends: for (k in object) recursively with a prototype check should do [11:21] micheil: ajsie: in which case, for each level, you would use Object.keys [11:21] micheil: and a recursive loop [11:21] garrensmith: ajsie: why dont you take a look at sys.inspect? [11:22] micheil: exactly. [11:22] rikarends: you are aware of the security risk of passing code around are you? [11:22] rikarends: usually you dont pass code between domains [11:28] mikeal has joined the channel [11:32] mr_daniel has joined the channel [11:33] V1: JimBastard: Nodejitsu really went all out with Web 2.0 gradients and round corners huh [11:35] JimBastard: V1: lol i guess [11:35] JimBastard: im more focused on the UX when you sign in [11:35] JimBastard: we can always update the design [11:36] stagas: v8: 111111111 * 111111111 [11:36] v8bot: stagas: 12345678987654320 [11:36] stagas: this is wrong [11:37] stagas: it should be 321 [11:37] stagas: in the end [11:37] shreekavi has joined the channel [11:37] mape: it doesn't even matter [11:37] stagas: wtfjs? [11:37] mape: ACTION kranks the linkin park [11:40] stagas: you can't multiply two odds and get an even [11:41] micheil: has anyone written a riak PBC client? [11:41] micheil: s/client/module [11:42] V1: stagas: PHP has the limit if i remember correctly [11:42] mraleph: stagas: numbers are doubles [11:43] rwaldron_ has joined the channel [11:43] stagas: huh? [11:43] jpld has joined the channel [11:43] mraleph: JavaScript numbers are 64-bit double precision floating point numbers [11:44] jpld has joined the channel [11:44] Anti-X: not enough! [11:44] garrensmith has left the channel [11:45] mAritz has joined the channel [11:45] rwaldron__ has joined the channel [11:45] agnat has joined the channel [11:46] stagas: v8: 12345678987654320 [11:46] v8bot: stagas: 12345678987654320 [11:46] stagas: v8: 12345678987654321 [11:46] v8bot: stagas: 12345678987654320 [11:46] stagas: v8: 12345678987654322 [11:46] v8bot: stagas: 12345678987654322 [11:46] garrensmith has joined the channel [11:46] stagas: v8: 12345678987654323 [11:46] v8bot: stagas: 12345678987654324 [11:46] stagas: lol [11:46] stagas: v8: 12345678987654329 [11:46] v8bot: stagas: 12345678987654328 [11:47] mraleph: stagas: result of your multiplication in binary is 101011110111000101010001100010100100011111010010110001 [11:47] mraleph: 54 digits [11:47] mraleph: and trailing 1 so it is not representable in double [11:48] stagas: ok [11:54] unomi: you guys know of any automatic diagramming tools for js? [11:54] ajsie: anyone that is using http://documentcloud.github.com/underscore/ [11:54] ajsie: cant get it to work [11:54] unomi: even jsdoc annotation -> inheritance diagrams etc [11:54] unomi: whats it not doing? [11:55] ajsie: i have installed the npm "npm install underscore" .. and when i require('underscore') it gives me a list of all functions i accquired .. but i cannot use _ [11:55] ajsie: there are no functions [11:56] unomi: Its been awhile, but arent you supposed to do var _ = require('underscore') ? Wild guess here [11:56] SINPacifist has joined the channel [11:57] ajsie: unomi: but that require looks like this: http://pastie.org/1269215 [11:58] ajsie: it gives me back a _ object with all the functions [11:58] ajsie: accoding to doc i should be able to use _.forEach [11:59] stephank: ajsie: var _ = require('underscore')._; [12:00] ajsie: stephank: stupid me =) [12:00] ajsie: thanks [12:00] stephank: np :) [12:03] JimBastard: so people like the cloud9 editor right? [12:04] ajsie: JimBastard: i dont like it [12:04] ajsie: i love it [12:04] Knorrie has joined the channel [12:04] ajsie: JimBastard: integration plans? [12:04] JimBastard: ajsie: ohh yeahh [12:04] JimBastard: i got it running locally already [12:05] JimBastard: im gonna put an edit button in the dash that opens up a new window with this [12:05] JimBastard: have save go back to our platform [12:05] stepheneb has joined the channel [12:05] JimBastard: should be easy, assuming cloud9 works [12:05] unomi: well, bespin/skywriter will 'eventually' run on node.js [12:06] unomi: which is, I imagine, what cloud9 will end up using [12:06] wilmoore has joined the channel [12:06] mikedeboer: cloud9 is already running on node.js [12:06] ajsie: JimBastard: great! [12:06] ajsie: then i could develop with just a Chrome browser =) [12:06] mikedeboer: it's the reason why it works so well actually :) [12:06] ajsie: not caring about linux [12:07] mikedeboer: btw: BIG update of cloud9 today [12:07] ajsie: node.js really changed everything..gonna be a great time for us javasciprt developers [12:07] unomi: mikedeboer: didn't realize :) great [12:07] mikedeboer: version 0.1.3 will be released [12:08] unomi: so whats the deal with cloud9 and the skywriter collab? [12:08] ajsie: unomi: online IDE ... but not a bloated IDE and slow like the desktop IDEs [12:08] ajsie: and for node.js/chrome specific at the moment [12:08] unomi: no, I mean the fact that cloud9 have announced they will be working with the skywriter team [12:09] ajsie: ah ok [12:09] unomi: or atleast so I think I remember reading [12:09] ajsie: yeah so it was [12:09] ajsie: collarboration is always good [12:09] ajsie: i dont really get skywriter [12:09] jashkenas has joined the channel [12:10] ajsie: is it an engine or an app like cloud9? [12:10] unomi: the original bespin demo was very nice [12:10] unomi: it is an online ide, basically [12:13] JimBastard: ajsie: in cloud9 to change the directory it loads i have to modify the workspace in config.js? [12:13] unomi: or give it as a startup param [12:13] jashkenas has left the channel [12:14] mikedeboer: ajsie: it also works on firefox [12:14] unomi: node bin/cloud9.js -w /path/to/your/awesome/workspace [12:14] spetrea has joined the channel [12:14] spetrea: can xmpp-node tell me the time of a message stanza ? [12:14] unomi: this looks pretty sexy mikedeboer, kudos [12:14] spetrea: I tried virtually every possible way and couldn't get to it [12:14] ajsie: anyone got underscore working: http://pastie.org/1269248 [12:15] mikedeboer: unomi: bespin/ skywriter is an online editor, not an IDE... we are collaborating on integration between the two editors... [12:15] ajsie: never used it more than once .. but you can have it run on the current folder too [12:15] spetrea: anyone with node-xmpp here ? [12:15] JimBastard: is there any runner right now for spawning up multiple cloud9 instances? [12:16] ajsie: and also through config.js .. but i dont see why that is good cause you want to code the project in the current folder [12:16] JimBastard: like give it a map of ports and directories? [12:16] unomi: mikedeboer: how are you making the distinction? [12:16] mikedeboer: unomi: skywriter is an editor and Cloud9 has its own editor component (ACE - Ajax.org Cloud9 Editor) which will merge several components [12:17] ajsie: mikedeboer: is there a demo? i never understood the bespin ide ... couldnt do anything [12:17] unomi: from the initial bespin instantiation there was support for versioning, projects, command line etc [12:17] unomi: then came the reboot and err the sproutcore incident [12:17] mikedeboer: unomi: true, so in that respect IDE is a vague concept [12:17] ceej has joined the channel [12:18] ajsie: how does the skywriter IDE looks like? is it as simple as Cloud9? a demo somewhere? [12:18] mikedeboer: unomi: basically, with Cloud9 we're trying to integrate node.js development so that you can develop, debug and run applications from a single environment [12:19] ajsie: mikedeboer: everything on the cloud right? [12:19] mikedeboer: ajsie: try https://bespin.mozillalabs.com [12:19] mikedeboer: ajsie: yes, but right now you need to run Cloud9 on your machine (locally) [12:19] ajsie: mikedeboer: how are you going to deploy my node app .. with heroku/no.de/ec2? [12:20] mikedeboer: ajsie: the next major version will be running online on a url [12:21] mikedeboer: ajsie: deployment is something we're looking at... anyone can extend the IDE already with extensions and 0.1.3 (will be released today) will support server extensions as well [12:21] ajsie: mikedeboer: how do i run the file on bespin? [12:21] unomi: mikedeboer: it is certainly the way it should be :) [12:21] ajsie: mikedeboer: oh nice .. looking forward to it to be online [12:22] ajsie: mikedeboer: when will it be a hosted version do you think= [12:22] mikedeboer: ajsie: well, at the moment it's all going VERY fast, so expect it within a week or two [12:22] mikedeboer: ajsie: at least, that's what we're aiming for :) [12:23] ajsie: mikedeboer: amazing [12:23] ajsie: i thought it would take like 6 months at least [12:24] ajsie: mikedeboer: you are going to ruin for a lot of desktop IDEs =) [12:24] rikarends: Well i dont expect it in 2 weeks, but we are aiming high :) [12:24] ajsie: and environemnts [12:24] captain_morgan has joined the channel [12:24] rikarends: it will be a growthpath on what we'll support [12:24] mikedeboer: unomi: it IS the way it should be, that's why we started building it in the first place :) [12:24] rikarends: and when [12:24] ajsie: kill the desktop! [12:25] rikarends: We are really using cloud9 for all our dev. Im even writing C++ in it now :) [12:25] mikedeboer: ajsie: well, first round is getting on par with desktop IDE's [12:25] rikarends: beating eclipse for usability is pretty close i think [12:25] ajsie: rikarends: really? will cloud9 support all other languages? [12:25] mikedeboer: ajsie: yes. [12:25] rikarends: 'all' is a big word and i dont really see the need to go after java [12:26] rikarends: But i do like C/C++ since many of the new things like redis, node are all written in C too [12:26] rikarends: and then the dynamic languages [12:26] rikarends: But who knows, java might happen too. [12:27] ajsie: rikarends: okay [12:27] mikedeboer: ajsie: I think that most importantly, anyone will be able to add their language of choice by writing an extension [12:27] rikarends: First thing for us is to make the dev experience for JS so awesome it beats everything [12:27] ajsie: damn .. with node.js javascript is the new ruby [12:27] unomi: indeed [12:27] ajsie: mikedeboer: right way [12:28] mikedeboer: you can ask us anything about cloud9 on #cloud9ide as well [12:28] unomi: lets hope we don't get deRailed though [12:28] mikedeboer: unomi: haha [12:28] JimBastard: sleepy time [12:29] rikarends: I think as an editor supporting all programming languages is not hard [12:29] rikarends: As an IDE supporting the full workflow of testing/debugging is another matter [12:30] wink_ has joined the channel [12:30] ajsie: unomi: you dont like Rails? [12:30] mikedeboer: rikarends: spot on. supporting the full JS workflow alone is already a BIG job! [12:31] ysynopsis has joined the channel [12:31] ajsie: yeah its all about the flow [12:31] ajsie: in and out [12:31] ajsie: anyone that is using underscore with node.js? [12:31] unomi: ajsie: well, lets just say that I think that the very worst place for ruby is in a 'heavy' webserver [12:31] ajsie: it should be working but i cant get it to work .. it somehows overwrites itself: http://pastie.org/1269248 [12:32] ajsie: unomi: yeah [12:32] ajsie: i liked it before when i knew less about architecture [12:32] rikarends: with java on the fall ruby will no doubt grow [12:32] rikarends: but so will nodejs [12:33] ajsie: dont like MVC now on the backend .. all backends should just be a Restful server .. json in and out .. using it with Sproutcore or other frontend MVC [12:33] unomi: I like ruby, alot, and was always somewhat annoyed that python won out [12:33] rikarends: ajsie: exactly. thats how we do all webdev [12:33] ajsie: thats why im trying to create a new framework [12:33] unomi: but rails is cruft on cruft with prototype [12:33] rikarends: ajsie: front or back [12:33] ajsie: back [12:34] ajsie: i can show you the simple interface .. wait [12:34] stepheneb has joined the channel [12:35] matt_c has joined the channel [12:39] masm: Is there a function the the library to encode/decode a string with base64 encoding? [12:42] stephank: masm: Create a buffer, then call toString on it, for example: new Buffer(myString).toString('base64') [12:42] guybrush: sry if im offtopic, but i like this channel :p --- any1 can explain line 28? https://github.com/arshaw/fullcalendar/blob/master/Makefile#L28 [12:43] guybrush: `if [ -f "$(1)/intro.js" ];` what does this -f mean? if file exists? [12:43] stephank: guybrush: yes [12:43] guybrush: ty [12:44] stepheneb has joined the channel [12:44] rwaldron has joined the channel [12:44] stephank: guybrush: these are part of bash, and explain in the bash manpage. Look for “conditional expressions”. For -f, it technically only matches regular files (no named pipes or sockets, etc.) [12:44] danoyoung has joined the channel [12:45] guybrush: stephank: thank you for the hint [12:49] boaz has joined the channel [12:51] stepheneb has joined the channel [12:52] Athox has joined the channel [13:00] ajsie: rikarends: http://pastie.org/1269310 [13:01] ajsie: everything is a resource .. like a Restful HTTP resource with data (document), associations to other resources and methods (API)....your app is a resource. .you attach other resources into your app and the Restful routing, controller, models and database is all working together [13:02] rikarends: hmm [13:02] jgoulah has joined the channel [13:03] rikarends: is this a service api? [13:03] ajsie: because MVC is on the frontend (Sproutcore) .. ALL backend servers should be json api only .. (i think) [13:03] Utkarsh has joined the channel [13:03] ajsie: rikarends: no OS framework [13:03] ajsie: when its ready [13:04] ajsie: like RoR [13:04] rikarends: isnt this a CRUD abstraction? [13:04] ajsie: rikarends: not only [13:04] ajsie: because your resources (everyone could create a resource) contains not only Document, but also API [13:04] ajsie: so you can use methods [13:04] ajsie: that is logic [13:06] ajsie: if you add 'type': Yi.apis.type['http'] then those methods could be used through http not only local [13:06] rikarends: K. i find it hard to see the use because i usually dont write these type of apps [13:06] rikarends: Most of the time now we are doing full shared state realtime WebSocket stuff [13:06] rikarends: my gut says the time of these ruby-esque backends is waning [13:07] rikarends: but the real-time variant also doesnt have a perfect solution yet tho [13:07] scoates has joined the channel [13:07] rikarends: my guess is it will probably look 'somewhat' like this, except then focussed on realtime [13:07] jvolkman has joined the channel [13:08] jvolkman has joined the channel [13:09] rikarends: also, something like 'connect' already abstracts to the point of writing url handlers. usually you can plug a bit of JS code behind that to do read/write/etc [13:09] rikarends: selling these kind of api's is pretty hard if they are not platform pushed (like rails) [13:09] rikarends: since people wont arrive at it by forward motion [13:10] rikarends: if you want to make this work nicely i suggest you integrate it super sweetly in connect and find the right tipping point where people will want it [13:10] rikarends: and advertise on that [13:10] ajsie: rikarends: you can see it like this:every resource is a lego block ... i create a resource "application"...i add "menu, tag, thread etc" in the resource...depending on how i structured the associations as you see in my code the Restful routing, persistence is created automatically...my application can use the Menu resource's delete_menu() method cause its in the API of the Menu resource .. its just about creating an application in a [13:11] ajsie: the logic should be centered around a resource .. not Routing, Controller, Model, View, Database , especially on the backend [13:11] rikarends: i suggest you really explore the domain limits of your model [13:11] agnat_ has joined the channel [13:12] rikarends: how people will go 'this will solve my problem' [13:12] ajsie: its not a coincidence we got incompatibale Restful APIs when everyone just dont follow some strict Restful conventions [13:12] rikarends: because right now i dont see what problem it would solve for me [13:12] johngbrooks has joined the channel [13:12] davidsklar has joined the channel [13:12] ajsie: rikarends: yeah of course .. i just dived into the code .. if you dived into the code in Rails you wouldnt see much first either [13:13] rikarends: Yeah but if rails would not have been 'the' way to do ruby it wouldnt have gotten anywhere [13:13] rikarends: so you can hook people by exactly copying rails for node and saying 'rails for node!' [13:13] rikarends: or you have to find a narrative that is stupidly simple A to B solution! [13:13] ajsie: lets put it like this: the most powerful feature is you create a very advanced restful backend server in minutes.. in a fun way [13:14] rikarends: try talking benefits ;) [13:14] ajsie: you save time [13:14] ajsie: Rails got popular when they created a blog in 20 min [13:15] ajsie: when they abstracted away the boring part [13:15] ajsie: at that time [13:15] rikarends: yeah scaffolding party [13:15] ajsie: scaffolding isnt right solution..its jut autogenerating stuff [13:15] rikarends: well it sold ruby to the world [13:16] rikarends: not saying i think its a good solution [13:16] ajsie: yeah .. people just want it to be simpler than it has been [13:16] ajsie: now we want something more simple [13:16] ajsie: lets take this eample: i want to create an restful app [13:16] Anti-X has joined the channel [13:17] agnat has joined the channel [13:17] ajsie: i use express .. i want to create a Menu with HTTP Restful API .. i have to think about everything [13:18] stepheneb has joined the channel [13:18] rikarends: yeah it probably has a usecase for making certain types of websites [13:18] rikarends: but i think that nodejs is not trying to be PHP in javascript [13:19] rikarends: you are already assuming that the 'menu' thing is some sort of object with data read/write [13:19] rikarends: which i want to maintain in a DB or something and edit [13:19] rikarends: thats a lot of assumption [13:20] ajsie: or i can create http://pastie.org/1269368 [13:20] rikarends: thats what i mean with scan your domain. where does your solution 'really 'fit [13:20] ajsie: rikarends: all resources have state [13:21] rikarends: why is it some sort of menu-cms? [13:21] ajsie: if they are imporant to save and be fetched later [13:21] rikarends: (im being an asshole here ) [13:21] ajsie: no its good [13:21] skampl has joined the channel [13:21] rikarends: by who? what rights? when? [13:21] ajsie: isPersistable: false [13:21] rikarends: since when do we edit menus in the site itself? [13:21] ajsie: isPersisteble: true [13:22] ajsie: menus have titles right? [13:22] rikarends: how do you do your staging? [13:22] ajsie: i dont think you really want to save those data in the application itself [13:22] ajsie: or in the views [13:22] ajsie: and titles have i18n [13:22] ajsie: so all text should be in the db [13:23] rikarends: The thing with Ruby is that it wires HTML directly to the DB via MVC. thats why people went 'ooooooo' [13:23] rikarends: Here i dont see the HTML, and i dont see the wiring to DB [13:23] rikarends: so you wont get the same ooooo [13:23] ajsie: rikarends: its no html [13:23] ajsie: cause its for the backend [13:23] ajsie: json API [13:23] ajsie: we dont want to spit out html from backend [13:23] ajsie: json to Sproutcore [13:23] rikarends: i know that [13:24] rikarends: i guess you need a killer demo app. [13:24] rikarends: that gets people to go 'yeah i want to use it this way' [13:24] ajsie: of course [13:24] ajsie: a blog in 2 min [13:25] ajsie: rikarends: you dont have to see the wiring to DB [13:25] ajsie: because its abstracted with a resource called CouchDB [13:25] unomi: ajsie: have you seen persevere? [13:25] saschagehlich has joined the channel [13:25] ajsie: you can see the resource code for CouchDB and its API methods .. how it saves things if you want [13:26] rikarends: atleast with ruby i had a feeling it was piping it into SQL [13:26] rikarends: couchdb is very scary as a backend imho to just throw in [13:26] rikarends: you wont only have to sell your way of doing stuff but also that you store it in couchDB and why [13:26] ajsie: rikarends: nah .. json/javascript/restful/map+reduce/node.js [13:27] ajsie: rikarends: everything is a resource and you build your app [13:27] ajsie: you can use mongodb resource isntead of couchdb [13:27] ajsie: or mysql [13:27] rikarends: for any type of relational data heavy site couch is for instance totally the wrong choice [13:27] rikarends: alright, so thats a good arg [13:27] ajsie: Lego (Resource) [13:28] rikarends: Anyway. i was fixing up my refactor engine [13:28] rikarends: good luck :) [13:28] fangel has joined the channel [13:28] ajsie: rikarends: yeah u 2 [13:28] Ari-Ugwu has joined the channel [13:28] ajsie: unomi: no what is that? [13:29] unomi: well, its part of a stack of sorts [13:29] ajsie: link? [13:29] unomi: http://www.sitepen.com/blog/category/persevere/ [13:30] ajsie: rikarends: i let you try it when its ready =) [13:30] ajsie: you would be a good beta tester since you are very critical =) [13:30] unomi: what I like about it, is the idea that 1. its REST, 2. you can mix and match backends [13:30] rikarends: bitching is easy :) [13:30] unomi: you define your models in json-schema, tell it which backend you want to use for this class of objects and win. [13:31] chapel: curious, would anyone be willing to help me make my app better, its a simple thing, but I know it can be so much better, efficiency wise and just logic with the code [13:31] rikarends: i think the marketing and explanation of your tech is more important than the particular details in this case [13:31] rikarends: since you want people to contemplate new 'concepts' [13:31] unomi: my thought is that you can start out with everything in mysql, fx, and then painlessly send some off to redis or whatever as circumstances change [13:31] unomi: marketing is hugely important, look at rails.. [13:32] unomi: ACTION ducks [13:32] rikarends: rails really is all marketing [13:32] rikarends: and a few new ideas [13:32] unomi: exactly [13:32] dtrasbo has joined the channel [13:33] rikarends: it had an open space also since java is just wrong for websites, python had a huge marketing gap and JS wasn't there yet. [13:33] rikarends: and PHP ghe. well. lets not talk about that pile of crap. [13:33] antris: yeah [13:33] unomi: my thought on economic ecologies is that people create markets whenever they can [13:33] antris: macs are also just marketing [13:33] antris: right? [13:33] rikarends: no macs are not just marketing [13:33] dtrasbo: why do I have a feeling you talk about ruby? [13:33] rikarends: that would be giving no credit to the software architects and designers of the devices [13:34] rikarends: which i think are really really impressive in their own right. [13:34] unomi: because if you are ahead of the curve in creating a new market, that means you have specialist knowledge, and hence, can charge premium [13:34] bruse: say what you will about php, but it's behind some of the largest websites on the web [13:34] unomi: macs are mostly marketing :p [13:34] willwhite has joined the channel [13:34] dtrasbo: rikarends: "t had an open space also since java" - what's "it" if one may ask? :) [13:34] dtrasbo: s/t/it [13:34] rikarends: ruby of course [13:35] rikarends: Rails to be more precise [13:35] dtrasbo: knew it! [13:35] danoyoung has left the channel [13:35] ajsie: lets not start a language war =) [13:35] ajsie: php is crap [13:35] ajsie: oops =) [13:35] unomi: well, you had all the marketing people making bank back in those days, and probably still.. [13:35] dtrasbo: pfft [13:35] rikarends: no i dont think macs are mostly marketing. I think the success of mac is the combination of really great design, great products with brilliant marketing. [13:35] dtrasbo: ajsie: that won't start anything [13:35] ajsie: dtrasbo: kidding =) [13:35] unomi: and they were all hanging on 37 signals etc [13:35] rikarends: Cant have one without the other. [13:36] dtrasbo: I think all rubyists should give javascript a try for server-side stuff [13:36] dtrasbo: they will almost definitely be surprised [13:36] rikarends: The thing is, PHP is like a biological system. It was evolved without any language designers on board [13:36] dtrasbo: I was [13:36] ajsie: lets put it this way: if something is simpler today than yesterday..then it is a success [13:36] ajsie: just look at the history [13:37] unomi: I think these days it has to be more than just simple, it has to offer something compellingly simple :p [13:37] rikarends: I think the biggest challenge for node is the fact it doesnt fit in a top down flow-per-request PHP method [13:37] ajsie: simplicity first, all other things are only secondary [13:37] Nomon has joined the channel [13:37] unomi: with browsers being able to handle the frontend quite handily by themselves, the thick client has another shot [13:37] rikarends: php is much simpler than node for the stuff the web was and is made of. [13:38] rikarends: Yeah thick clients are happening. [13:38] unomi: right, but it is also not geared towards pushing towards the 'next level' [13:38] ajsie: rikarends: in 1 year javasript is much more simple [13:38] dtrasbo: rikarends: and for that exact reason I disagree with simple being everything [13:38] rikarends: But they have been 'happening' since IE5 so its not a runaway success [13:38] ajsie: just fire up a web browser and develop [13:38] Lorentz: I'm moving away from php for this one project because it made sense to go with nodejs. [13:38] rikarends: Simplicity has won from the tickclient for a whole decade already [13:39] Lorentz: Although guess I could've stuck with php since I was used to it, but socket.io is too delicious to ignore. [13:39] unomi: I don't really mind php, tbh, its quite fast, it has a good performance upgrade path [13:39] rikarends: But the turning point is probably close now. [13:39] ajsie: php is actually not that simple when you have to download, switch between js and php, which IDE should I use? which libraries? no good package managers etc [13:39] ajsie: it was just simpler [13:39] unomi: but its not evented, it doesn't lend itself to treating the browser as a canvas. [13:39] dtrasbo: I can tell I shouldn't share my honest opinion on php [13:39] rikarends: ajsie: if you venture outside of PHP that doesnt get easier. [13:40] unomi: dtrasbo: its like javascript, back in the bad old days. [13:40] rikarends: but we are working on that :) [13:40] unomi: php is easy for people to pick up and make a mess in. [13:40] unomi: otoh, db -> doctrine -> json is fairly clean [13:40] Lorentz: Saying php sucks like it was back how js is like is like saying js sucks if you just use DOM straight and nothing else. [13:40] dtrasbo: someone should pore a load of petrol over php and burn it [13:40] proppy has joined the channel [13:40] dtrasbo: move on, I say [13:40] dtrasbo: it made sense once upon a time [13:40] sepehr: I'm quite new to node, trying to understand its very basic principals. you, as a more experienced user, can you please tell me what are the overall benefits of using node.js instead of something like php, etc.? guide me in ;) [13:41] rikarends: Lorentz: no i disagree. PHP is actually handicapped by poor language design. [13:41] ajsie: unomi: yeah symfony + doctrine is the best part of php [13:41] rikarends: JS much less so [13:41] Lorentz: rikarends: Explain. [13:41] rikarends: Lorentz: try to write a PHP parser and compare it to JS :) [13:41] dtrasbo: I agree with rikarends. [13:41] bruse: php as a language is pretty ugly, but the platform is pretty stable these days and the hardened php project is nice on the security side [13:41] ajsie: dont you guys think we need a "Rails" for node for boosting up popularity amongst "amateurs"? [13:41] dtrasbo: js always had a great potential because of its foundation [13:41] bruse: plus, it has been proven to be able to power huge websites, like facebook [13:42] ajsie: they only need to code fast .. dont care that much about other things [13:42] rikarends: I think doing a 'rails' for node will definitely be a good idea. [13:42] Lorentz: rikarends: If you mean a PHP parser as in write my own PHP engine... why would I? [13:42] bruse: but it's not a dream to develop with, that's for sure [13:42] dtrasbo: bruse: no, just ask the devs [13:42] fangel: PHP is a great tool if you know how to use it right.. it just takes a bit of self-control and knowledge to not do dirty things with it.. [13:42] dtrasbo: fangel: I couldn't disagree more [13:42] ajsie: rikarends: maybe a better Rails though =) [13:42] sebastianha has joined the channel [13:43] danslo has joined the channel [13:43] ajsie: not assuming that much as conventions .. i like modularity [13:43] rikarends: PHP is highly inconsistent in how they design the language. Its just cobbled together. things can actually be conflicting, horrible to write and inconsistent in what they really mean [13:43] rikarends: just look at what they now did with that stupid \ thing [13:43] dtrasbo: fangel: it's like saying you can make a good car with a chain saw with some self control [13:43] dtrasbo: sure [13:43] ajsie: and convented configuration [13:43] captain_morgan has joined the channel [13:43] dtrasbo: but there are *much* better tools for the job [13:43] sebastianha: Hi, I tried to compile node.js on my palm pre but I always get the following error, when I run configure: Checking for function pthread_atfork : not found [13:43] unomi: my first thought when I saw express was 'oh no not rails again' [13:43] dtrasbo: no matter what you're making [13:43] sebastianha: has anyone an idea? [13:43] fangel: dtrasbo: why not? it can and always will get the job done (when that job is what PHP was designed for - server-side page processing) [13:44] jvolkman_ has joined the channel [13:44] jvolkman_ has joined the channel [13:44] unomi: but that isn't quite fair, but I am pretty sure people will be building nasty stuff on top of express to get that rails vibe [13:44] fangel: it really is an extremely powerful - but not very elegant - tool for solving single-page server-side processing [13:44] Lorentz: I don't even understand this "it's just cobbled together". This isn't PHP4 anymore, we're already at 5.3 and going 6 soon. [13:44] chapel: anyone mind looking at my app and helping me make it more efficient, more async? https://gist.github.com/34dd80c110dd77c935dd [13:44] rikarends: Lorentz: perhaps it can improve. I dont know about that. [13:44] dtrasbo: fangel: getting the job done doesn't mean it's good [13:44] Lorentz: There are bare functions for dependency sakes, but most are now properly in OOP in their own classes and etc. [13:44] ajsie: unomi: when you mentioned persevere.. did you mean http://www.sitepen.com/blog/2010/11/02/resource-query-language-a-query-language-for-the-web-nosql/#more-1321 [13:45] Lorentz: There are things like zend framework, and you can build epic sites with it, in proper software engineering sense. [13:45] rikarends: PHP is like having to write C in a dynamic language [13:45] rikarends: You get all of the pain and none of the fun [13:45] unomi: ajsie: yeah, that whole series is what i mean by persevere, I am using the wrong word though [13:45] dtrasbo: fangel: the amount of use cases of php are so small it's worth ignoring [13:45] dtrasbo: where php is actually a better tool, notably [13:45] ajsie: you mean RQL? [13:45] ajsie: that was the thing you liked? [13:45] Lorentz: dtrasbo: Arguably any other language is just as ignorable then. [13:46] dtrasbo: Lorentz: why? [13:46] dtrasbo: php is at the absolute bottom of the food chain [13:46] Lorentz: Because it does just as well good job at it, if not better. [13:46] ajsie: in either way .. i think javascript will be THE web language no matter which language we prefer to write in [13:46] wink_: isn't better in this case quite subjective? how exactly are you quantifying php's usefulness vs whatever else in a given situation? [13:46] fangel: if you only argue about a languages worth by it's syntax, you aren't doing it right [13:46] ajsie: its just happening [13:46] rikarends: Anyway whatever happens, just the fact that we have Microsoft, Google and about every other big co on the planet throwing their performance teams behind JS will make it win by default. [13:46] dtrasbo: fangel: no I'm talking about the over all picture [13:46] rikarends: nodejs can just be along for the ride on the server [13:47] ben_alman has joined the channel [13:47] benburkert has joined the channel [13:47] Raevel has joined the channel [13:47] unomi: http://www.sitepen.com/blog/2010/01/25/getting-started-with-pintura/ sorry I should have said pintura, this is what I like [13:47] jherdman has joined the channel [13:47] Lorentz: I mean, I admit, there are idiosyncracies in the language. But as it is right now, it's a real OOP language, and it's fast, easy to learn, easy to deploy, lots of support and existing code... what do you want? [13:48] unomi: ajsie: this stack here: http://www.sitepen.com/blog/wp-content/uploads/2009/12/PinturaArchitecture1.png [13:48] dtrasbo: Lorentz: consistency [13:48] rikarends: Lorentz: nothing, just saying PHP as a language goes is quite inferior to JS [13:48] Lorentz: What consistency issues [13:48] Lorentz: Name some [13:48] dtrasbo: Lorentz: sticking to the philosophy you started out with [13:48] wink_: lol [13:48] fangel: dtrasbo: have you actually done any large-scale projects with a proper foundation in PHP yourself, or are you just reiterating what all the "PHP sucks because it's a mess"-blog-posts are saying? [13:49] wink_: fangel: wanna take bets on which one? [13:49] wink_: ;> [13:49] Lorentz: If you're going to complain about mysql_real_escape_string() or other bs that no one sane uses anymore, you can kindly exit the argument. [13:49] rikarends: I have done very large PHP backend and it doesnt even come close to the cleanness you can achieve with NodeJS [13:49] rikarends: backends [13:49] dtrasbo: I left php a long time ago [13:49] rikarends: Even if you go full out OOP [13:49] dtrasbo: and I know it has improved [13:49] ajsie: guys dont forget the big pic .. honstely i dont care much about how "good" a language is .. its the big pic i care about .. why did i left ruby? because you can do what ruby can in js, i only need to learn one language for frontend, backend, database (coucbdb..mongodb etc), mobile (phonegap, titanium), desktop (titanium) .. google releases Chrome OS that will make web apps even more widely used .. and even a script framework based on [13:49] rikarends: PHP5 [13:49] proppy: has anyone used nodejs-coverage without expresso ? [13:49] dtrasbo: but it was supposed to be a functional language [13:49] bruse: Lorentz: actually, for someone like me who has not coded php for a few years, what do people use instead of mysql_escape_string nowdays? Prepared statements only? [13:49] rikarends: Anyway PHP sucks discussion is really not that useful [13:49] Lorentz: bruse: PDO generally. [13:50] fangel: don't get me wrong at all - I love JS, and would prefer to work in it every day if I could.. - but PHP consistently gets the job done well for me and my boss, so I have to respect that.. [13:50] Lorentz: If mysql, mysqli is there. [13:50] rikarends: What is more important is how to do what people love doing in PHP now in NodeJS [13:50] rikarends: and same for ruby [13:50] Lorentz: No one uses straight-up mysql functions anymore. [13:50] bruse: ok [13:50] bruse: thanks [13:50] ajsie: js is becoming THE language..glueing all parts together [13:50] dtrasbo: fangel: but if there's another tool that does the job 10x better, why bother? [13:50] Lorentz: PDO handles it for you, generally, as prepared statements. [13:51] Lorentz: Use something like ZF with DB abstraction, and it does a whole lot more even. [13:51] wink_: how can you quantify 10x better? that's just making shit up :P [13:51] fangel: maturity, platform-availablility, risk-assesment.. need more business-busswords or can you get the picture? [13:51] rikarends: actually if you start arguing about languages im sure python beats JS on areas and Ruby too [13:51] ajsie: i think in 20 years you have to beg people for using python, ruby, php when they can learn and use js everywhere [13:51] rikarends: the key is that JS has more momentum because of the engineering effort behind it than anything in the world right now [13:51] ajsie: funny that came to be what java always wanted to be..without even trying haha [13:51] unomi: and they will be making as much bank as the cobol80 guys did [13:52] ajsie: "funny that js came to be what java always wanted to be..without even trying" [13:52] unomi: otoh, we probably already know what is after javascript [13:52] rikarends: actually java is a much more thorough attempt at anything than JS [13:52] fangel: there's always going to be a language-de-jour.. right now it's JS, and rightfully so because it is a terribly nice language.. but don't think PHP and the other old-timers are going to disappear [13:52] dtrasbo: fangel: true, it'll stick around for 20 years more at least [13:53] rikarends: however bytecode is too restrictive. Dynamic language where source = final are winning because of that [13:53] fangel: Now, Node.sml - that's something I could get behind as a long term investment.. hehe.. [13:53] ajsie: js is like a baby to us all .. no matter community .. we are loving + hating it .. but we are embracing it at the end...like a common denominator [13:54] rikarends: actually i think things like coffeescript are going to keep JS alive and beating everything out there [13:54] rikarends: because all the rubyists and pythonists missing stuff in JS can just do a dialect they want with pure source compatiblity [13:54] ajsie: i think more and more people will *struggle a long while and say* aaaaaaah fuck it .. lets use that ugly MF [13:54] Lorentz: Oh well. Even now, someone out there, is writing sites in perl. [13:54] jshaw has joined the channel [13:54] rikarends: because coffeescript is running in nice x86 ASM in all JS engines coming up [13:55] rikarends: beat that 'whatever dialect you wanna imagine' [13:55] fangel: everyone should just switch to Standard ML and be happy.. :) [13:56] unomi: well, it seems clear that functional languages are going to come next, even more than they already are [13:56] rikarends: i've written a full JS AST parser in 100 lines of JS. hows that for dealing with transcoding languages :) [13:56] rikarends: well technically its not a full AST, its a fuzzy AST optimized for speed and ease of manipulation [13:56] unomi: but javascript still offers a good way to get into functional programming [13:57] unomi: as annoying as some people may find webworkers :p [13:57] rikarends: a friend of mine just ported Clean (Functional) to JS [13:57] fangel: yeah.. I tend to use a lot of the functional paradigms of JS.. [13:57] rikarends: webworkers are a stupid hack actually. [13:57] rikarends: we need proper JS engine support for threading [13:57] fangel: but Standard ML has dynamic strict typing.. you'd be hard pressed to get that into JS.. and it's actually pretty darn clever.. :) [13:57] rikarends: clever != good :) [13:58] unomi: threads are dangerous [13:58] rikarends: I always liken functional programming to running Winrar on your source [13:58] rikarends: sure its smaller but you have to decompress it to make sense of it [13:58] rikarends: and the decompression space is called 'your head' [13:58] unomi: who knows what compilers will bring [13:58] rikarends: henceforth there is a real tradeoff between functional compression and writing code [13:58] unomi: I hate the idea of compiling js though [13:58] rikarends: v8 compiles js right now [13:59] rikarends: v8 is the closest thing to a js compiler you can make [13:59] jstemmer has joined the channel [14:00] rikarends: if you say 'preprocessing source' then yes. preprocessing will always be on the way out at every point in time. [14:01] rikarends: or moving into the fabric of the infrastructure so devs wont see it anymore [14:01] ajsie: rikarends: yeah i dont want to bother with the computer tasks =) [14:02] ajsie: whoever gives me a application so i can start coding wins my wallet...looking like Cloud9 team at the moment [14:02] ajsie: and JimBastard that is sleeping =) [14:03] ajsie: rikarends: you were at the Cloud9 team? [14:03] rikarends: on that note. lets get back to cloud9 ;) [14:03] ajsie: :) [14:03] bnoordhuis has joined the channel [14:03] rikarends: yeah im doing the refactoring of our core libraries [14:04] dtrasbo: cloud9 as in flight simulation? [14:04] rikarends: let me spam you: http://www.cloud9ide.com/ [14:05] unomi has joined the channel [14:05] dtrasbo: ah [14:07] boaz has joined the channel [14:07] ajsie: rikarends: ill check back on cloud9 when its web hosted .. hope it will be before dec [14:08] ajsie: my web storm evaluation time will be over soon =) [14:08] ajsie: if its web hosted .. will the files be in your servers or in my own servers? [14:08] shreekavi has left the channel [14:09] rikarends: initially we will just git pull your stuff to our servers. But i also want to allow local file IO via browser plugin to allow editing stuff fully local [14:09] rikarends: i think the order will be: git clone, ftp-sync, local-file something like that [14:10] ooooPsss has joined the channel [14:10] rikarends: perhaps we could support doing a live map via ssh too. but one thing at a time [14:10] mlangenberg: Is somebody actually already working on patching NginX to support WebSocket requests? [14:11] matjas has joined the channel [14:11] rikarends: i think it will require a fair change to nginx [14:11] matjas has joined the channel [14:11] rikarends: since it was architected to do loadbalancing and fault recovery with the http request [14:11] mlangenberg: I just configured NginX to proxy_pass my request ... and the Node server does get the upgrade request ... but of course no connection is actually getting established. [14:12] jY has joined the channel [14:12] rikarends: no thats because nginx pulls in the entire http 'request' stream before it passes it on to a backend server [14:12] jY: Error: Cannot find module 'ws' [14:12] jY: any idea why it can't find ws.. i'm using v0.2.4 [14:13] mlangenberg: rikarends: I told you I have some success with STunnel, right? [14:13] bnoordhuis: jY: what module is this? [14:13] jgoulah has left the channel [14:13] teemow has joined the channel [14:13] jY: bnoordhuis, i'm just doing var ws = require('ws'); [14:14] bnoordhuis: jY: did you install a module named ws? [14:14] bnoordhuis: if not, there is your problem [14:14] rikarends: mlangenberg: yeah except for the forwarded-for secure flag right [14:14] bnoordhuis: there is no ws module in the core [14:14] ajsie: rikarends: okay .. github intergration sounds brilliant .. *click "new" and enter an URI* *edit files* *click save* and it is saved in github again [14:14] bnoordhuis: fY: maybe you mean fs? [14:15] ajsie: rikarends: does that user experience sound good? [14:15] boaz has joined the channel [14:15] matt_c has joined the channel [14:15] bentruyman has joined the channel [14:15] mlangenberg: rikarends: correct. I will see if I can patch STunnel to set an X-Forwarded-Proto flag, which can be checked in backend libraries (Faye or Socket.io). [14:16] rikarends: ajsie: thats exactly the idea i think [14:16] rikarends: anyway. leaving :) [14:16] rikarends has left the channel [14:18] sivy has joined the channel [14:18] mlangenberg: because the way I see it ... there is currently no standard stack which allows a secure and non-secure websocket connection to a library (like Socket.IO or Faye). [14:19] aurynn has joined the channel [14:22] cardona507 has joined the channel [14:22] EyePulp has joined the channel [14:24] marienz has joined the channel [14:27] SubStack has joined the channel [14:27] StanAngeloff has joined the channel [14:28] jamund has joined the channel [14:28] mbrochh has joined the channel [14:30] rwaldron_ has joined the channel [14:33] jY has left the channel [14:33] jshaw has joined the channel [14:33] jvolkman has joined the channel [14:33] ysynopsis has joined the channel [14:33] codemanki has joined the channel [14:33] peutetre has joined the channel [14:33] pkrumins has joined the channel [14:33] modular has joined the channel [14:33] jimt has joined the channel [14:33] jspiros has joined the channel [14:33] hoodow has joined the channel [14:33] cferris has joined the channel [14:33] Twelve-60 has joined the channel [14:33] mde has joined the channel [14:33] Connorhd has joined the channel [14:33] Kung_Fu_Hamster has joined the channel [14:33] jvolkman-work has joined the channel [14:33] drudge has joined the channel [14:33] joshthecoder has joined the channel [14:33] gkatsev has joined the channel [14:33] Sembiance has joined the channel [14:33] adrienf_ has joined the channel [14:33] kloeri has joined the channel [14:34] muk_mb has joined the channel [14:34] muk_mb has left the channel [14:34] muk_mb has joined the channel [14:36] dnolen has joined the channel [14:38] hdon has joined the channel [14:39] stepheneb has joined the channel [14:39] stepheneb has joined the channel [14:42] Sembiance: muhahaha! [14:42] Sembiance: I use the internets! [14:42] pkrumins: HEY GUYS, oh sorry about that [14:42] Anti-X: wtf [14:42] pkrumins: hey guys, check out how we use browserling to test itself http://i.imgur.com/YF5O3.png [14:42] pkrumins: Anti-X: beh i didnt want to use erase [14:43] Anti-X: just push arrow down [14:43] pkrumins: oh [14:43] Anti-X: you didn't wanna use erase but you had no problems writing an excuse that was twice as long? [14:43] Anti-X: :p [14:44] antris: :D [14:46] Aria has joined the channel [14:47] tj has joined the channel [14:47] aheckmann has joined the channel [14:47] tj: drudge: ping [14:48] Astro has joined the channel [14:50] robotarm_ has joined the channel [14:51] softdrink has joined the channel [14:51] TheEmpath has joined the channel [14:52] kawaz_air has joined the channel [14:52] stagas: pkrumins: what is browserling [14:53] SubStack: stagas: interactive cross-browser testing prototype running on ec2 [14:54] pkrumins: stagas: uses stackvm tech - stackvm.com [14:54] dnolen has joined the channel [14:57] stagas: nice. when is it going public? [14:58] pkrumins: pretty soon [14:58] pkrumins: we'll invite people to it [14:58] pkrumins: dont want to go public as we'll need a hundred ec2 instances [14:59] pkrumins: that's too expensive and unmanagable at the start [14:59] pkrumins: though we'll have like 10 intances for free users [14:59] pkrumins: that is managable [14:59] benburkert has joined the channel [14:59] matt_c_ has joined the channel [14:59] EyePulp: I'm using mongoose, and just trying to learn the basics - Is there a simpler way to loop through results and pass each result to a function than this: Foo.find({bar:true}).all(function(foos){ for (var i = foos.length - 1; i >= 0; i--){ //do stuff } }); [14:59] stagas: why not make it installable so everyone can run their own [14:59] chapel: tj are having trouble getting on irc.conceited.net? [14:59] stagas: is it possible? [15:00] EyePulp: that inner for loop seems unnecessary [15:00] pkrumins: stagas: you can run stackvm that way [15:00] pkrumins: stagas: stackvm is open source [15:00] SubStack: stagas: software to do that already exists and is a huge hassle [15:00] pkrumins: but browsering is closed [15:00] tj: chapel: ? [15:00] SubStack: running stuff locally sucks [15:00] chapel: thought that was why you were pinging drudge :P [15:00] pkrumins: yeah [15:00] chapel: nvm then [15:01] tj: nope [15:01] Yuffster has joined the channel [15:01] stagas: it'd be nice if someone was to run an interface-less vm app with all the browsers in it and the connect to it with stackvm [15:01] podman has joined the channel [15:02] tj: EyePulp: would be nice if we had a forEach() directly off the executed query [15:02] JohnDav has joined the channel [15:02] tj: EyePulp: you often need a done() callback though [15:02] EyePulp: tj: I'm afraid I haven't progressed to the done() stage. =) [15:02] marienz has joined the channel [15:02] phil has joined the channel [15:03] tj: chapel: I just wanted to know if you can hide NickServ and some others on the sidebar, they pile up quick [15:03] jrockjiggz has joined the channel [15:03] chapel: you mean queries? [15:03] podman has joined the channel [15:03] podman has left the channel [15:03] tekky has joined the channel [15:04] daniellindsley has joined the channel [15:04] EyePulp: tj: so the method I'm using is the standard way of looping though a set of results? [15:04] chapel: goto prefs > misc > show incoming notices whever you want [15:05] tj: EyePulp: im not sure what it used to be [15:05] chapel: EyePulp << I use forEach or .some [15:05] chapel: there is also for ( var blah in array) [15:05] Me1000 has joined the channel [15:05] tj: I would suggest we add something like User.find({ what: 'ever' }).forEach(...).done(...) [15:05] tj: so you can iterate directly from the executed query like I mentioned, instead of all() and forEach within [15:06] tj: done() being optional of course, but called after you are done iteration [15:06] djwm has joined the channel [15:06] deepthawtz has joined the channel [15:06] EyePulp: when you guys say forEach, are you indicating a for-each loop, or a method called forEach() ? [15:06] LionMadeOfLions has joined the channel [15:07] ajsie: what low level javascript framework for the javascript language are you using on node.js? [15:07] chapel: array.forEach(function(arrayItem) {} [15:07] mikew3c_ has joined the channel [15:07] EyePulp: ACTION is *really* new to mongo & mongoose [15:07] EyePulp: chapel: ahh - thank you for that [15:07] djwm: I've got a problem which I can't seem to debug. I'm calling res.write, sending content to an HTTP client and the node process exits. There's no error. I've breakpointed it and it seems to depart in the write function (inside http). Has anyone heard of this before? [15:07] ajsie: chapel: what framework are you using for forEach()? [15:07] chapel: framework? [15:07] chapel: no framework [15:07] JohnDav: is long polling more scalable, or sockets? [15:08] ajsie: oh its built into js? =) [15:08] EyePulp: is that built into the v8 interpreter? [15:08] chapel: yeah [15:08] EyePulp: nice [15:08] chapel: its javascript [15:08] stagas: djwm: gist? [15:09] EyePulp: JohnDav: in theory sockets should be the right way in the long run, but long polling is all we've got in some cases (at least that's my understanding) [15:09] chapel: v8: [1,2,3,4,5].forEach(funtion(item){console.log(item)}) [15:09] v8bot: chapel: SyntaxError: Unexpected token { [15:09] chapel: :) [15:09] EyePulp: I'd love to hear if that's wrong-headed of me =) [15:09] chapel: bah hate typing in line [15:09] JohnDav: EyePulp: and long polling works on all browsers? [15:10] chapel: v8: [1,2,3,4,5].forEach(funtion(item){console.log(item);}); [15:10] v8bot: chapel: SyntaxError: Unexpected token { [15:10] djwm: stagas: ? [15:10] chapel: bleh Ill stop [15:10] EyePulp: JohnDav: I believe so - it's more a limitation on the server side (some frameworks don't long poll very well, e.g. django, but node is pretty darn good at it as a server) [15:10] JohnDav: EyePulp: great! [15:10] EyePulp: again, my nascent knowledge on display. [15:11] stagas: djwm: post the part of the code that breaks somewhere, gist.github.com or pastebin so we can help you [15:11] chapel: v8: [1,2,3,4,5].forEach(funtion(i){console.log(i);}); [15:11] v8bot: chapel: SyntaxError: Unexpected token { [15:11] chapel: bah [15:12] stagas: funtion ? [15:12] chapel: bah [15:12] chapel: typos [15:12] chapel: v8: [1,2,3,4,5].forEach(function(i){console.log(i);}); [15:12] v8bot: chapel: CONSOLE: [1, 2, 3, 4, 5], OUTPUT: undefined [15:12] chapel: :( [15:12] chapel: ACTION cries [15:13] sonnym has joined the channel [15:13] chapel: stagas << you want to do something? you want to help me make my script better? [15:13] stagas: what script [15:13] chapel: a script I made [15:13] Yuffster has joined the channel [15:13] stagas: where is it [15:13] chapel: https://gist.github.com/34dd80c110dd77c935dd [15:14] chapel: its rough, but it works [15:14] chapel: I want to make it more efficient, more asynchronous [15:15] ajsie: are you using any low level javascript framework on node.js like yui3? [15:15] unomi has joined the channel [15:15] chapel: me? [15:15] chapel: no [15:15] javruben has joined the channel [15:16] chapel: I was thinking of working with events [15:18] codemanki has joined the channel [15:18] stagas: chapel: looks ok. what is wrong with it? [15:18] TheEmpath: roflcopter [15:18] chapel: well there are a few points that could be better [15:18] TheEmpath: PYthon is so damned elitist, you can't even say 'lol' in #python [15:19] TheEmpath: probably causes a syntax error in their brains or something [15:19] stagas: chapel: the only thing I see is there are a lot of function calls stacking up [15:19] rasztasd has joined the channel [15:19] wink_: TheEmpath: i think it's probably their GIL getting into the way and blocking their acronym processing ;> [15:19] charlenopires has joined the channel [15:19] ajsie: what does Node.js REPL mean? [15:19] chapel: at line 62, I am checking against existing gameIds, and only including new ids that haven't been processed already [15:20] tj: ajsie: read eval print loop [15:20] chapel: so I compile a list of ids I want to then go through and process [15:20] benatkin has left the channel [15:20] chapel: I am wondering if instead of making a list, and then sending it, if I should just process each one as they are vetted [15:21] stepheneb has joined the channel [15:21] stagas: chapel: you could also use an object oldIds[] so you can do typeof oldIds[] to see if it exists, instead of indexOf which is costly [15:22] chapel: another thing at 114, I am doing something similar for gamertags, I dont want to have the gamertag in there more than once [15:22] chapel: hmm [15:22] stagas: chapel: same for gamertags, objects can't have the same key twice [15:22] chapel: have an example? [15:22] matt_c has joined the channel [15:22] chapel: ah [15:22] captain_morgan has joined the channel [15:22] chapel: if it doesn't exist, its null? [15:22] stagas: undefined [15:23] chapel: so if (typeof oldIds(gameId)) ? [15:23] chapel: not used typeof [15:23] stagas: if (typeof obj[key] === 'undefined') { doesn't exist } [15:24] chapel: if (typeof oldIds[gameId] === 'undefined') gameIds.push(gameId) [15:24] chapel: like that? [15:24] sheerun has joined the channel [15:25] stagas: yeah but you'd want gameIds to be an object too maybe? so gameIds[gameId] = 1 (or any value) [15:25] chapel: oh hmm, so not an array, but an object? [15:25] federomero has joined the channel [15:27] stagas: yeah since they are different ids, object keys are more natural if you don't use them twice and don't care about order [15:28] tj: EyePulp: https://github.com/LearnBoost/mongoose/commit/e24188c6c015dfad83c08010698e48e486b1bb93 [15:28] tj: like that [15:28] chapel: hmm, well from what I know, you can't assign object keys as variables [15:28] TheEnd2012 has joined the channel [15:28] ajsie: is there a good validation framework for node.js? [15:28] chapel: {variable: 'something'} [15:28] chapel: even if variable is a variable, it will be 'variable' [15:28] ajsie: that validates the type of something, min lenght, max lenght, email and that kind of stuff? [15:28] stagas: no but it can be any string [15:29] chapel: like variable.toString()? [15:29] stagas: if you use a number it'll be converted to string automatically [15:29] zomgbie has joined the channel [15:29] stagas: but we're talking ids here, why do you want variables in ids? [15:29] ben_alman has joined the channel [15:30] marienz has joined the channel [15:30] chapel: I am not assigning those ids manually in code [15:30] matt_c has joined the channel [15:30] chapel: I am getting them from either an api, or my database [15:31] chapel: every time I have tried to set a key programmatically it has failed and made the key the actual text name of the variable, and not the contents [15:31] boaz_ has joined the channel [15:32] chapel: well, I tried object[variable] = blah before [15:32] chapel: but it never worked either [15:32] chapel: hmm [15:32] Evet has joined the channel [15:32] stagas: v8: var key = 'iuh43897 348572y3h seurihse'; var obj = {}; obj[key] = 'hi'; console.log(obj); [15:32] v8bot: stagas: CONSOLE: [{"iuh43897 348572y3h seurihse": "hi"}], OUTPUT: undefined [15:33] chapel: okay, it was just how i was trying to do it then [15:33] chapel: so that solves the indexof replacement [15:33] stagas: if the variable was undefined it would convert it to string [15:34] bartt has joined the channel [15:34] ajsie: how do i find the "validator" package on github? [15:34] ajsie: http://npm.mape.me/ [15:34] chapel: the other issue, in parseGame at around 97, it actually freezes for a while, 100% cpu usage, memory spikes, I am not sure what is causing it [15:35] V1 has left the channel [15:35] delapouite has joined the channel [15:35] hellp has joined the channel [15:35] ajsie: "npm view validator" worked [15:36] daniellindsley has joined the channel [15:36] teemow has joined the channel [15:37] ajsie: https://github.com/chriso/node-validator [15:37] ajsie: great stuff [15:37] stagas: chapel: functions copy a lot of stuff around there and v8 queues up a lot of them [15:37] stagas: chapel: you need to abstract all that better, build some classes [15:38] stagas: chapel: and solutions come easier [15:38] chapel: hmm [15:38] matt_c_ has joined the channel [15:39] softdrink: i started hacking together a terminal ui module last night… key/mouse/resize handling, cursor movement, text styling… that's about it so far. https://github.com/jocafa/node-term-ui [15:39] stagas: chapel: you're coding the procedural way and you hit walls and the code gets all spaghetti. create classes and abstract all that stuff, maybe use events too [15:40] chapel: so if I convert gameIds to an object and so on, can I still use .some to iterate through them, or does it have to be an array solely? [15:40] charlenopires_ has joined the channel [15:40] aldosarmiento has joined the channel [15:41] ctp has joined the channel [15:41] unomi has joined the channel [15:41] hellp has joined the channel [15:41] stagas: dunno, iterate with: for (var key in obj) { } [15:41] chapel: hmm, okay [15:42] stepheneb has joined the channel [15:43] stagas: got to run cu [15:44] mif86 has joined the channel [15:44] chapel: thanks [15:44] matt_c has joined the channel [15:45] captain_morgan has joined the channel [15:45] pTa_armi has joined the channel [15:45] javruben2 has joined the channel [15:46] bencc has joined the channel [15:48] mikedeboer_ has joined the channel [15:48] EyePulp: tj: woo - I was away - so forEach is in trunk? awesome! [15:48] tj: EyePulp: in the 1.0 branch [15:49] quirkey has joined the channel [15:49] bruse: 1.0 is the next release? [15:50] EyePulp: tj: cool - nice work [15:50] tj: yup [15:51] matt_c has joined the channel [15:52] jimmybaker has joined the channel [15:52] mbrochh has joined the channel [15:54] devinus_ has joined the channel [15:54] unomi has joined the channel [15:57] iAsterisk has joined the channel [16:00] iAsterisk has joined the channel [16:03] CIA-93: node: 03Ryan Dahl 07master * r029180a 10/ wscript : Install node-waf - http://bit.ly/dib1FF [16:05] springmeyer has joined the channel [16:06] gwoo has joined the channel [16:07] jakehow has joined the channel [16:08] cardona507 has joined the channel [16:10] marienz has joined the channel [16:12] eddanger has joined the channel [16:13] ajsie: do we have the express creator here? [16:13] danielqo has joined the channel [16:14] ajsie: i dont get https://bespin.mozillalabs.com/ .. how do i run the file [16:15] ajsie: and it doesnt highlight the code? [16:15] ajsie: what is the purpose of it? [16:15] tj: ajsie: what does bespin have to do with express? [16:15] jbenesch has joined the channel [16:16] mikew3c has joined the channel [16:16] unomi has joined the channel [16:17] sudoer has joined the channel [16:17] ajsie: tj: it hasnt .. it was another question [16:17] tj: oh lol [16:17] ajsie: :) [16:17] mastertogo has joined the channel [16:17] tj: well what is the express q [16:17] ajsie: tj: you are the creator? [16:18] ajsie: the guy in the red shirt? [16:18] tj: yeah [16:18] ajsie: T-shirt [16:18] tj: hahaha [16:18] tj: yeah [16:18] mastertogo has left the channel [16:18] ajsie: tj: i have no express question though [16:18] ajsie: wanted to ask about ext.js =) [16:18] ajsie: https://github.com/visionmedia/ext.js/issues/issue/74 [16:18] tj: ah i see [16:19] tj: one sec [16:20] tj: ah, npm changed stuff since then, it was an old library so npm was no longer loading it properly with how it used to be set up [16:21] dmcquay has joined the channel [16:22] skohorn has joined the channel [16:22] davidascher has joined the channel [16:22] ajsie: tj: okay [16:22] ajsie: is it easy to fix? [16:22] tj: ajsie: should be [16:23] banjiewen has joined the channel [16:23] ajsie: okay .. great [16:23] ajsie: does anyone know what this mean "You can use it with Node just fine -- just not in the Node REPL." [16:23] ajsie: he is talking about "underline" node library [16:24] ajsie: does he mean the Node command line interface? [16:24] ajsie: that i can use it in my scripts [16:25] banjiewen has joined the channel [16:26] derencius has joined the channel [16:26] ezmobius has joined the channel [16:26] ajsie: ah .. "Basically, an interactive shell — or REPL, as it is often called" get it [16:27] tg has joined the channel [16:28] aconbere has joined the channel [16:29] pTa_armi: some mongoose gurus around? [16:29] mtodd has joined the channel [16:29] codemanki: pTa_armi: i am not really a guru, but maybe i can help [16:31] pTa_armi: I've tried to define a model with an array inside... when I try to store a new document of this type into mongodb an error is thrown: ypeError: object is not a function [16:31] pTa_armi: at [object Object].CALL_NON_FUNCTION_AS_CONSTRUCTOR (native) [16:31] pTa_armi: at Array.set (vendor/mongoose/lib/mongoose/document.js:373:26) [16:31] pTa_armi: my model: [16:31] jodaro has joined the channel [16:32] pTa_armi: document('User').oid('_id').string('email').string('crypted_password').array('folder', [16:32] pTa_armi: document() [16:32] pTa_armi: .oid('_id') [16:32] pTa_armi: .string('title') [16:32] pTa_armi: .boolean('locked') [16:32] pTa_armi: .string('password') [16:32] wilmoore has joined the channel [16:32] pTa_armi: .array('video', [16:32] pTa_armi: document() [16:32] pTa_armi: .oid('_id') [16:32] pTa_armi: .string('title') [16:32] pTa_armi: .string('url') [16:32] pTa_armi: .string('thumbnail') [16:32] pTa_armi: .number('duration') [16:32] pTa_armi: .string('source') [16:32] pTa_armi: sry for the extra lines in the posting [16:33] tj: uhh lol [16:33] federomero has left the channel [16:33] codemanki: my eyes [16:33] codemanki: burning [16:33] tj: pTa_armi: 1.0 is not stable yet [16:33] tj: if that is what you are trying to use [16:33] springmeyer_ has joined the channel [16:33] halfhalo: ACTION hands out acid for eyes [16:33] tj: halfhalo: accepts acid [16:33] pTa_armi: yes, I am on 1.0 branch [16:34] tj: pTa_armi: yeah, feel free to play with it but expect it to break on and off :p [16:34] pTa_armi: ok [16:34] bartt has joined the channel [16:34] jherdman_ has joined the channel [16:35] jherdman has joined the channel [16:35] stepheneb has joined the channel [16:37] twoism has joined the channel [16:37] dgathright has joined the channel [16:39] italic has joined the channel [16:41] matjas has joined the channel [16:41] jgautier: tj: do you guys plan on doing some more docs for mongoose? [16:41] tj: jgautier: yup [16:42] jgautier: i was workign with it a little last week and i remember having a hard time finding some good info [16:42] Yuffster_work has joined the channel [16:45] captain_morgan has joined the channel [16:46] bpot has joined the channel [16:47] eee_c has joined the channel [16:49] jchris has joined the channel [16:49] jethro_ has joined the channel [16:50] Aria has joined the channel [16:51] ph^ has joined the channel [16:52] gwoo has joined the channel [16:52] shaver: anyone use komodo with node? does it work well? [16:52] cagdas has joined the channel [16:53] Ari-Ugwu has joined the channel [16:54] jherdman has joined the channel [16:56] skohorn has joined the channel [16:57] pTa_armi has left the channel [16:58] rauchg_ has joined the channel [16:58] Evet has joined the channel [16:59] deepthawtz has joined the channel [17:03] bentruyman has joined the channel [17:07] stephank has joined the channel [17:08] danielrmz has joined the channel [17:08] stepheneb has joined the channel [17:12] creationix has joined the channel [17:13] matjas has joined the channel [17:14] Aria has joined the channel [17:15] maushu has joined the channel [17:17] sebastiandeutsch has joined the channel [17:19] noahcampbell has joined the channel [17:20] sebastiandeutsch: Hi guys, I'm currently investigating the 1.0 mongoose branch. After playing with it for a week - I have to say it's lovely - but there are some quirks and features which are not ready yet. Since I want to do some real work with it, would you a) continue working with it, patch it, wait until things become stable b) switch to mongo-db-native and do everything handish (to be honest, my app is not that data intensive, just one [17:20] sebastiandeutsch: table with embedded information). [17:22] qFox has joined the channel [17:22] pTa_armi has joined the channel [17:23] jamund has joined the channel [17:23] tj: sebastiandeutsch: feel free to patch if you want, but yeah I mean I wouldnt recommend it for production work yet [17:23] tj: but patches would be great [17:24] sebastiandeutsch: tj: ok cool [17:25] Evet has joined the channel [17:26] Anti-X: was there some node based image manipulation library in the works? [17:26] sivy has joined the channel [17:29] langworthy has joined the channel [17:30] Anti-X: or commonjs interface rather [17:32] Knorrie has left the channel [17:36] shaver: mmm [17:36] bradleymeck has joined the channel [17:36] shaver: Anti-X: yeah, prkumins has some [17:36] shaver: need mod_pagespeed for node now [17:37] Anti-X: prkumins? [17:37] Anti-X: google has no relevant hits for that name [17:37] femtoo has joined the channel [17:37] Aria: http://code.google.com/speed/page-speed/docs/module.html [17:37] Aria: Spiffy! [17:37] Aria: pkrumins, Anti-X [17:38] Aria: IRC user here. [17:38] jamund: Anyone have a link to some docs about using socket.io to create multiple separate sessions over one node.js server instance? [17:39] Anti-X: don't think you can [17:39] Anti-X: since modules are essentially singletons [17:39] Anti-X: within the current process [17:39] gwoo has joined the channel [17:39] mikedeboer has joined the channel [17:39] jamund: Anti-X: I guess I mean in the examples it shows how to broadcast to everyone. i want certain messages only broadcasted to certain users. [17:39] Anti-X: ah [17:39] Anti-X: well [17:40] Anti-X: you just need to keep track of those users that are in that given 'room' i guess [17:41] Anti-X: i think it has "broadcast to all, except " and "send to ", so for now you'll have to loop over that list yourself... though you could probably post an issue on the github project page that they should include a "send to " also [17:41] Anti-X: but you'll still need to keep that list separately [17:42] Anti-X: although grouping users would definately be a common feature that socket.io should probably have in the future [17:42] Anti-X: dunno what rauchg_ thinks? [17:42] jamund: hmkay that's what i was looking for. also just found some docs. Anti-X http://labs.learnboost.com/socket.io/ thanks [17:44] JohnDav: yeah [17:44] JohnDav: channels support by default will make life easier [17:44] JohnDav: you can use juggernaut though [17:44] JohnDav: it uses socket.io [17:44] JohnDav: and has support for channels [17:44] JohnDav: github.com/maccman/juggernaut [17:46] wilmoore has joined the channel [17:47] jamund: Rad! Thanks JohnDav [17:47] sebastiandeutsch: tj: Have you worked with embedded docs in 1.0? [17:47] tj: sebastiandeutsch: only what our tests cover [17:47] tj: which I am trying to build out [17:49] iAsterisk has joined the channel [17:49] sebastiandeutsch: tj: I have a doc that contains an array of docs, which contains an array of docs. At the double nesting point I'll get this error: http://pastie.org/1270009 [17:49] isaacs has joined the channel [17:49] tj: sebastiandeutsch: hmm, I will try and get more coverage on that stuff once I fix a few bugs [17:49] sebastiandeutsch: tj: Fun fact: An empty array does not yield that error. It only occurres when I try to fill in docs. [17:50] sebastiandeutsch: tj: What do I need to run the tests (I've added mongoose as submodule) [17:50] eee_c has joined the channel [17:50] tj: sebastiandeutsch: git submodule update --init --recursive && make test [17:50] tj: there are some failures right now though [17:51] sebastiandeutsch: I see [17:52] sebastiandeutsch: tj: I'll try to provide a test case for that. Is it possible to run a specifiy test only? [17:52] mjr_ has joined the channel [17:52] __mn__ has joined the channel [17:52] tj: sebastiandeutsch: not at the moment no [17:52] sebastiandeutsch: tj: k, will dig into that [17:54] __mn__: how do you access an async's callback function's parent variables? var test = false; asyncFunc(foo, function(){ test = true; }) [17:54] captain_morgan has joined the channel [17:55] rasztasd has left the channel [17:56] trotter has joined the channel [17:56] __mn__: its really annoying because its forcing me to do everything syncronously when I don't want to! [17:57] dgathright has joined the channel [17:58] mjr_: __mn__: that code example you inlined should work, no? [17:58] ceej has joined the channel [17:58] __mn__: nope, it only changes test locally, and not outside the function [17:58] dguttman has joined the channel [17:59] mjr_: Oh, well it is changing the value outside of the callback function [17:59] __mn__: so if I var test = false, asyncfunc(foo, function(){ test = true; }); console.log(test) it will be "false" [17:59] mjr_: You mean outside of that [17:59] __mn__: yes I want to change the parent's value also [18:00] bnoordhuis has joined the channel [18:00] mjr_: __mn__: the reason it is still false is that the callback hasn't been invoked yet [18:00] aconran__ has joined the channel [18:00] wilmoore has joined the channel [18:00] __mn__: how do I accomplish this type of behavior? [18:01] prettyrobots has joined the channel [18:02] mjr_: Your callback is an anonymous function which closes over "test". When the callback is invoked, it'll change the value of test in the parent. [18:02] mjr_: However, your console.log() runs right away, before the callback is invoked. [18:02] ceej has joined the channel [18:02] brianc has joined the channel [18:03] mjr_: ryah_ / isaacs: is the SF Giants parade going past your office? [18:03] __mn__: hrrmm. okay, another example is I can't access the parent's functions [18:04] Aria: Things you haven't overridden you should be able to call; things you have, you can always apply the parent's function to your current this. [18:04] femtooo has joined the channel [18:04] mjr_: __mn__: do you have a simple example of this you can gist? [18:04] Aria: Parentname.function.apply(this, args) [18:04] Vekz has joined the channel [18:04] brianc has joined the channel [18:05] Vekz: hey does http://howtonode.org/ have a RSS if so where? [18:05] hober: Vekz: it has an rss autodiscovery link [18:05] __mn__: hmm ... here [18:05] hober: just hit your feed reader's "subscribe to this" bookmarklet [18:05] shaver: mjr_: I was going to ask you something yesterday, but now I can't remember what -- do you know? [18:06] mjr_: shaver: something about how awesome Mozilla is? [18:06] shaver: heh [18:06] __mn__: https://gist.github.com/661440 [18:06] mjr_: I wasn't on IRC much yesterday, so I dunno. [18:06] __mn__: I'm using redis [18:07] shaver: my redis-node-based bugzilla hypersearcher is so pleasant I sometimes just poke at it to watch it work [18:07] __mn__: and you'll notice I have "client.write('pc')" I originally had this.client.write('pc') cause thats how the parent called it. [18:07] mattly has joined the channel [18:07] __mn__: but I get an error that "cannot call write of undefined" [18:08] __mn__: only because inside the asyncFunc it won't let me do this.client.write() [18:08] mjr_: shaver: I know what you mean. After I put a redis layer in front of my couch-based log server, I sometimes just reload the index and chuckle. [18:08] elijah-mbp has joined the channel [18:08] shaver: yeah [18:08] shaver: http://67.23.47.48:8000/entry.html is mine [18:08] shaver: does search as you type over websockets [18:09] mjr_: holy shit that's fast [18:09] shaver: all open bugs in firefox (desktop and mobile), core, etc. [18:09] shaver: it's network-bound [18:09] shaver: if you pick a query that only gives back a handful of results (like "terrible"), you get approximately your ping time [18:09] mjr_: awesome [18:09] shaver: the time numbers are (client-timed/server-timed/time-for-redis) [18:10] shaver: need to do LZW in JS to go faster :-) [18:10] mjr_: doesn't Websocket do gzip? [18:10] __mn__: shaver: what redis clienta re you using? [18:10] shaver: mjr_: no :-( [18:10] shaver: __mn__: mjr's [18:11] mjr_: oh man, I thought it did. That's annoying. [18:11] __mn__: wait, mjr_ which client did you write? [18:11] shaver: mjr_: yeah, it needs it [18:11] mjr_: __mn__: mine is "node_redis" which you get if you do "npm install redis" [18:12] __mn__: oh! thats actually the async function I am talking about :P [18:12] mjr_: __mn__: in your example, the scoping is complicated because you are defining things inside an object literal. [18:12] __mn__: red = redis_node.createClient() [18:13] __mn__: mjr_: its running off of websockets, which is why it has the complicated scoping issue [18:13] __mn__: I need the server to remember information about each client, thus it has the init [18:13] mjr_: However, it looks like you are stashing client in this.client, so can't you get it back that way? [18:13] __mn__: correct, I can, but not inside the async function [18:14] __mn__: this.client.write() and client.write() don't work [18:14] shaver: ah [18:14] __mn__: it says "write() cannot be called on undefined object" [18:14] shaver: your function is anonymous, correct? [18:14] shaver: try this [18:14] shaver: instead of [18:14] __mn__: I assume, I don't know what that means. [18:14] __mn__: is it a nameless callback function? yes. [18:14] mjr_: But in the whole onmessage: function() {} block, "client" isn't in scope. [18:14] shaver: redis.thing("foo", function(err, results) { }) [18:14] shaver: do [18:15] mjr_: So you need to either pass it in, or expose it somehow. [18:15] __mn__: pass it into onmessage or the async function? [18:15] shaver: redis.thing("foo", (function(err, results) { }).bind(this)); [18:15] shaver: then |this| will work the way you want [18:15] __mn__: using .bind()? **tries** [18:15] mjr_: You need to pass client into onmessage(). THen it'll work. [18:15] shaver: alternatively, you can bind |this| to a variable, and then the usual closure mechanics help yoiu [18:15] mjr_: shaver: https://gist.github.com/661440 [18:15] mjr_: his scoping issue is a bit more complicated [18:16] mjr_: It's not really access to a parent var, it's access to a sibling var. [18:16] shaver: it'll work [18:16] mjr_: But client isn't in scope in onmessage(), line 15 [18:16] __mn__: hmm [18:16] brianc has joined the channel [18:16] shaver: right, he needs to use this.client then [18:16] mjr_: so the anonymous funciton on line 24 won't close over it [18:17] shaver: oh [18:17] mjr_: Oh, but this.client doesn't work because this is different in the closure [18:17] shaver: yeah, he'd have to bind all the way down [18:17] mjr_: so you need to stash this [18:17] shaver: right, binding was to solve the this problem [18:17] mjr_: oh sure, binding should fix that then [18:17] shaver: but better might be to just, before the switch, do: [18:17] shaver: var client = this.client; [18:17] shaver: and then you are set, upvars away! [18:17] sebastiandeutsch: tj: When my tests say "native library not built" but they run, what has happened? [18:17] __mn__: yeah, this.client bind didn't work. [18:17] __mn__: but a bind on the onmessage also? [18:18] mjr_: Right, just do var client = this.client on line 16 [18:18] aho has joined the channel [18:18] mjr_: __mn__: you are getting burned because "this" changes inside the callback. [18:18] shaver: forget binding [18:18] __mn__: gotcha [18:18] mjr_: So you need to either stash this, or stash client. [18:18] __mn__: so var client = this.client and then bind(client) [18:18] mif86 has joined the channel [18:18] mjr_: no binding [18:18] mjr_: not the droids you are looking for [18:18] tj: sebastiandeutsch: that is mongodb-native or w/e [18:18] tj: being annoying [18:19] tj: haha [18:19] __mn__: oh [18:19] tj: because they have a c++ BSON parser but it supports either transparently [18:19] tj: and outputs that if you dont have the c++ one built [18:19] tj: it should just be silent [18:19] __mn__: so var client = this.client and then I can call client.write() inside the redis async function? [18:19] kriszyp has joined the channel [18:19] mjr_: tj: HTTP 301 moved permanently, new location: #mongodb [18:19] sebastiandeutsch: tj: how do I built this one? [18:19] ossareh has joined the channel [18:20] __mn__: sweet, that worked. thank you. [18:20] sebastiandeutsch: tj: make [18:20] mjr_: oh, I guess I did jump into the middle of this. I thought you were in the wrong channel. :) [18:20] tj: mjr_: haha, this is node related [18:20] tj: sebastiandeutsch: I dont know, you dont need it [18:20] bradleymeck: ugg, is there a serverside way to detect if a client does not have js enabled? (or appear not to) [18:20] shaver: bradleymeck: not really, no [18:20] sebastiandeutsch: tj: I went to support/mongo-db-native and maked it [18:21] shaver: bradleymeck: unless you use JS to set document.cookie [18:21] sebastiandeutsch: tj: ok, currently all tests work fine [18:21] shaver: bradleymeck: and then observe its value [18:21] __mn__: bradleymeck: idea, just have a small javascript command that modifies some HTML inside an ID [18:21] __mn__: of like... a form or something [18:21] __mn__: then have the server get that value [18:21] __mn__: if its changed, then JS works, if it is the original value, then it doesn't work. [18:21] heavysixer has joined the channel [18:21] bradleymeck: yea, but was hoping something to grab that before page is done loading, anywho ill think on it then [18:22] __mn__: oh [18:22] aconbere has joined the channel [18:22] mjr_: I guess people still have JavaScript disabled? [18:22] mjr_: And they expect the Internet to work? [18:22] __mn__: thats pathetic :P JS is so criticla. [18:22] bradleymeck: i have a few here that refuse to turn it on [18:23] bradleymeck: and refuse to allow cookies [18:23] mjr_: surely they are used to web pages looking broken [18:23] figital has joined the channel [18:23] bradleymeck: and flash [18:23] brianc has left the channel [18:23] __mn__: refuse to allow cookies? [18:23] bradleymeck: mjr_ welcome to enterprise? [18:23] mjr_: heh [18:23] mjr_: Yeah, I do not miss that world. [18:24] __mn__: bradleymeck: why build a service that supports them, then? [18:24] bruse: mjr_: i use noscript [18:24] bruse: mjr_: i dont have a problem enabling it for sites that actually need javascript [18:24] bradleymeck: __mn__ cause they pay money [18:24] bruse: but it's annoying when websites hide content using javascript when they dont really need to [18:24] jankoprowski has joined the channel [18:24] mjr_: Wow, I LOVE money. [18:24] bradleymeck: i do when im out of a job like right now [18:24] __mn__: :P how do you build an app that is worth money if you don't have JS!? wow! [18:25] bradleymeck: lots of css and iframe magic [18:25] mjr_: Actually, I'm serious. I love money. [18:25] __mn__: bradleymeck: dang, that sounds atrocious. Glad I"m not you ;) or have your clients. [18:25] mjr_: It's great to be a programmer. Lots of people want to pay you to work on neat things. Even IE6 is still neater than some manufacturing job. [18:26] StanAngeloff has joined the channel [18:26] __mn__: true. [18:26] path[l] has joined the channel [18:26] brianc has joined the channel [18:29] shaver: most enterprise apps require cookies, IME [18:29] shaver: for authentication [18:29] shaver: because they make you log into frigging everything [18:30] bradleymeck: yes most do use cookies [18:30] brianc has joined the channel [18:32] Anti-X: lots of css and iframe magic [18:33] cardona507: mjr it depends what manufacturing job [18:33] cardona507: IE6 sucks [18:33] Anti-X: so basically you're the daily wtf? [18:33] Anti-X: bradleymeck [18:33] bradleymeck: yes i am [18:33] softdrink: is there a way to stop events in node, similar to stopPropagation() in a browser? [18:34] bradleymeck: since events do not cascade, nope [18:34] captain_morgan has joined the channel [18:34] hsuh has joined the channel [18:34] softdrink: or rather "stop iterating through my listeners for this event, but keep them around" [18:35] eee_c has joined the channel [18:35] bradleymeck: nope, order is not guaranteed anywho [18:35] creationix has joined the channel [18:35] softdrink: hrm [18:35] bradleymeck: by spec* it is by design [18:35] mjr_: Yeah, you probably need another event just for that [18:35] softdrink: ACTION rethinks [18:35] mjr_: creationix: are you node-ing it up at Palm now? [18:36] creationix: mjr_: yep [18:36] creationix: it' [18:36] creationix: it's awesome [18:36] mjr_: That's great [18:36] softdrink: sweet [18:36] bradleymeck: had some palm ppl at last austin js meetup, sounds like an interesting place [18:36] elijah-mbp has joined the channel [18:36] creationix: yeah, there is a LOT of exciting stuff going on here [18:37] creationix: and I get to learn Linux again (for some reason HP doesn't want to buy me an Apple ;) [18:37] gkatsev: webos is great. [18:37] halfhalo: i wonder why... [18:37] creationix: my new HP laptop is pretty sweet though [18:37] softdrink: make a hackintosh :) [18:37] creationix: softdrink: nah, I prefer Linux [18:37] softdrink: fair enough [18:38] Anti-X: lunix [18:38] Anti-X: lin@ix [18:38] Anti-X: bah [18:38] admc has joined the channel [18:38] gkatsev: creationix: do you know if palm is looking for an intern/co-op july-december of next year? ;) [18:39] creationix: gkatsev: probably, check with the recruiters [18:39] creationix: gkatsev: they are still looking for lots of JavaScript and node people [18:39] teemow has joined the channel [18:40] __mn__: creationix: Palm is looking for node.js people? [18:40] __mn__: for webOS? [18:40] Anti-X: no, for renovation [18:40] wink_: they were in here giving away palms to interested devs a couple of months ago [18:40] Anti-X: obviously for webos [18:40] gkatsev: creationix: yeah, i'll probably try and contact some people there early next year. I am currently a student at Northeastern and we have the co-op program where we go and work somewhere for 6months ever so often and it would be pretty cool to get a job a palm for that period. [18:41] matjas has joined the channel [18:41] creationix: if I have any say in it, palm will stay pretty active in the node community [18:41] halfhalo: dundunDUN [18:41] gkatsev: creationix: and if you dont? lol [18:42] creationix: I'm not on the Developer Relations team, but I know where they sit :P [18:42] gkatsev: heh [18:42] aconran___ has joined the channel [18:42] aconran____ has joined the channel [18:42] aconran_____ has joined the channel [18:42] aconran______ has joined the channel [18:42] aconran_______ has joined the channel [18:42] aconran________ has joined the channel [18:42] wink_: :| [18:42] gkatsev: creationix: you should get adora to come in here. I know she is in #webos and #webos-internals every so often, lol. [18:42] halfhalo: hah [18:42] gkatsev: creationix: adora being her username [18:42] pTa_armi has left the channel [18:43] hober: lisa rules [18:43] gkatsev: ACTION should start doing more node stuff. Fairly new to node actually. [18:43] gkatsev: hober: she does. [18:43] gkatsev: she even has a bobble-head app. [18:43] halfhalo: lulz @ adora bobblehead [18:44] gkatsev: I miss multitasking and notifications on my palm pre :( [18:44] Anti-X: maybe you should get what aconran__ is using [18:44] creationix: mjr_: do you know anyone that's worked with making node startup faster? [18:45] aconran__: Anti-X, soryr for the channel spam :-/ [18:45] creationix: aconran__ how [18:45] gkatsev: Anti-X: what? me? who? [18:45] creationix: how's it going?\ [18:45] Anti-X: gkatsev, you wanted multitasking [18:45] creationix: ACTION is still learning this new keyboard [18:45] Anti-X: :p [18:45] aconran__: good; trying to get a Touch build out the door :) how about you [18:46] halfhalo: lol... keyboards.... [18:46] gkatsev: Anti-X: what was he using, then? [18:46] Anti-X: look about 30 lines up [18:46] Anti-X: for multitasking [18:46] creationix: aconran__: I'm good, optimizing node to make webos more awesome [18:47] gkatsev: Anti-X: not seeing it :( [18:47] aconran__: creationix, good work [18:47] Anti-X: i don't feel like explaining the joke anymore [18:47] Gruni has joined the channel [18:47] gkatsev: :( [18:48] gkatsev: ACTION is lost [18:48] Anti-X: you'd think 6 simultaneous irc joins from the same user would qualify as a punchline [18:48] mattly_ has joined the channel [18:48] mjr_: creationix: other than ryah_, no. Is startup really slow on a mobile device? [18:48] gkatsev: Anti-X: I ignore quits/joins/parts [18:48] captain_morgan has joined the channel [18:48] Anti-X: well your loss then! :P [18:48] gkatsev: lol [18:49] gkatsev: yeah, but I dont get like 500 lines of joins/quits/parts every other line of conversation. [18:49] Anti-X: so what do you do when someone you're talking to suddenly disconnects? [18:49] Anti-X: you'll never know [18:49] Max-Might has joined the channel [18:49] Anti-X: and keep talking [18:49] Anti-X: like any fool [18:49] gkatsev: Anti-X: I always tab complete their names. If they quit well, w/e [18:49] geronimo_ has joined the channel [18:50] gkatsev: but there are a few apps that mimik webos multitasking for android. I just prefer the sense launcher, though. [18:51] MikhX has joined the channel [18:51] ryah_: creationix: palm has a lot of hacks for it [18:51] ryah_: (to make it faster) [18:55] creationix has joined the channel [18:55] jameshome has joined the channel [18:56] creationix has joined the channel [18:56] ryah_: they keep a little node zygote that thy fork to start a new one [18:57] isaacs: ryah_: do you have any idea where these ECONNRESET problems are coming from? [18:57] isaacs: ryah_: seems like it's happening a lot lately. i'm pretty sure it's a node bug, but i can't seem to isolate it. [18:58] V1 has joined the channel [18:58] mjr_: isaacs: might it be DNS related? [18:58] mjr_: I've been getting a lot of odd issues with DNS recently [18:58] Aria: ECONNRESET and DNS? [18:58] isaacs: mjr_: well, curl hits the registry twice in a row without any issue, and then node fais [18:58] isaacs: try again in 3 seconds, it works [18:58] agnat has joined the channel [18:58] oal has joined the channel [18:58] isaacs: it could be a cares bug, i suppose. [18:59] isaacs: since curl is using a different dns client [18:59] mjr_: I think there is at least a cares bug in node, but maybe not [18:59] Aria: (curl uses the system resolver, no?) [18:59] isaacs: Aria: yeah, i think so [18:59] ryah_: curl uses cares too [18:59] mjr_: Sometime recently, my node log server started leaking FDs, and lsof says this about them: [18:59] mjr_: node 4997 root 51u sock 0,6 0t0 2057571 can't identify protocol [18:59] isaacs: mjr_: https://gist.github.com/659337 [18:59] matt_c has joined the channel [19:00] ryah_: (c-ares was written for curl afaik) [19:00] captain_morgan has joined the channel [19:00] isaacs: oh, ok [19:00] bnoordhuis: isaacs: dns is by default over udp [19:00] mjr_: I assume they are DNS related, but I dunno. [19:00] ryah_: isaacs: but it's dieing on the connect, not the dns [19:00] isaacs: i know this happens when using Cygwin if you don't do the /etc/resolv.conf thing [19:00] isaacs: you get ECONNRESET errors. [19:00] bnoordhuis: that's weird [19:01] bnoordhuis: but it's cygwin only? [19:01] isaacs: ack! i'm dumb [19:01] isaacs: it's not reset, it's Error: ECONNREFUSED, Connection refused [19:01] isaacs: bnoordhuis: well, in this case, it's happening on mac and linux machines, too. [19:01] ryah_: isaacs: it comes from the socketError() call in net.js ? [19:01] mjr_: BTW, I am aware that DNS is UDP which is connecitonless, but the DNS lookup happens during connect in node. [19:01] ryah_: socketError = getsockopt(SO_ERROR) [19:02] ryah_: it's not originating from the dns code though.. [19:03] mjr_: So perhaps there is some other DNS issue I'm having, or possibly some other new and exciting problem. [19:03] bnoordhuis: any chance you could trace it with tcpdump? [19:04] ryah_: bnoordhuis: good idea [19:04] mjr_: isaacs: can you reliably reproduce your issue? [19:09] creationix has joined the channel [19:09] stagas has joined the channel [19:09] bnoordhuis: ryah_: this didn't land, did it? http://groups.google.com/group/nodejs/browse_thread/thread/b35802578e0a62b4/2b7b30f978572f05 [19:11] programble has joined the channel [19:11] programble has joined the channel [19:12] isaacs: mjr_: well, that's just it, i definitely can't [19:12] isaacs: mjr_: i get all these issues posted to npm about it, though [19:12] mjr_: that sucks [19:12] isaacs: mjr_: usually with a comment that says "Oh, ok, it's working now" [19:12] ryah_: isaacs: hm... [19:13] ryah_: is it always cygwin? [19:13] mjr_: I see strangeness like this though when making connections very quickly [19:13] isaacs: and npm is just doing a regular old http client connection in that case, just downloading a file. [19:13] isaacs: ryah_: no, it's everywhere. [19:13] isaacs: ryah_: curl hits the same server twice in a row without issue, then node fails. [19:13] saschagehlich: aloha [19:13] ryah_: bnoordhuis: no [19:13] saschagehlich: my node script throws an ECONNREFUSED on startup... how can I debug this? [19:13] saschagehlich: and why does node not tell me which host it is trying to reach? [19:14] isaacs: saschagehlich: perfect timing :) [19:14] saschagehlich: huh? [19:14] saschagehlich: ah I see [19:14] bnoordhuis: ryah_: this is where you say 'but i'll commit it right away' :) [19:14] isaacs: saschagehlich: can you reliably reproduce it? [19:15] yviktorov has joined the channel [19:15] isaacs: saschagehlich: or is it like this intermittent thing? https://gist.github.com/659337 [19:15] saschagehlich: isaacs: I didn't try to reproduce it yet [19:15] mjr_: isaacs: is there a way you can detect cygwin do you don't have to put that errorin there. I think it confuses a lot of people. [19:15] mjr_: It's a great suggestion for the 10 people using node on cygwin [19:16] saschagehlich: isaacs: "curl http://npmjs.org/install.sh | sh" worked fine here [19:16] isaacs: yeah, probably. once upon a time, it was almost exclusively a cygwin thing [19:16] isaacs: saschagehlich: always nice to hear :) [19:16] saschagehlich: well but I actually don't open a connection on startup [19:16] saschagehlich: except my redis connection which worked fine the few past days [19:16] evmar has left the channel [19:16] iAsterisk has left the channel [19:18] willwhite has joined the channel [19:19] mjr_: that's it [19:19] mjr_: saschagehlich: redis tries to connect if you do a createClient(), and that will emit an "error" event if it can't. [19:19] mjr_: Uncaught errors kill node. [19:19] saschagehlich: mjr_: yeah I know that [19:20] saschagehlich: mjr_: but wouldn't it be better if node would tell which host it's trying to connect? [19:20] mjr_: Oh, I see what you are getting at. [19:20] bnoordhuis: isaacs: ECONNREFUSED - isn't npmjs.org simply overloaded? [19:20] bnoordhuis: do you have iptables logging enabled? [19:20] muhqu has joined the channel [19:21] isaacs: bnoordhuis: i seriously doubt that's it. [19:21] isaacs: bnoordhuis: i could just wait a second and then try again once, or something [19:21] saschagehlich: well and the strange thing is... on another server the same script can access the redis server without any connection issues [19:22] isaacs: bnoordhuis: but if that was the case, i'd expect seeing errors on the curl, ever. and i don't, ever. [19:22] dgathright_ has joined the channel [19:22] isaacs: it's always on the node fetch, and the curls work fine. [19:22] bnoordhuis: fair point [19:22] bnoordhuis: tcpdump it is, then [19:22] isaacs: ugh. [19:22] isaacs: this is a 1% problem. [19:22] isaacs: i hate those. [19:22] isaacs: especially when you have over 100 users. [19:22] mjr_: saschagehlich: I can put a more descriptive error in there. Right now I just forward the error from the socket. [19:23] muhqu_ has joined the channel [19:24] CIA-93: node: 03Ben Noordhuis 07master * rb4def48 10/ (src/node.cc test/simple/test-process-env.js): Make writes to process.env update the real environment. Tests included. - http://bit.ly/c77eX7 [19:24] ryah_: bnoordhuis: --^ [19:24] CIA-93: node: 03Ryan Dahl 07writev * r7707a62 10/ (src/node_io_watcher.cc test/simple/test-dumper.js): Add ondrain callback (+6 more commits...) - http://bit.ly/bF33sN [19:24] bnoordhuis: hurray! [19:24] ryah_: bnoordhuis: thanks. sorry that i forgot about it [19:25] bnoordhuis: ryah_: np, i had too [19:25] mjr_: Did node at master get a lot faster over the past week? [19:25] unomi has joined the channel [19:26] ryah_: mjr_: well some better handling of extreme concurrency conditions [19:26] ryah_: emfile [19:26] ryah_: etc [19:26] mjr_: seems like my redis benchmark is running way faster [19:26] saschagehlich: isaacs: tell me if you found out sth about that issue [19:27] mjr_: And I didn't do anything. [19:27] pquerna: nightly benchmark speed test graphs go go [19:27] ryah_: writev is working kind of [19:27] ryah_: not hooked into net.js yet [19:27] mjr_: pquerna: I wish I had nightly graphs. This is just me running ti every time I touch the code [19:27] pquerna: also, are there any other noders at apachecon? or am I all alone? [19:28] mjr_: pquerna: you are never alone if you have IRC [19:28] ryah_: pquerna: apachecon = qcon? [19:28] mjr_: Your internet friends are here for you. [19:28] pquerna: awwww [19:28] jchris has joined the channel [19:28] pquerna: ryah_: apachecon in atlanta. [19:28] mjr_: ACTION feels the love [19:29] rcy has joined the channel [19:29] geronimo1 has joined the channel [19:29] faust45 has joined the channel [19:29] Aria: Ooh, writev! Nice, ryah_ ~! [19:30] matjas has joined the channel [19:30] matt_c has joined the channel [19:31] bmc has joined the channel [19:33] Moominpapa: Hi, I'm sorry if this is a dumb question, but I'm looking at the code for listener in socket.io [19:34] Moominpapa: https://github.com/LearnBoost/Socket.IO-node/blob/master/lib/socket.io/listener.js [19:34] Moominpapa: On line 18, it basically does this: this.options({ some: settings}, options); [19:34] Moominpapa: My question is: where did this.options come from? [19:34] rauchg_: Moominpapa: for (var i in options) Listener.prototype[i] = options[i]; [19:35] rauchg_: it's an options util [19:35] rauchg_: that is added to the prototype [19:35] Moominpapa: aaah [19:35] Moominpapa: Thankyou. [19:35] Moominpapa: I was looking for something like that :) Thought I'd found it, but didn't understand it. :) [19:36] MikhX_ has joined the channel [19:37] mikedeboer has joined the channel [19:37] ngw has joined the channel [19:37] jherdman has joined the channel [19:38] brianc has left the channel [19:40] bahamas has joined the channel [19:40] brianc has joined the channel [19:44] creationix has left the channel [19:45] benburkert has joined the channel [19:47] richcollins has joined the channel [19:49] mjr_: saschagehlich: I've updated node_redis to send friendlier error events on stream errors. [19:49] saschagehlich: mjr_: nice, thanks. I'll try that in a second [19:49] sprout has joined the channel [19:53] bradleymeck: anyone have a way to detect if a key is down when you load a page, and the initial mouse position w/o the mouse event stuff? [19:57] Anti-X: you mean in a css and iframes kind of way? [19:57] Anti-X: :P [19:57] Anti-X: (NO) [19:57] wilmoore has joined the channel [19:58] bradleymeck: css and iframes are a lst resort [19:58] bradleymeck: last* [19:58] figital has joined the channel [19:59] jamund has joined the channel [19:59] Anti-X: if a key is down, you'll usually get a keypress event at intervals specified by the OS [19:59] mjr_: unless they've disabled typematic in the bios [19:59] Anti-X: then it doesn't matter anyway [20:00] mjr_: You know, enterprise users, always fiddling with their BIOS [20:00] Anti-X: because then the key won't do anything [20:00] Aria has joined the channel [20:00] Anti-X: you can disable keyrepeat in windows directly [20:00] bradleymeck: just find it hard to believe that you cant find a mouse position unless it moves [20:01] Anti-X: what about enterprise users on ipads! [20:01] Anti-X: they're screwed [20:01] bradleymeck: they are screwed anyway most of the time [20:01] mjr_: Also, please consider enterprise users who don't have floating point co-processors. [20:02] ThePub has joined the channel [20:02] Anti-X: or enterprise users on fax! [20:02] mjr_: oh shit [20:02] mjr_: you are so right [20:02] tmpvars has joined the channel [20:02] Anti-X: what on earth will they click [20:03] Aria: HTTP over ITU-T.37! Woo! [20:03] brianc has left the channel [20:03] mjr_: I think fax machines will increasingly have actual mice creating actual "events" on them, if they aren't so already. [20:04] Anti-X: i have no idea why you know that code, and i don't think i wanna hear horror stories today [20:04] EyePulp: heh' [20:04] jesusabdullah: fax machines? What? [20:04] Anti-X: you know [20:04] Anti-X: bip bip [20:04] jesusabdullah: >:| [20:04] jesusabdullah: Fax machines suck. [20:05] Anti-X: WELL EXCLUDING FAX MACHINES WOULD EXCLUDE A LARGE CUSTOMER BASE [20:05] mjr_: brrrrr-bawwwww-SCREEEEE-beedlebeedlebeedle [20:05] jesusabdullah: GOOD [20:05] tmpvars: Wave of the future [20:06] Anti-X: lol @ beedle [20:06] jesusabdullah: What really sucks is when you don't have a separate fax line [20:06] jesusabdullah: "Hello?" [20:07] jesusabdullah: SCREEEEEEEEEEEEEEEEEEEEEbeedlebeedlebeedle KSHHHHH [20:07] jesusabdullah: "FFFFFUUUUUU----" [20:07] Anti-X: http://img.thedailywtf.com/images/200909/graphic_design_resume.gif [20:07] jesusabdullah: *9* *hang up* [20:07] noahcampbell has joined the channel [20:07] jesusabdullah: Oh and then a call a few minutes later: "Did you get my fax? I don't think you got my fax." [20:07] Anti-X: haha [20:07] tlrobinson has joined the channel [20:07] jesusabdullah: That's beautiful [20:08] mjr_: it's an enterprise-grade solution [20:08] mjr_: Man, I am so not feeling like working today [20:08] jesusabdullah: And then, "DON'T ANSWER THE PHONE IM EXPECTING A FAX" [20:08] jesusabdullah: "Moooom why do those losers at company X even USE faxes? They KNOW how to use email" [20:09] jesusabdullah: and grandma: "I looove fax machines! They saved my bacon when your great grandmother was in legal trouble" [20:09] jesusabdullah: *sigh* [20:09] Anti-X: yeah and why do companies who still use fax still make money? [20:09] rikarends has joined the channel [20:09] jesusabdullah: Because people are assholes. [20:09] mjr_: People don't have scanners, but fax machines have scanners [20:09] Anti-X: oh [20:09] jesusabdullah: and Grandmas. [20:09] Anti-X: is that why [20:09] rikarends: Just released cloud9 0.1.3, now with even better NodeJS debugging. http://cloud9ide.posterous.com/cloud-9-ide-103-released [20:09] mjr_: And pinter makers don't have scan to email unless you pay them $800 [20:09] jesusabdullah: Fax it to yourself? [20:09] mjr_: If cheap printers just had scan to email, fax would be mostly over. [20:10] jesusabdullah: That'd be pretty awesome [20:10] Anti-X: i remember having a scanner that you placed on the table and it rolled over the paper [20:10] jesusabdullah: and why that isn't easy, idk [20:10] Anti-X: and it took AAAAAGES [20:10] jesusabdullah: I need a new scanner [20:10] jesusabdullah: my ole' HP one took a dump [20:10] jesusabdullah: I got it before there was good linux support for it! [20:10] jesusabdullah: And then there WAS [20:10] jesusabdullah: and then it died [20:10] Anti-X: RIP [20:10] mjr_: We have this HP multi-way thingy in our office, and it scans to email wonderfully. [20:11] shaver: HP stuff is great until you have to install drivers [20:11] shaver: and then OH GOD MY EYES MAKE IT STOP [20:11] Anti-X: yeah it looks like they hired all the programmers that nobody else wanted [20:11] Anti-X: no offense to creationix or anything :p [20:11] rikarends: i find it offensive that after 20 or so years HP and microsoft still have failed to make printers work with computers out of the box [20:12] shaver: my last mac knew how to talk to this HP thing we have, but Windows 7 was a total loss [20:12] rikarends: yes mac does it great [20:12] rikarends: windows its a disaster [20:12] shaver: had to go find the VISTA drivers, because HP doesn't even bother to list them on the Win7 page [20:12] shaver: they just say "go get a vista one" [20:12] saschagehlich: mjr_: ah, I'm actually not using node_redis [20:12] SubStack: I have had no problems getting this debian laptop to talk to printers either [20:12] shaver: like, maybe you could LINK IT THERE TOO AUGH HELP ME [20:13] mjr_: saschagehlich: well, if you do, then you'll get friendlier error messages. :) [20:13] jesusabdullah: Who's "they?" [20:13] shaver: the HP web site [20:13] jesusabdullah: heh [20:13] jesusabdullah: That piece of crap :( [20:13] Anti-X: microsoft need to approve drivers, or else the user actually gets a warning... and so needless to say, shit takes ages [20:13] jesusabdullah: Or at least it was last time I went there [20:13] rikarends: no microsoft has had their chance [20:13] jesusabdullah: I've bought stuff that throws the warning [20:13] rikarends: just fine [20:13] jesusabdullah: The docs say, "Just ignore it. No really, it's okay" [20:14] rikarends: i have brand spanking new printer and brand spanking new windows 7 [20:14] rikarends: and it aint working out of the box [20:14] saschagehlich: and the ECONNREFUSED was actually my fault.... [20:14] rikarends: well then i say to you 'goodbye' [20:14] rikarends: HP [20:14] jesusabdullah: I've had a pretty good time with linux and printers so far [20:14] jesusabdullah: I hate HP's printer software, it's so bloated :( [20:14] rikarends: some people have a good time with whips and bare skin too [20:14] Anti-X: do apple write the drivers themselves? [20:14] rikarends: i guess everyone is different [20:15] jesusabdullah: All I know about Apple and printing is that they make CUPS nowadays [20:15] jesusabdullah: which is the same server-stuff that linux uses [20:15] Anti-X: because apple would benefit greatly from having everything just work [20:15] rikarends: i think apple is actually good at beating up vendors [20:15] rikarends: whereas microsoft is not [20:15] ph^ has joined the channel [20:15] Anti-X: beating up? [20:15] Anti-X: as in rape? [20:15] Anti-X: or as in disciplining? [20:16] rikarends: yes as in 'MAKE THIS F*** PIECE OF ** PRINTER WORK WITH OUR OS CORRECTLY' [20:16] rikarends: or we'll shove an ipod up your *** [20:16] rikarends: with microsoft that'd be a weird threat [20:16] Anti-X: an ipod will fit snuggly.. make it an ipad [20:16] rikarends: anyway maybe apple is just better [20:16] rikarends: at it [20:16] jesusabdullah: Could also be it's easier to do [20:17] rikarends: but i find it insulting to man kind that microsoft has failed to do something so basic [20:17] jesusabdullah: If OSX uses CUPS in the background, then it shouldn't be too bad [20:17] jesusabdullah: I've heard that microsoft's drivers situation is Hellish in nature [20:17] Aria: Yes it is. [20:17] Anti-X: you'd think the OS would supply an interface towards which you write your drivers [20:17] rikarends: the curse of microsoft is that they leave the vendor too much space to fuck it up [20:17] cardona507 has joined the channel [20:17] rikarends: always have [20:18] jesusabdullah: but I've researched stuff with CUPS a little, and it basically will push either postscript of pdf to any ol' printer [20:18] jesusabdullah: So, my impression is that if your printer understands ps then you're most of the way there [20:18] rikarends: there was a fun era in computing where the CPU in your printer was faster or about as fast as your main PC [20:18] Anti-X: what about matrix printers? [20:18] rikarends: particularly PS laser printers [20:18] jesusabdullah: That sounds pretty awesome >:D [20:19] jesusabdullah: I could see someone hacking their printer to run jobs on it <_< [20:19] rikarends: those things actually run code. PS is actual vector code [20:19] Anti-X: it wasn't so much awesome as it was that both were pushed to the limit, and the printer was the thing that struggled [20:19] rikarends: its a form of a drawing language [20:19] rikarends: you could run algos in it [20:19] rikarends: you could make your printer draw fractals n shit [20:19] jesusabdullah: and have the printer just print the solution :D [20:19] jesusabdullah: That'd be sweet [20:19] rikarends: http://www.pvv.ntnu.no/~andersr/fractal/PostScript.html [20:19] mjr_: PostScript was a surprisingly advanced technology for its day [20:20] Anti-X: what, compared to math? [20:20] Anti-X: :p [20:20] mjr_: Then Sun tried to do display PostScript. [20:20] stagas: how does getorsetget sound like a method? [20:20] stagas: :P [20:20] mjr_: Compared to the way people did printing at the time, PS was an entirely amazing advance. [20:20] jesusabdullah: It sounds like Dr. Seuss [20:21] italic: there's a "famous" typeface that was written in postscript that was random everytime it printed [20:21] Anti-X: stagas, if that's a method in your code, you need to change it [20:22] rikarends: ah well now we have canvas :) [20:22] stagas: to what. I want a method to get, or set then get if it doesn't exist [20:22] Anti-X: well [20:22] jesusabdullah: Now we just need a canvas --> ps converter [20:22] Anti-X: if you set it to a default value [20:22] Anti-X: then just call it get [20:22] jesusabdullah: (aka browser _ 'print' button I guess) [20:23] Anti-X: or have an argument called default [20:23] rikarends: im releasing a canvas module for nodejs today [20:23] jesusabdullah: Sweet [20:23] drudge_ has joined the channel [20:23] Anti-X: rikarends, that does what? [20:23] jesusabdullah: How about that plotting tool? >:P [20:23] rikarends: right now it does all the line/vector stuff [20:23] jesusabdullah: will I be able to plot from node.js?! [20:23] Anti-X: rikarends, does it produce a png? [20:23] rikarends: font / imageblitting will be in a few days [20:23] rikarends: it spits out png and jpg as nodejs buffers [20:24] Anti-X: does it use gd? [20:24] italic: i wrote a scene-graph/event dispatch lib for canvas [20:24] rikarends: its built on LibAGG [20:24] jesusabdullah: Oh, that sounds neat [20:24] rikarends: its actually very fast [20:24] stagas: ah so I change get to act like a getorsetget if it has an extra argument. but I don't want to waste speed checking for arguments. it needs to be a method on its own [20:24] drudge_ has joined the channel [20:24] rikarends: its a first release though. [20:25] jesusabdullah: stagas: Are you sure that 'waste' in speed isn't worth it? [20:25] Anti-X: to be completely fair, i thought this is why canvas was created in the browser, so we didn't need to create vector graphics on the server and then transfer them, but rather just transfer the data and let the client do the plotting [20:25] rikarends: the cool thing is just for rendering stuff you would in canvas to images [20:25] rikarends: so you can email them [20:25] rikarends: or save-as-image [20:25] rikarends: or tweetpic them [20:25] Anti-X: well you can already do that..? [20:25] tj: rikarends: source up anywhere? we have something similar lol [20:26] Anti-X: canvas can base64-encode, and then you just bitmap the shit up [20:26] jesusabdullah: So you can put 3-d canvas-rendered graphs in papers without opening them in a browser, screenshotting, etc. [20:26] rikarends: tj: its all in github.com/ajaxorg/o3 [20:26] rikarends: jesusabdullah: exactly [20:26] rikarends: tj: you do? [20:26] tj: rikarends: yeah [20:26] rikarends: tj: how far along are you? [20:26] tj: decently far [20:27] rikarends: based on which lib? [20:27] tj: cairo [20:27] Anti-X: stagas: remember that the setting will be only once [20:27] bradleymeck has joined the channel [20:27] Anti-X: all subsequent requests will ignore the default value argument [20:29] rikarends: tj: do you have your stuff on github? [20:30] tj: rikarends: yup, but its not OS yet [20:30] rikarends: why? [20:30] Anti-X: prudence [20:30] Anti-X: that's why! [20:30] jesusabdullah: Prudence sounds like a town name [20:30] jesusabdullah: Prudence, Missouri [20:30] Anti-X: no that's providence [20:31] Anti-X: but yeah.. now that you mention it.. it could be [20:31] jesusabdullah: Well, I don't think there actually *IS* a town called Prudence [20:31] shaver: prudence island is a town in RI, yeah [20:31] shaver: zip 02872 [20:31] Anti-X: prudence is a south african first name [20:31] Anti-X: haha [20:32] jesusabdullah: It just *sounds* like it would be the name of a place with small town values, bible, etc. [20:33] necrodearia has joined the channel [20:33] Anti-X: a town full of virgins, and strangely inbred [20:33] Anti-X: virgins in quotes [20:34] jesusabdullah: An ENTIRE VILLAGE of Bristol Palins [20:34] jesusabdullah: As far as the eye can see [20:34] Anti-X: hahah [20:34] Anti-X: zing [20:34] jesusabdullah: Yeah, I'm from Alaska :( [20:34] Anti-X: speaking as a mother? [20:35] jesusabdullah: Who, me? [20:35] Anti-X: :p [20:35] jesusabdullah: D: [20:35] jesusabdullah: heh [20:35] Anti-X: you don't know that palin joke? [20:35] Anti-X: she ends every sentence with "speaking as a mother" [20:35] jesusabdullah: haha [20:35] Anti-X: i think she quit doing that though [20:35] Anti-X: after the.. thing [20:35] jesusabdullah: "myaverick" is still popular here [20:35] jesusabdullah: Now thyat's a myaverick [20:36] jesusabdullah: We've enough crazy political shit lately that, well [20:36] jesusabdullah: Sarah Palin's the least of our worries [20:36] benburkert has joined the channel [20:36] Anti-X: well when you can't go outside without freezing your testes off, people are bound to stay inside and either fornicate or brew up some nasty political agendas [20:37] rikarends: tj: what stage are you with api support? [20:37] tj: rikarends: only stuff left really is to finish what I have for the PixelArray and shadows, few misc text changes etc [20:37] tj: polish [20:37] marienz has joined the channel [20:37] tj: more tests, blah blah [20:38] Anti-X: shipping is a feature! [20:38] rikarends: tj: alright, yeah we have text almost done, shapes are there. But needs polish [20:39] heavysixer has joined the channel [20:40] matjas has joined the channel [20:40] jesusabdullah: People stay inside and either read a lot of Internet or polish their guns, read Ayn Rand and watch Fox News [20:40] jesusabdullah: Most of them do the latter three [20:41] jesusabdullah: s/Ayn Rand/The Bible/ for some people [20:43] technoweenie has joined the channel [20:44] cloudhead has joined the channel [20:44] indexzero has joined the channel [20:46] indexzero: hey, has anyone gotten daemon.node to work on OSX? [20:52] admc has joined the channel [20:53] indexzero: ACTION hears birds chirping [20:54] bnoordhuis: indexzero: what problems are you running into? [20:54] indexzero: Check out the blog post, last comment: http://slashed.posterous.com/writing-daemons-in-javascript-with-nodejs-0#pcomment_commentunit_5698960 [20:54] indexzero: basically getting 'bad file descriptor' errors on OSX [20:55] davida has joined the channel [20:55] creationix has joined the channel [20:56] charlenopires has joined the channel [20:56] bnoordhuis: indexzero: i can wager a few guesses but nothing definite [20:56] jchris has joined the channel [20:57] indexzero: bnoordhuis: I'm all ears, I've been checking out other forks and even fugue for other implementations [20:57] bnoordhuis: indexzero: if libev is monitoring an fd that is marked F_CLOEXEC then the fork() will close it [20:57] bnoordhuis: problem is that it might be pretty difficult to find out what fd that is [20:58] wilmoore has joined the channel [20:58] indexzero: hmmm ... I think you're right, fugue seems to solve this by explicitly passing the fd to the C++ module [20:59] indexzero: https://github.com/pgte/fugue/blob/master/lib/fugue.js#L175 [20:59] indexzero: he rewrote daemon.node a bit, I'm going to give his usage / 'fork' a try [20:59] bnoordhuis: indexzero: let me know how that works out [21:00] indexzero: 10-4 [21:01] rikarends: w00t all platform builds green. [21:02] matt_c has joined the channel [21:02] rwaldron has joined the channel [21:04] huntz0r has joined the channel [21:04] geronimo_ has joined the channel [21:04] geronimo_ has joined the channel [21:04] indexzero: bnoordhuis: BAM! That did it [21:05] bnoordhuis: yeah? good :) [21:06] indexzero: https://gist.github.com/e5e84dd8411d86d2f9dc [21:06] indexzero: it's not perfect yet, but I'm going to merge some of these daemon.node forks into the one true xplatform fork [21:06] kersny has joined the channel [21:06] LionMadeOfLions has joined the channel [21:06] kriszyp has joined the channel [21:10] mraleph has joined the channel [21:12] noahcampbell has joined the channel [21:13] jbenesch has joined the channel [21:13] robmason has joined the channel [21:13] wilmoore has joined the channel [21:18] trotter has joined the channel [21:25] jimmybaker has joined the channel [21:25] yviktorov has joined the channel [21:27] yeevgen has joined the channel [21:27] jfd1 has joined the channel [21:28] joemccann has joined the channel [21:29] jpld has joined the channel [21:29] joemccann: is holowaychuk in here? [21:30] Prometheus: joemccann: that'd be tj [21:30] Anti-X: totes brah [21:30] tj: joemccann: ah yeah sorry whats up [21:30] joemccann: ahh [21:30] joemccann: shortened the handle [21:30] joemccann: tj: quick question in regards to view partials in express [21:30] Anti-X: what's with the new shorter nickname? [21:30] joemccann: pretty sure i'm doing something wrong [21:30] Anti-X: it took me a few days to realise that it was you [21:30] halfhalo: shorter nicks get more chicks [21:30] jpld: short is where its at. [21:31] tj: hahaha [21:31] Anti-X: which may or may not have been the plan [21:31] tj: joemccann: whats the issue? [21:31] tj: send a gist if you need [21:32] meandi has joined the channel [21:32] joemccann: tj: creating a gist real quick...will be easier to understand [21:32] nuba has joined the channel [21:34] joemccann: tj: https://gist.github.com/661761 [21:34] joemccann: tj: instead of creating
  • foo
  • bar
  • end
  • [21:35] joemccann: tj: it renders out:
  • f
  • o
  • o
  • ...so basically splits each string, instead of just grabbing the entire string [21:35] davidascher has joined the channel [21:35] tj: joemccann: <%- [21:35] tj: wont escape the html [21:36] joemccann: tj: the escaping is not the issue [21:36] davidascher has joined the channel [21:36] tj: so that is what you want for the partial() call [21:36] tj: hm [21:36] tj: it should be [21:36] joemccann: tj: it is splitting the strings, foo, bar, and end, into f,o,o,b,a,r,e,n,d [21:36] joemccann: tj: so instead of having 3 list items, in this case, i have 9... [21:37] joemccann: tj: make sense? [21:37] tj: yup, just looking [21:37] tj: hmm [21:37] tj: let me plug that into a script, will see what I can do [21:37] joemccann: tj: basically, i want "list.ejs" to be generic enough so i can use the "as" property in the partial view [21:37] joemccann: tj: [21:37] joemccann: ok [21:38] tj: oh nvm [21:38] tj: i get it [21:38] tj: the issue is [21:38] tj: that you loop in the partial, but you are passing a collection [21:38] tj: so partial() iterates the array, and then you iterate again [21:38] tj: over each string value [21:38] ako has joined the channel [21:38] tj: so either remove the for loop [21:39] tj: or use { object: stuff, as: 'items' } [21:40] tj: just keep in mind not to use partials for tiny tasks, because they are expensive compared to a single forEach/for [21:41] rikarends: whats a partial [21:41] joemccann: tj: i want to iterate over the collection [21:41] rikarends: a subtemplate? [21:41] tj: yup [21:41] sonnym has joined the channel [21:41] joemccann: so why wouldn't i use forEach/for? [21:41] yeevgen has joined the channel [21:41] joemccann: in list.ejs [21:41] joemccann: ? [21:41] tj: joemccann: "items" in your list.ejs is a stirng [21:41] tj: string* [21:42] joemccann: tj: oh wait, so the partial already _handles_ the iteration [21:42] tj: { object: foo } is for passing a single object to the partial, { collection: foo } iterates for you, hitting the partial several times [21:42] joemccann: tj: ahhh gotcha [21:42] naturalethic has joined the channel [21:42] joemccann: tj: that's what I didn't get b4 [21:42] tj: joemccann: only if you pass an arr as the second arg, or { collection } [21:42] tj: so partial('item', items) and partial('item', { collection: items }) are the same [21:43] joemccann: tj: ok totally get...so based on what is in, the partial engine determines whether to iterate or not [21:43] charlenopires_ has joined the channel [21:43] tj: yup [21:43] tj: but again just keep in mind for something like constructing a
  • it will be very wasteful [21:43] tj: in comparison [21:43] joemccann: tj: a partial? [21:43] joemccann: tj: that's what u are doing in the examples in the express repo? [21:44] tj: for illustration [21:44] TheEmpath: off-topic, but is anyone familiar with getting just a basic oauth response out of twitter? [21:44] TheEmpath: all Web APIs need to die a violent death. [21:44] tj: joemccann: because I am bad at thinking of examples haha, a comment would be a better use-case [21:45] tj: joemccann: it wont really hurt you much unless you list say 500 items, that is 1000 calls to render()/partial() [21:46] joemccann: tj: ok so i should instead of building the list items in a partial, you recommend doing it directly in "homepage.ejs" for example? [21:46] hassox has joined the channel [21:47] tj: joemccann: it really depends on what you plan to do. if you will never display an item by itself, then render the entire list in a partial [21:47] tj: and not just one item [21:47] tj: and do parial('list', { object: [....] }) [21:47] joemccann: tj: so my thinking is i have multiple places where i want to iterate over an array of strings, for example, to build out the list items [21:48] joemccann: tj: i think having a generic partial where i can just pass it an array of strings will generate the
  • s for me [21:48] joemccann: tj: make sense? [21:48] tj: well yeah but conceptually each partial should be classified as something... not just a ul list [21:48] yeevgen has joined the channel [21:48] tj: a list OF something, not just a list [21:49] rikarends: in livemarkup you can just do this [21:50] rikarends: function renderList(a){ for(var i =0;ia[i]
  • } [21:50] rikarends: its still on my todo list to refactor for nodejs [21:50] tj: what is [21:50] rikarends: my livemarkup template engine [21:51] tj: ah [21:51] rikarends: its the core templating engine for all ajax.org stuff [21:51] joemccann: tj: https://gist.github.com/661789 [21:51] rikarends: even the Cloud9 IDE is largely built with it [21:51] rikarends: but its all clientside JS [21:52] tj: joemccann: dont use collection for that, use "object" [21:52] joemccann: tj: whoops, my bad [21:52] joemccann: tj: so the idea is [21:52] tj: and if you omit as: 'items' it will give you a "list" object, so might be cleaner [21:52] tj: you could always just write a helper for that though [21:52] tj: instead of using the view system just to wrap
  • [21:53] joemccann: tj: i want to just be able to call "partial('list', {object: whatever}") [21:53] tj: just have <%- list(items) %> [21:53] joemccann: tj: ahh, gotcha [21:53] tj: its cleaner and faster [21:53] tj: I would reserve partials for things like comments, posts, users, forms, etc [21:53] joemccann: tj: so really then are partials better used like includes? like i want to include the navigation on every page [21:53] tj: you can if you want to [21:53] joemccann: tj: so i do "partial('nav')" [21:53] joemccann: ? [21:54] tj: partial('comment', user.comments) [21:54] tj: that sort of thing [21:54] tj: gotta run tho [21:54] joemccann: tj: more like templating, less like includes [21:54] joemccann: tj: ok cool thx 4 ur help [21:54] tj: np [21:55] softdrink: console.group and console.groupEnd plz? :) [21:56] tj: softdrink: I had that actually haha [21:56] tj: well kinda [21:59] rikarends has left the channel [22:00] softdrink: kinda? [22:02] sveisvei has joined the channel [22:06] ysynopsis has joined the channel [22:08] dysinger has joined the channel [22:09] langworthy has joined the channel [22:11] tmpvar has joined the channel [22:12] tmpvar: ryah_, are Script::CeateContext and Script::RunInContext going to be sticking around for a while? [22:12] Aria has joined the channel [22:14] ryah_: tmpvar: yes [22:14] ryah_: need to stick them in a require() though [22:14] ryah_: i don't want them exposed via binding() [22:16] jashkenas has joined the channel [22:16] jakehow has joined the channel [22:19] tmpvar: ryah_, excellent [22:19] ddollar has joined the channel [22:19] ddollar has left the channel [22:19] sivy has joined the channel [22:19] ddollar has joined the channel [22:22] Blackguard has joined the channel [22:24] FMJaggy has joined the channel [22:24] tmpvar: ryah_, are you going to tack them onto the "evals" module? [22:24] tmpvar: there are a few eager people that might want to do this work for you [22:25] tmpvar: oh! woops sorry.. realized evals is a binding as well [22:32] brianc has joined the channel [22:32] EyePulp: not to be ungrateful, but Socket.IO seems super-unstable on the client-side. It's very possible it's my implementation, but I can't tell. I'm trying to make it more robust handling dropped connections, but it seems to snowball after the first drop and drop every few seconds after that. Is there any simple reference examples of handling reconnection under non Flash-socket or web socket connections (this is using xhr-multipart) [22:33] EyePulp: or is there a debugging mode in the client or node version that might point to the cause for the drops? [22:38] freeformz has joined the channel [22:38] jimt_ has joined the channel [22:42] ben_alman has joined the channel [22:43] marshall_law has joined the channel [22:46] brianc has left the channel [22:46] scvrory has joined the channel [22:47] jfd1 has joined the channel [22:47] amerine has joined the channel [22:47] brianc has joined the channel [22:50] killfill: hm.. [22:51] killfill: whats better?... npm or kiwi?.. :) [22:51] tj: kiwi is dead and no longer works lol [22:51] echosystm has joined the channel [22:51] tj: npm [22:51] echosystm: hi guys [22:51] killfill: ah :) [22:51] echosystm: is there a code style guide somewhere for nodejs/commonjs ? [22:51] echosystm: something like PEP8 for python [22:53] killfill: mongodb seems to get the most love from the node community.. [22:53] jfd1 has joined the channel [22:53] killfill: i wonder why its not riak.. :P [23:05] jfd1 has joined the channel [23:05] noahcampbell_ has joined the channel [23:06] shaver: how does node handle OOM? does it GC and give an event (fragile) or just abort()? [23:08] kschzt has joined the channel [23:08] AAA_awright has joined the channel [23:09] bnoordhuis: shaver: depends on the OS [23:09] bnoordhuis: node itself doesn't explicitly handle OOM errors [23:09] saikat has joined the channel [23:10] shaver: does v8 report them? [23:10] kschzt: what's that project for spawning new node processes [23:10] shaver: kschzt: dnode? [23:10] bnoordhuis: shaver: somewhat [23:10] jpld has joined the channel [23:10] jpld has joined the channel [23:10] bnoordhuis: but on linux for example, malloc() always succeeds [23:10] kschzt: shaver, not exactly, no [23:10] shaver: with default overcommit settings, yeah [23:10] bnoordhuis: yep [23:11] severla has joined the channel [23:12] kschzt: i've got some code in scala managing (typically pretty short) rhino instance lifetimes, which is now ripe for a node port [23:13] naturalethic: any way i can disable the warning: The 'sys' module is now called 'util'. It should have a similar interface. [23:13] technoweenie: rename 'sys' to 'util' [23:13] kschzt: i was thinking, per vm, i'd have a manager node.js, spawning those instances, monitoring them a little, terminating etc [23:13] shaver: or update to master [23:13] shaver: ryah reverted that warning [23:13] naturalethic: technoweenie: my vendor modules aren't up to date -- i'd just like to disable it globally [23:14] naturalethic: shaver: ok thanks [23:14] technoweenie: well its a lot more polite than blowing up [23:14] technoweenie: is it changing back to sys? [23:14] naturalethic: seems there should be a general way to turn off deprecation warnings [23:15] jamescarr has joined the channel [23:15] bnoordhuis: shaver: just checked, node simply dies with a fatal error [23:15] severla: I have the following issue with an app using express ... the weird thing is that the issue only happens in Ubuntu 10-04 ... it works OK in OSX ... would someone take a look? https://gist.github.com/661878 [23:17] kschzt has joined the channel [23:17] naturalethic: severla: you using the same version of connect in both? [23:17] bnoordhuis: severla: probably a difference in how the browser sends the request [23:17] kschzt: woops, forgot i was behind telecom italy.. [23:17] JimBastard has joined the channel [23:18] ryah_: technoweenie: no it's not changing back [23:18] ryah_: technoweenie: i just dont want to cause unnecessary concern [23:18] JimBastard: i feel asleep while coding last night, almost broke my laptop when i woke up this morning and stood up (it was on my lap) [23:18] JimBastard: >.< [23:18] ryah_: people have a very long time to switch away from sys [23:18] saikat_ has joined the channel [23:18] ryah_: feel free to continue to use it forever :) [23:18] technoweenie: awesome [23:19] JimBastard: ACTION starts the engine back up [23:19] JimBastard: coffee and blunt time [23:19] jesusabdullah: Interesting combination [23:20] severla: naturalethic: both (OSX and Linux) have exactly the same (I 'copy/pasted' the app from OSX to Linux, including support directory containing express) [23:20] JimBastard: breakfast of champions [23:20] shaver: ryah_: that's good, because half the time I forget that it's not "utils" and get dumb errors, leading me to question my career choices and drink inappropriate quantities on work days [23:21] ashleydev: is there a way to get the linenumber in the file you're in, i.e.: __linenumber ? [23:21] naturalethic: severla: hmm i'd check your raw stream and see if the data is coming in exactly the same then [23:21] jvolkman has joined the channel [23:22] naturalethic: severla: inspect the req object first, see where they are different [23:22] ryah_: ashleydev: not really. there's console.trace() [23:22] devinus_ has joined the channel [23:22] ashleydev: ryah_: thx. [23:22] [[zzz]] has joined the channel [23:23] tj: ashleydev: you can do a nifty stack trace capture hack [23:23] ashleydev: tj: working that up now :) [23:23] JimBastard: tj: are you tjh? [23:23] tj: yeah [23:23] tj: as [23:23] tj: ashleydev* [23:23] JimBastard: artist formally known as tj [23:23] tj: then just use a getter [23:24] tj: __line or whatever [23:24] ashleydev: getter? [23:24] kschzt: guess I could just use child_process.spawn() [23:25] ryah_: it would be nice to add a little preprocessor for __LINE__ [23:25] tj: you can do it without [23:25] tj: ashleydev: yeah, just a getter on global [23:25] shaver: like __dirname [23:26] ashleydev: hmm console.trace() doesn't return a string... [23:26] tj: dont use console.trace() for that [23:27] ashleydev: ACTION is lost now... [23:27] tj: :p [23:27] stepheneb has joined the channel [23:27] tj: id wipe something up but I am pretty busy, if you remind me tomorrow I can [23:27] ben_alman has joined the channel [23:27] ashleydev: sounds messy [23:27] tj: or ask bradleymeck maybe he remembers where that was [23:27] ryah_: we can add a preprocessor [23:28] ashleydev: \o/ [23:28] tj: ryah_: not really though what if you had "__line" :p [23:29] tilgovi has joined the channel [23:30] gsmcwhirter has joined the channel [23:32] JojoBoss has joined the channel [23:33] kschzt: are people using child_process.spawn() for slightly longer running tasks? [23:33] EyePulp: I'm using JSON.stringify() on an object that has a document from mongodb via mongoose - for some reason it's turning the document into a pure string, and not an eval()-able json object. I assume I'm screwing something up [23:34] kschzt: EyePulp, call toObject() on the Mongoose object first [23:35] EyePulp: kschzt: ah - perfect! [23:35] EyePulp: I should have read... something... more closely. =) [23:35] EyePulp: the source perhaps. [23:35] kschzt: using pgriess's https://github.com/pgriess/node-webworker could also work for my problem [23:36] kschzt: EyePulp, no worries [23:39] JimBastard: deepthawtz: ping [23:39] deepthawtz: JimBastard: ? [23:39] JimBastard: deepthawtz: do you have a sec to review the note i made about your pull request on node_mailer? i kinda feel like sorting that out first thing today [23:39] JimBastard: if you have a moment [23:39] deepthawtz: yes [23:40] JimBastard: thanks [23:42] deepthawtz: i definitely think that would be a good approach [23:42] softdrink has joined the channel [23:42] deepthawtz: we'd just like to know which email failed so we can resend later [23:42] tj: ryah_: will have that __line thing to you in a minute [23:43] JimBastard: deepthawtz: so ill emit a few events then? something like, connection fail, send success, send fail [23:43] JimBastard: then you can listen for those events (i'll have them pass the email object sent in ) [23:43] deepthawtz: perfect [23:43] JimBastard: can you think of any other events aside from those 3? [23:44] JimBastard: maybe connection established [23:44] deepthawtz: those sound about right [23:44] JimBastard: aight cool, im gonna try it out [23:44] severla: naturalethic: there's actually a difference between how the req body is represented in Ubuntu and in OSX ... please check comment in https://gist.github.com/661878 [23:44] JimBastard: thanks for the input, much appreciated deepthawtz [23:45] jesusabdullah: New website looks nice [23:45] deepthawtz: JimBastard: you are marak? [23:45] siculars has joined the channel [23:45] JimBastard: deepthawtz: aye [23:46] JimBastard: at least thats the name of my underwear [23:46] JimBastard: on my* [23:46] jesusabdullah: "MOOM!" [23:46] jvolkman-work has joined the channel [23:46] sebastiandeutsch has left the channel [23:48] willwhite has joined the channel [23:49] [[zz]] has joined the channel [23:49] melgray has joined the channel [23:50] jvolkman-work has joined the channel [23:52] kschzt: what've we got for centralized directory a la ZooKeeper? so far I've built my own simple thing [23:52] ngw has joined the channel [23:53] killfill: is there a common way to get stats out of socket.io?.. i.e. connected users, ips, etc [23:53] kschzt: as services die and are born/respawn, old disconnected clients need to reconnect and reconfigure [23:53] kschzt: killfill, nopes, you need to track it [23:54] killfill: ok :) [23:55] matthewford has joined the channel [23:55] EyePulp: kschzt: I'm struggling with keeping connections working under socket.io - it seems like anything I add to detect the disconnect & reconnect makes things worse. =\ [23:56] jesusabdullah: kschzt: What does Zookeeper do, exactly? :/ [23:56] kschzt: jesus, what I'd use it for is a centralized tracker of services, what ip's each service is available at [23:57] kschzt: jesus, you can also use it for centralized locking [23:57] technoweenie: redis works well for that crap too [23:57] technoweenie: whats zookeeper use as a backend? [23:59] killfill: sys.inspect seems to print only 3 nested values of objects.. is there a way to make it print more?