[00:03] Draggor has joined the channel [00:03] moos3 has joined the channel [00:03] moos3: evening [00:04] FuzzYspo0N: lo [00:06] populuxe has joined the channel [00:06] moos3: anyone have a good example of how to use node-websocket-server or socket.io ? [00:07] SubStack: moos3: there's a socket.io example at http://github.com/LearnBoost/Socket.IO-node/tree/master/example/ [00:07] SubStack: or you could use dnode, for which there are many examples ^_^ [00:08] moos3: dnode ? [00:08] SubStack: http://github.com/substack/dnode [00:08] jetienne_ has joined the channel [00:08] jacoblyles has joined the channel [00:09] moos3: SubStack, can i send cpu and memory usage with it ? [00:09] SubStack: you can send anything that can be jsonified [00:09] SubStack: and also functions [00:11] SubStack: well, for functions, you can 'send' only in an effective sense because in actuality you're just transparently registering an rpc callback [00:28] gilaniali has joined the channel [00:31] noahcampbell_ has joined the channel [00:33] breccan has joined the channel [00:35] [[zz]] has joined the channel [00:38] jacoblyles_ has joined the channel [00:40] bronson has joined the channel [00:47] ajpiano has joined the channel [00:55] Yuffster has joined the channel [00:56] dnolen_ has joined the channel [00:59] softdrink has joined the channel [00:59] zapnap has joined the channel [01:00] abiraja: anyone using step.js here? [01:02] zemanel has joined the channel [01:03] zemanel: hey yo [01:04] FuzzYspo0N: yo hey [01:04] FuzzYspo0N: abiraja: not me [01:05] abiraja: how do i make a block code of javascript synchronous even if there are async callbacks within that code? [01:05] mikeal has joined the channel [01:05] zemanel: so what did you though about my project? [01:05] zemanel: would like to develop it further but i could use a hand or two [01:05] abiraja: as in i want the rest of the code in my program to only run after that piece of code? [01:06] FuzzYspo0N: zemanel: erh, id need to know which one. i didnt look at names much [01:06] FuzzYspo0N: abiraja: in the docs it mentions nesting the code [01:06] zemanel: tweetirc.com [01:07] mbrochh has joined the channel [01:08] mbrochh: jan____, ich glaube man kann Economy Comfort erst sp�ter dazubuchen... [01:09] FuzzYspo0N: zemanel: cool [01:10] jan____: mbrochh: ne, geht normal auch so [01:10] mbrochh: Ich konnte es bisher nie bei der Hauptbuchung ausw�hlen. [01:10] jan____: mbrochh: ich hab dass das immer aufm hinflug nicht geht [01:10] jan____: fuern rückflug hab ich schon [01:10] mbrochh: Musste immer sp�ter nochmal einloggen und das dann dazubuchen und Kreditkarte angeben [01:10] jan____: mbrochh: ne, is nach der hauptbuchungh [01:10] mbrochh: aso [01:10] jan____: ich fliege in 3 stunden :) [01:11] jan____: ja #sadface [01:11] mbrochh: ouch [01:11] mbrochh: ohne EC kann man so einen Flug doch gar nicht �berleben o_O [01:12] jan____: ja [01:12] mbrochh: mal bei der Platzwahl geschaut, ob die Notausgangspl�tze noch frei sind? [01:12] jan____: mbrochh: icing on the cake: hotline steht 24/7 dran, ruf an, is nur 9-24. [01:12] MikhX has joined the channel [01:12] jan____: ne, ich kann auf dem hinflug *gar nicht* den platz wählen [01:12] jan____: ist schon das fünfte mal so [01:12] saikat has joined the channel [01:12] mbrochh: krass [01:13] ditesh|cassini has joined the channel [01:13] mbrochh: ich hatte mit KLM bisher noch nie Probelme [01:13] mbrochh: vielleicht sind die nach Asien besser drauf als nach USA :) [01:13] jan____: ich mach dann immer anstalten beim check in schalter in berlin damit sie den incident vermerken und mich dann in AMS hochstufen [01:13] mbrochh: hehehe [01:13] jan____: ich hab das system schon durchschaut :D [01:13] jan____: eigentlihc is alles super, ich flieg die gerne, ich wüsste nur gerne bevor ich in AMS ankomme, ob ich nen guten platz habe [01:13] jan____: s/ob/dass/ [01:14] mbrochh: yo [01:14] mbrochh: Dann dann viel Gl�ck. [01:14] jan____: danke :) [01:14] FuzzYspo0N: german? [01:14] mbrochh: si [01:15] mbrochh: sorry. [01:15] isaacs: node is german [01:15] isaacs: it was born in germany [01:15] FuzzYspo0N: wen [01:15] isaacs: and, i mean, .no.de is a .de domain, right? [01:15] FuzzYspo0N: makes sense :) [01:15] FuzzYspo0N: doesnt bother me [01:15] cloudhead has joined the channel [01:15] jan____: node was first born and then made in german :) [01:15] FuzzYspo0N: im from south africa [01:15] jan____: isaacs: yea [01:15] jan____: hehe [01:15] jan____: Das Node. [01:16] Astro: woher kommt no.de? [01:16] jan____: vom node knockout [01:16] FuzzYspo0N: das internetsz [01:16] Astro: und vorher? [01:16] FuzzYspo0N: lol [01:17] jan____: haben Joyent sich besogt [01:17] jan____: Astro: what "woher"? [01:17] jan____: vorher [01:17] jan____: doh :D [01:17] jan____: late [01:18] mbrochh has joined the channel [01:19] bpot has joined the channel [01:19] dgoodlad has joined the channel [01:19] mjr_ has joined the channel [01:21] MikhX has joined the channel [01:21] mbrochh]2 has joined the channel [01:22] mbrochh]2 has joined the channel [01:23] jakehow has joined the channel [01:26] MikhX_ has joined the channel [01:26] danfo has joined the channel [01:30] jamescarr: Das Node! [01:30] danfo: bra [01:30] danfo: ..gut :> [01:30] Astro: Der Knoten [01:32] samsonjs has joined the channel [01:33] mattikus` has joined the channel [01:36] FuzzYspo0N has left the channel [01:40] benburkert has joined the channel [01:41] DTrejo_ has joined the channel [01:42] DTrejo_: rauchg_: I'm glad what I wrote wasn't shitty [01:42] rauchg_: DTrejo_: of course not [01:42] rauchg_: HN is full of holier-than-thou people [01:43] lachlanhardy has joined the channel [01:43] rauchg_: alright guys, see ya! [01:44] visnup has joined the channel [01:45] evanpro has joined the channel [01:47] [[zz]] has joined the channel [01:54] ThePub has joined the channel [01:56] EyePulp has joined the channel [02:01] dipser_ has joined the channel [02:09] grantmichaels has joined the channel [02:13] overra_ has joined the channel [02:16] danielzilla has joined the channel [02:29] matschaffer has joined the channel [02:34] DTrejo_ has joined the channel [02:39] mikew3c has joined the channel [02:43] isaacs has joined the channel [02:46] lachlanhardy has joined the channel [02:52] niemeyer has left the channel [02:53] aussiegeek has joined the channel [02:55] jchris has joined the channel [03:00] noahcampbell has joined the channel [03:01] justin_ has joined the channel [03:01] saikat has joined the channel [03:01] c4milo has joined the channel [03:02] matt_c has joined the channel [03:04] jchris has joined the channel [03:05] robotarmy has joined the channel [03:06] justin__ has joined the channel [03:07] minaguib has joined the channel [03:08] mattikus` has joined the channel [03:12] jimmybaker has joined the channel [03:15] visnup: mape: aw bladderblock isn't responding [03:18] mattikus` has joined the channel [03:19] mattikus has joined the channel [03:22] Zuardi has joined the channel [03:27] muk_mb: mongoDB or redis, which is easier to use? [03:29] bradleymeck has joined the channel [03:30] noahcampbell has joined the channel [03:30] bradleymeck: 4 score and 7 seconds ago our fathers brought forth a new login [03:30] saikat has joined the channel [03:31] inimino: ...3 score and 3 seconds [03:32] bradleymeck: thats from when i joined the channel [03:33] inimino: Aha. [03:33] inimino: So the login predates the channel entry; I sit corrected. [03:34] brianmario has joined the channel [03:38] jacoblyles has joined the channel [03:39] new_node has joined the channel [03:41] jakehow has joined the channel [03:41] MikhX has joined the channel [03:42] visnup: muk_mb: I've only used mongo so far [03:42] muk_mb: I've played with redis for things like Resque on rails sites [03:43] muk_mb: I just started looking at Node a few days ago, deciding what storage solution I'll use to try things [03:44] MikhX_ has joined the channel [03:45] trentm has joined the channel [03:46] pydroid: muk_mb: i like couchdb :) [03:52] new_node: hey all [03:54] new_node: during a http request/response cycle, what happens to the connection if nothing is written to it? [03:54] new_node: is it kept open of http protocol vesion is >= 1? [04:01] podman has joined the channel [04:01] aaronblohowiak: new_node: it just hangs and hangs [04:02] podman: evening [04:02] podman: anyone know how to get node-geoip working with node 0.2.0? [04:02] aaronblohowiak: new_node: the http connection is a bit different from the single request.... [04:02] aaronblohowiak: new_node: in this way, node abstracts keepalive from you [04:03] evanpro has joined the channel [04:03] new_node: aaronblohowiak: thank you [04:04] zemanel has joined the channel [04:04] visnup has joined the channel [04:06] mikeal has joined the channel [04:09] derferman has joined the channel [04:10] new_node: aaronblohowiak: so if a user leaves a page/chat room how would I know? [04:11] aaronblohowiak: new_node: are you using long-polling or a websockets library? [04:11] aaronblohowiak: new_node: either way, you will have a timeout of one sort or another [04:11] new_node: aaronblohowiak: long-pollint [04:11] new_node: aaronblohowiak: long-polling [04:11] aaronblohowiak: new_node: well, you can try and have a browser send an onclose, but they are unreliable. timeout is the only real way [04:12] aaronblohowiak: "how do i efficiently implement a timeout" ? [04:12] new_node: aaronblohowiak: haha, yes [04:14] kriskowal has joined the channel [04:15] new_node: aaronblohowiak: is there an example project that I could look at? I like reading code. [04:15] aaronblohowiak: well, there are a two ways. the important thing is that you shouldnt worry about that until you really have scaling problems. the simple way is to have a setTimeout(destructor, timeout) that you clearTimeout and re-create on client communication or destroy on client end()-event. [04:16] aaronblohowiak: new_node: ry does it the other way (have a collection that you garbage-collect at an interval) here: http://github.com/ry/node_chat/blob/master/server.js [04:16] new_node: aaronblohowiak: thanks a lot. you have been a great help [04:17] mikew3c has joined the channel [04:18] dohtem has joined the channel [04:18] aaronblohowiak: new_node: i have created a collection class that will take care of some of this for you: http://github.com/aaronblohowiak/JavaScript-datastructures/blob/master/expiring-collection.js [04:19] keyvan has joined the channel [04:21] mikew3c has joined the channel [04:23] Dmitry1 has joined the channel [04:28] confoocious has joined the channel [04:32] podman has joined the channel [04:36] mape: visnup: Fixed [04:37] jxh has joined the channel [04:40] saikat has joined the channel [04:44] fennec has joined the channel [04:44] jakehow has joined the channel [04:46] pydroid has joined the channel [04:50] MikhX has joined the channel [05:00] phoenixevolution has joined the channel [05:03] megana has joined the channel [05:05] nsm has joined the channel [05:06] nsm: a question regarding the joyent instance allocated during nodeKO, does that expire or something? [05:06] Tim_Smart has joined the channel [05:08] megana: ugh, ejs [05:09] p6 has joined the channel [05:09] megana: when I use layouts for some reason the html gets rendered as plain text [05:10] mape: megana: use - instead of = [05:10] megana: what does - do? [05:11] megana: it works, but... why??? [05:11] mape: it doesn't escape html [05:11] megana: oh [05:13] edw` has joined the channel [05:17] Egbert9e9 has joined the channel [05:26] amerine has joined the channel [05:30] mikeal has joined the channel [05:32] Egbert9e9 has joined the channel [05:41] dhampton_ has joined the channel [05:42] dhampton_: This is a remarkable demo. Good job [05:42] dhampton_: mape: Thanks for the hard work. [05:43] mape: dhampton_: Huh? [05:43] dhampton_: im just showing my wife your demo [05:43] dhampton_: you don't know me. [05:43] mape: Ah, neat :) [05:43] dhampton_: I just signed on the chanel [05:43] mape: Glad you like it :D [05:44] pdelgallego has joined the channel [05:45] podman: oh, hah. i forgot about that demo, mape [05:45] podman: works really well. [05:46] mape: As long as it isn't crashing ;) [05:46] dhampton_: So, besides the API docs on the nodejs site, and reviewing code on github, any thoughts on a good crash course for this? [05:47] dhampton_: nodejs, that is [05:47] podman: dhampton_: i just started building stuff [05:47] podman: dhampton_: though you might want to check out the peepcode screencast? [05:47] podman: http://peepcode.com/products/nodejs-i [05:47] dhampton_: podman: that's usually what I do... Is that the one at yahoo? [05:48] podman: nope. [05:48] dhampton_: oh cool [05:48] dhampton_: thanks [05:48] podman: i haven't watched it yet myself [05:48] podman: but their stuff is usually very good. [05:48] dhampton_: wow. I haven't paid for anything in years.... [05:49] dhampton_: Im not sure I know how... [05:49] podman: lol [05:53] tpryme has joined the channel [05:55] keyvan has joined the channel [05:56] jchris has joined the channel [05:59] jetienne has joined the channel [06:01] stepheneb has joined the channel [06:02] podman: faye vs socket.io … go! [06:03] SubStack: ACTION scoffs at flat message passing [06:05] Tim_Smart: OMG its yellow. [06:06] SubStack: in my local dnode copy you can pass circular refs around ^_^ [06:07] abiraja has joined the channel [06:09] sh1m has joined the channel [06:10] ly- has joined the channel [06:10] ly- has joined the channel [06:10] jbenesch has joined the channel [06:19] siculars has joined the channel [06:19] chapel has joined the channel [06:24] lachlanhardy has joined the channel [06:29] rne1223 has joined the channel [06:30] rne1223: hi...somebody out there? [06:30] JimBastard has joined the channel [06:31] LFabien has joined the channel [06:31] rne1223: Just starting to back engineering the node_chat example [06:32] rne1223: and I'm having a little question on the fu.js file [06:32] rne1223: what does "var fu=exports;" means? [06:32] overra_ has joined the channel [06:33] rne1223: any help would be greatly appreciate it. [06:33] TS_ has joined the channel [06:34] jetienne: rne1223: you know exports in itself ? [06:34] jetienne: like exports.superfunc = myfunc [06:34] unomi has joined the channel [06:34] rne1223: no...no really...does it mean that it is going to be use in another file? [06:35] AAA_awright has joined the channel [06:35] rne1223: where can I read about this, because there is no much on the nodejs.org website [06:36] rne1223: jetienne: is it a javascript or node syntax? [06:36] jetienne: rne1223: this is commonjs stuff. [06:37] jetienne: rne1223: commonjs module. i just looked for a online tutorial and didnt find one [06:37] jetienne: rne1223: i dont have time to actually explain it. go look for it [06:37] jetienne: http://nodejs.org/api.html#modules-313\ [06:38] rne1223: jetienne: ok sounds good...I will look into it as well, thanks for pointing me in the right direction [06:38] jhoweb has joined the channel [06:38] jetienne: this is the doc for export [06:40] tpryme: rne1223: here's how exports works [06:40] rne1223: jetienne: I was in the same page...just didn't read all the way down [06:41] tpryme: rne1223: when you see: var methodNameFromModule = require("./myModule"); [06:41] tpryme: rne1223: when you see: var methodNameFromModule = require("./myModule").hello; [06:41] freeall has joined the channel [06:41] rne1223: tylergillies: this is loading a module right, but is in the same directory [06:41] tpryme: rne1223: Then you should have a file: "./myModule.js" [06:42] tylergillies: rne1223: eh? [06:42] tpryme: rne1223: that inside defines a funciton called hello [06:42] tylergillies: oh mistell i think [06:42] tpryme: rne1223: And the way to expose that function to the requiring file [06:43] tpryme: rne1223: is to use: exports.hello = function () {...} [06:43] rne1223: tpryme: oh ok...sounds good [06:43] tpryme: rne1223: So exports is how you expose methods to other files [06:43] tpryme: rne1223: From within a file (where the file represents a module) [06:43] tpryme: rne1223: All of that is based on the commonjs proposal [06:45] rne1223: tpryme: awesome thanks for the help [06:45] rne1223: by they way...just something that has been bothering me [06:45] rne1223: the C part of the node library is actually written in C++ right? [06:46] tpryme: rne1223: Yeah, it's c++ [06:47] rne1223: tpryme: alright...thanks once again. [06:54] chrstphrwrght has joined the channel [06:54] jackish has joined the channel [06:54] JimBastard: sweeet, i finally got kyuri talking to prenup back and forth [06:54] JimBastard: kinda [06:54] JimBastard: !! [06:54] JimBastard: i need to read up on cuke [06:55] JimBastard: is anyone here a cuke expert? i could use help getting a script together for creating an http server [06:55] JimBastard: and having it respond to requests [06:55] JimBastard: with hello world [06:55] aaronblohowiak has joined the channel [06:55] JimBastard: kinda started it here http://prenup.nodejitsu.com/ [06:55] JimBastard: but the cuke script is not right [06:55] tpryme: JimBastard: Does kyuri plug into selenium? [06:56] JimBastard: tpryme: so , kyuri is just a node.js gherkin parser [06:56] JimBastard: we are talking with the cuke project now, we will likely be merging into it for kyuri [06:56] JimBastard: so its will be the node.js cucumber [06:56] JimBastard: to answer your question, no it doesnt [06:56] tpryme: JimBastard: Cool, I like cucumber a lot [06:56] JimBastard: we'll be adding all the nice stuff cuke does [06:56] mape: visnup: btw were there issues on shipping? [06:57] JimBastard: tpryme: can you help me write a cuke script? [06:57] visnup: mape: nah, we'll figure it out [06:57] tpryme: JimBastard: sure, what do you need help with? [06:57] mape: visnup: neat :) [06:57] visnup: mape: we'll coordinate shipping with the sponsors [06:57] visnup: I should probably tweet about that [06:59] JimBastard: tpryme: http://github.com/nodejitsu/prenup/blob/master/client/js/app.js#L632 , you know what im kinda doing this wrong. im knee deep in the frontend app. i should prob start off with actual cuke scripts instead of json here [06:59] JimBastard: but basically, i just need a cuke script for creating an http.server instance and have it respond to requests [07:00] JimBastard: im gonna add a toggle feature to prenup to go between UI and text [07:01] aaronblohowiak: JimBastard: you guys are funded? [07:01] tpryme: JimBastard: Taking a look [07:01] JimBastard: aaronblohowiak: lol kinda [07:01] JimBastard: i got some funds [07:01] JimBastard: ask me again in 3 months [07:01] aaronblohowiak: JimBastard: haha, coo [07:02] JimBastard: when all your founders have been working at least two full time jobs for years you can bootstrap a little [07:02] aaronblohowiak: JimBastard: i am thinking of letting people export their toylanguage projects as a git repo + pre-compiled node and redis [07:02] JimBastard: but only soo much [07:02] aaronblohowiak: JimBastard: two full time jobs? rough [07:02] JimBastard: ahahaha [07:02] JimBastard: yeah, we can deploy self contained packages [07:02] aaronblohowiak: JimBastard: burn-out is a dark, vicous beast [07:02] aaronblohowiak: vicious [07:02] JimBastard: aaronblohowiak: sell-out before burn out i hope [07:03] JimBastard: i burned out years ago anyway [07:03] _TS has joined the channel [07:03] aaronblohowiak: JimBastard: totally [07:03] aaronblohowiak: JimBastard: yea, how long did it take to revocer? [07:03] aaronblohowiak: i mean, recover =) [07:04] JimBastard: i choose to push forward [07:04] JimBastard: dove deeper [07:04] claudiu__ has joined the channel [07:06] aaronblohowiak: JimBastard: the way out is through [07:06] JimBastard: ahaha [07:06] aaronblohowiak: JimBastard: that is not a path many people can take. [07:06] qFox has joined the channel [07:07] aaronblohowiak: ARRRGH i want to smack people who use uneval [07:07] jesusabdullah: uneval? [07:07] JimBastard: !tweet fuck you uneval [07:07] SubStack: o_O [07:07] JimBastard: there you go [07:07] SamuraiJack has joined the channel [07:07] aaronblohowiak: jesusabdullah: JSON.stringify native to old versions of the fox [07:07] aaronblohowiak: jesusabdullah: only it is single quotes not double quotes [07:08] jetienne: :) [07:10] _TS: 'j redis [07:11] tk has joined the channel [07:13] ph^ has joined the channel [07:14] kriskowal has joined the channel [07:15] jesusabdullah: hah [07:15] jesusabdullah: Ah, stringification [07:15] aaronblohowiak: is typeof(foo) == "undefined" evil? [07:16] jesusabdullah: in quotes? [07:16] jesusabdullah: wat [07:16] jesusabdullah: Also: Hoping for coercion? [07:17] jesusabdullah: i guess maybe, in that what it would do isn't immediately obvious to me [07:17] aaronblohowiak: jesusabdullah: hmmm. i suppose i don't know if a variable is defined in a certain context (in a template) [07:17] aaronblohowiak: grrrrr [07:17] aaronblohowiak: there should be a better work-around [07:18] stephank has joined the channel [07:18] SubStack: how it that an issue? [07:18] SubStack: var foo = undefined; [07:19] SubStack: perhaps you want ===? [07:19] SubStack: foo === undefined // true [07:19] SubStack: foo === null // false [07:19] rne1223: SubStack: why three = ...what does === means? [07:19] rne1223: oh...sorry [07:19] rne1223: nevermind [07:20] SubStack: because foo == null is true ;) [07:20] SubStack: truth tables are hard [07:20] aaronblohowiak: jesusabdullah: doesn't typeof always return a string? [07:20] rne1223: =) [07:20] aaronblohowiak: SubStack: that will throw an error if foo is undefined [07:20] tpryme: JimBastard: So to do the script, don't you need a way to define step defs in kyuri? [07:21] SubStack: aaronblohowiak: do you mean 'uninitialized'? [07:21] aaronblohowiak: SubStack: i mean if the variable has not been declared [07:22] aaronblohowiak: eval("somethingNotSeenBefore === undefined") will throw [07:22] SubStack: then wrap it in a try {} catch (e) {} [07:22] aaronblohowiak: wheras eval("typeof(someOtherUniqueIdentifier) === \"undefined\"") will not throw [07:22] aaronblohowiak: *whereas [07:23] SubStack: why do you need undeclared vars anyhow? [07:23] SubStack: those are bad news™ [07:23] aaronblohowiak: SubStack: template rendering [07:25] JimBastard: tpryme: thats the next piece indexzero is on, kyuri commits have been daily [07:25] JimBastard: im trying to build the front-end without all the pieces [07:25] JimBastard: you know [07:26] Utkarsh has joined the channel [07:26] tpryme: JimBastard: Cuz I was putting together a simple version of that in gist. To do the script you need the step defs to map the phrases to creation of the httpServer [07:26] jesusabdullah: aaronblohowiak: I guess so. >_< Shush, I'm tired and it's late [07:26] aaronblohowiak: jesusabdullah: yea, i think we all are =/ [07:27] jesusabdullah: XD [07:27] aaronblohowiak: gawd, i wish i magically had graphic design skillz [07:27] jesusabdullah: Awesome. [07:27] jesusabdullah: Hah! [07:27] JimBastard: tpryme: the more you can spec out, the better. we are pulling all the pieces together now [07:27] jesusabdullah: I hear you [07:28] aaronblohowiak: jesusabdullah: at least shitty code can still perform tasks as specified. shitty design just makes the eyes bleed [07:28] jesusabdullah: Ah, well [07:28] jesusabdullah: Just stick to common sense and you can be okay [07:28] peutetre has joined the channel [07:28] aaronblohowiak: jesusabdullah: extra gradients and border-raidus:5 ? [07:28] aaronblohowiak: ;) [07:29] jesusabdullah: XD [07:29] jesusabdullah: I was gonna say "no scalding colors/patterns" but... [07:29] aaronblohowiak: i wish there was something like this: http://ukijs.org/ that played nice with vanilla dom elements [07:30] JimBastard: >.< [07:30] jesusabdullah: What do you mean? It doesn't? [07:30] aaronblohowiak: jesusabdullah: i can't figure out how to just get my shit in one of the containers >.< [07:30] jesusabdullah: >.< [07:30] aaronblohowiak: JimBastard: what? css sucks ass. [07:31] jesusabdullah: I think css is alright--I just wish it behaved more consistently/obviously across browsers, y'know? At least, that's how I remember my old days of web page making [07:31] jesusabdullah: I try to avoid it now [07:31] jesusabdullah: and by that, I mean, I hardly spend time on actual web site appearance [07:31] SubStack: css works far more reliably than I remember it working accross browsers [07:31] jesusabdullah: It's bad [07:32] SubStack: of course, I grew up in the netscape / IE days [07:32] aaronblohowiak: jesusabdullah: i like box and spring model like every other gui framework ever =( [07:32] jesusabdullah: box and spring? [07:32] SubStack: back when netscape 4.7 had and IE 4 had
[07:32] jesusabdullah: [m]^^^|= k ? [07:33] SubStack: was messing with that shit in middle school [07:33] jesusabdullah: It was better when I got to it (high school, early college) but you'd still have a lot of trial-and-error with stuff [07:33] aaronblohowiak: SubStack: you ever have to write a coldfusion app that supported 4.7 and ie 5? FML [07:34] jesusabdullah: coldfusion? :S [07:34] SubStack: nope, never touched coldfusion [07:35] aaronblohowiak: jesusabdullah: like interface builder.. where you have anchors and then springs that determine flow and positioning [07:35] aaronblohowiak: SubStack: lucky =) [07:35] aaronblohowiak: jesusabdullah: yea, it was the worst thing ever [07:35] Utkarsh: I'm currently redirecting requests from nginx to node.js Am I correct that I'll have to start each node.js site as a separate node process on different port? [07:36] aaronblohowiak: Utkarsh: you are actually proxying them, not redirecting them, right? [07:36] jesusabdullah: I think the Macromedia Studio MX set I had came with CF--not that I knew what that was [07:36] aaronblohowiak: jesusabdullah: you dodged a bullet [07:36] jesusabdullah: Hah! [07:36] aaronblohowiak: jesusabdullah: php3 was superrior. by far [07:36] jesusabdullah: o_o [07:37] jesusabdullah: I did like one project in php, and it was very basic [07:37] Utkarsh: aaronblohowiak: yes, proxying.. [07:37] SubStack: good thing I already knew javascript and perl before learning php [07:37] googol has joined the channel [07:37] SubStack: or else I might have liked it [07:37] jesusabdullah: Yeah, I saw enough from php to know that it wasn't my bag [07:37] aaronblohowiak: Utkarsh: then yes, you are correct. if you control the code of all the applications then you can get around this by having a little routing code that then passes the connection off to loaded modules, but if you dont want to design your system that way you will need a dedicated process per [07:38] aaronblohowiak: SubStack: hahaha totally. [07:38] jesusabdullah: Like, you can throw simple stuff together pretty quick, but I couldn't imagine doing anything serious with it :S [07:38] jesusabdullah: At least, not with inline php [07:38] jesusabdullah: Wouldn't *want* to do anything with frameworked php [07:38] jesusabdullah: whatever that would entail [07:39] aaronblohowiak: jesusabdullah: srsly [07:39] jesusabdullah: http://rannmann.com/ehm/ehm.php is it [07:39] aaronblohowiak: jesusabdullah: like using javascript for anything more than ajax [07:39] jesusabdullah: Hah XD [07:39] jesusabdullah: Except that *is* kinda fun, excepting for the lack of libs for a lotta stuff [07:40] jesusabdullah: I do a lot with numerical stuff [07:40] jesusabdullah: nothing TOO hard-core, but [07:40] jesusabdullah: y'know, think matlab [07:40] Utkarsh: aaronblohowiak: ah okay. Seems a bit inefficient as each node process is using 40mb for a 'hello world'.\ [07:40] aaronblohowiak: jesusabdullah: not R? [07:40] aaronblohowiak: Utkarsh: it really, really shouldnt be. [07:40] jesusabdullah: Naw, my background's engineering, not stats [07:40] aaronblohowiak: jesusabdullah: ooooh, sweet [07:40] jesusabdullah: Utkarsh: That's fucked up. o_o [07:40] langworthy has joined the channel [07:41] SubStack: I did some R for a stats class. It was super functional-looking. [07:41] SubStack: it looked nothing like the teacher's code nor the examples [07:42] jesusabdullah: aaronblohowiak: Might learn R someday, but probably not. I use numpy these days for matlab-ish stuff when I can, and there are starting to be stats tools for the python world [07:42] aaronblohowiak: Utkarsh: that seems too large [07:42] aaronblohowiak: jesusabdullah: ever look into Sage? [07:42] jesusabdullah: Yeah [07:42] aaronblohowiak: that is more symbolic though, isnt it [07:42] Utkarsh: aaronblohowiak: root 17878 0.3 1.4 44524 7340 pts/2 S+ 07:39 0:00 node example.js [07:42] Nohryb has joined the channel [07:42] jesusabdullah: I don't really like the idea of the gigantic distribution. I wish it was more of just a front-end for normal python modules [07:43] aaronblohowiak: Utkarsh: src? version? [07:43] aaronblohowiak: jesusabdullah: yea =/ [07:43] tpryme: JimBastard: Incomplete, but something like this? http://gist.github.com/564996 [07:43] jesusabdullah: aaronblohowiak: sage has a python front-end to maxima with it--maybe that's what you're thinking. [07:43] jesusabdullah: Have you used maxima? It's terrible. Like, good at what it does, but the ui is kinda painful. [07:43] JimBastard: tpryme: reading [07:43] jesusabdullah: It's probably even painful for lisp fans (since it is lisp) [07:43] aaronblohowiak: jesusabdullah: that is so sad. [07:44] SubStack: jesusabdullah: write a maxima interface for node [07:44] Utkarsh: aaronblohowiak: http://pastebin.com/KGJatSh3 [07:44] SubStack: then you can throw up a website for it [07:44] JimBastard: tpryme: YEAH! EXACTLY [07:44] jesusabdullah: SubStack: Wouldn't THAT be interesting? [07:44] JimBastard: :-D [07:44] SubStack: and I can use it whenever I need to integrate some shit [07:44] JimBastard: thats a great reference, i'll pass that to indexzero tomorrow [07:44] aaronblohowiak: Utkarsh: node version? [07:44] Utkarsh: 0.2.0 [07:44] jesusabdullah: Doesn't js actually have quite a bit in common with lisp? [07:44] SubStack: jesusabdullah: also you can have a checkbox to make it show its work [07:44] tpryme: JimBastard: Yeah, the weird part is figuring out the best way to pass down the topic [07:44] jesusabdullah: Hah [07:45] jesusabdullah: SubStack: Quit giving me more project ideas. >.< [07:45] JimBastard: tpryme: i think for prenup, we will ship a bunch of template projects that have scripts like this to get people started with node [07:45] tpryme: JimBastard: Since you don't know the preceding clauses (Givens, or Whens) beforehand [07:45] Utkarsh: aaronblohowiak: compiled from github master. should be the latest? [07:45] JimBastard: we could build lessons as cuke [07:45] tpryme: JimBastard: That's cool [07:45] JimBastard: tpryme: its gonna take a bit more thinking for sure, but we are going in the right direction [07:45] aaronblohowiak: Utkarsh: is that virtual memory or real memory? [07:46] Utkarsh: 43M is virtual.. hmm [07:46] adambeynon has joined the channel [07:46] aaronblohowiak: Utkarsh: oh, well who cares then =) [07:46] aaronblohowiak: Utkarsh: 10mb per application is fine [07:47] aaronblohowiak: Utkarsh: if you control the code, doing the module thing would be very easy, but it is a collaboratively multitasking system so i'd be a little cautious [07:50] jesusabdullah: I just realized--I could rewrite the entire EHM app as client-side js [07:50] Utkarsh: aaronblohowiak: I'm used to using php-fpm or passenger with ruby.. they don't care how many apps I have, just spawn a process when something is being used. I thought there must be something similar for node.js [07:50] jesusabdullah: now [07:50] jesusabdullah: That'd be pretty awesome actually. [07:50] jesusabdullah: *chinrub* [07:50] aaronblohowiak: Utkarsh: you could trivially build that. [07:51] aaronblohowiak: for some varying degree of trivial. i think that is the kind of stuff JimBastard works on [07:51] SubStack: port routing based on http host? [07:51] JimBastard: what did i work on [07:51] SubStack: yeah, would be easy to whip one of those up all quick-like [07:52] JimBastard: javascripts [07:53] SubStack: anything on github/npm that does this? [07:53] SubStack: otherwise imma write this [07:54] jesusabdullah: SubStack: you have too much stuff to write anyway. XD [07:54] jesusabdullah: That should be relatively easy, though. Node makes things easy! [07:54] jesusabdullah: Well, certain things anyway [07:56] aaronblohowiak: SubStack: not just port routing, but starting up a server if it isn't already booted and then sending it the http request [07:56] aaronblohowiak: =) [07:56] aaronblohowiak: SubStack: so idle ones can be culled [07:56] SubStack: right [07:56] aaronblohowiak: SubStack: *shrug* with Xen so awesome, why not give everyone virtual dedicated servers [07:57] SubStack: because xen isn't awesome [07:57] aaronblohowiak: SubStack: elaborate [07:57] JimBastard: http://github.com/nodejitsu/node-http-proxy [07:57] JimBastard: once you have that running [07:57] JimBastard: you can perform arbitrary I/O on request/response [07:58] tpryme: JimBastard: I made one last edit, so you might want to toss your fork and fork the newest gist [07:58] JimBastard: from there, routing HTTP to different servers/ports becomes trivial [07:58] SubStack: well for one it says "deliverables" and "solutions" on its web page [07:58] JimBastard: tpryme: done, thanks [07:58] JimBastard: Utkarsh: ^^ [07:58] SubStack: I am actually really ignorant about what xen is and does for starting up a vm company [07:58] JimBastard: we plan on giving people ssh access to servers, it might be a hack though [07:59] SubStack: doesn't have the instant gratification factor that qemu disk.img does [07:59] JimBastard: running ssh commands in one terminal could reflect many changes to an App cloud [07:59] jesusabdullah: Speaking of node-http-proxy: I finally saw the Double Rainbow youtube vid [07:59] JimBastard: jesusabdullah: youtube?!?!?!?! [07:59] JimBastard: ohh that one [07:59] JimBastard: lol [07:59] JimBastard: ya [07:59] jesusabdullah: "What does this mean? ;__;" [07:59] JimBastard: a [08:00] JimBastard: is this node.js ?!?! [08:00] JimBastard: making double rainbow work in terminal is a fucking miracle [08:00] JimBastard: thats all i have to say about that [08:00] jesusabdullah: also saw the "zhe double-rainbow in zhe node.js" [08:00] JimBastard: did you try running the gist? [08:00] jesusabdullah: I don't think I saw the gist [08:00] JimBastard: its on the page [08:00] JimBastard: one sec [08:01] JimBastard: http://maraksquires.com/doublerainbow/ [08:01] JimBastard: http://gist.github.com/507543 [08:01] JimBastard: there it is [08:01] SubStack: fuck xen http://www.xen.org/products/xenhyp.html [08:01] aaronblohowiak: SubStack: qemu is userland, xen isn't. xen is much faster [08:01] SubStack: I still don't know what this is [08:01] SubStack: aaronblohowiak: kvm, kqemu [08:01] JimBastard: i update, http://gist.github.com/507543 [08:02] JimBastard: if you can pull off a double rainbow in terminal, wow [08:02] JimBastard: its hard [08:02] JimBastard: almost as hard as making http://github.com/marak/JSONloops keep a beat [08:02] JimBastard: it doesnt on my laptop [08:02] JimBastard: was a pita to build without hearing it work [08:03] JimBastard: it works on like every other machine though [08:03] aaronblohowiak: SubStack: do you know about type1 vs type 2 virtualization? [08:03] jackish has joined the channel [08:04] SubStack: aaronblohowiak: those are ambiguously bad terms just like type 1 and type 2 errors are ambiguously bad [08:05] SubStack: I assume you mean some sort of difference between running VMs with a native instruction set versus emulated [08:05] aaronblohowiak: SubStack: sure. it has to do with how bare-metal you get. [08:06] aaronblohowiak: SubStack: well, there are different ways to running native instructions, too [08:06] jetienne has joined the channel [08:08] aaronblohowiak: SubStack: ultimately, xen does what your normal linux install does when you run KVM, plus what kvm does.. this is a lighter approach and potentially much faster *under load* [08:09] SubStack: if it's awesome they should delete their web page and replace it with something much more to the fucking point [08:10] lachlanhardy has joined the channel [08:10] aaronblohowiak: SubStack: well, look at redhat's kvm stuff [08:10] aaronblohowiak: *eyes bleed* [08:10] JimBastard: the JSON it BURNS [08:10] aaronblohowiak: actually, redhat isn't bad [08:10] aaronblohowiak: lol [08:10] aaronblohowiak: JimBastard: good point, more javascript, less virtualization =) [08:11] SubStack: yeah there's so much bullshit with regards to virtualization right now [08:11] aaronblohowiak: SubStack: wait, are you the guys that are doing virtualization as a service? [08:11] JimBastard: thank god node is soo powerful, most of our hosted apps only require one "drone" [08:12] SubStack: aaronblohowiak: yes [08:12] aaronblohowiak: SubStack: oooo. i'm not worthy! :-) [08:12] SubStack: heh, I'm actually super ignorant about all this stuff [08:12] SubStack: which I think is a good thing [08:12] aaronblohowiak: SubStack: the whole "i did it because i didn't know it was hard" thing [08:14] SubStack: could be [08:14] aaronblohowiak: SubStack: When asked, "How could you possibly have done the first interactive graphics program, the first non-procedural programming language, the first object oriented software system, all in one year?" Ivan replied: "Well, I didn't know it was hard." [08:15] jesusabdullah: Who's Ivan? [08:15] ivan: Sutherland [08:15] ivan: (not me) [08:15] jesusabdullah: Liar [08:15] SubStack: smalltalk guy? [08:15] ivan: you caught me [08:15] aaronblohowiak: liar [08:15] jesusabdullah: ivan, you're amazing! [08:15] jesusabdullah: \0? [08:15] jesusabdullah: er [08:15] aaronblohowiak: jesusabdullah: http://www.youtube.com/watch?v=mOZqRJzE8xg [08:15] jesusabdullah: \o/ [08:16] aaronblohowiak: interactive graphics from 1962 [08:16] okuryu has joined the channel [08:18] visnup has joined the channel [08:18] jesusabdullah: That's pretty awesome [08:18] ivan: that's pretty amazing for 1962, given that the Apple II didn't come out until 1977 [08:18] aaronblohowiak: ivan: shit, i want to use that today [08:19] jesusabdullah: Yeah [08:19] jesusabdullah: Looks better than the multitouch I made for senior design [08:19] ivan: http://en.wikipedia.org/wiki/Jacquard_loom :-) [08:21] jesusabdullah: SubStack: Should I try to make a x++ module for lulzbot? (y/n) [08:22] SubStack: y [08:22] jesusabdullah: HMM [08:23] jesusabdullah: I think I should try to figure out all lulzbot's other problems first [08:23] jesusabdullah: Like, what the broken pipe thing is about [08:24] jesusabdullah: and why I can't do http requests like I want to [08:24] jesusabdullah: or rather, how I'm doing it wrong [08:24] jesusabdullah: and then get twitterwatch working [08:28] jackish has joined the channel [08:36] adambeynon has joined the channel [08:38] tpryme: Anyone know of a comprehensive summary for getter and setter declaration syntax across different browsers? [08:38] tpryme has left the channel [08:38] tpryme has joined the channel [08:39] aaronblohowiak: tpryme: resist the temptation [08:40] aaronblohowiak: tpryme: use the arguments.length === 0 for getter paradigm instead =) [08:40] tpryme: aaronblohowiak: What do you mean? [08:41] aaronblohowiak: tpryme: pants.evolution() /* return current value */ pants.evolution("hello!") /* assign hello to evolution */ [08:41] tpryme: aaronblohowiak: Oh, gotcha [08:41] aaronblohowiak: tpryme: if you must make your javascript more confusing by having getters and setters, you can learn about this here: http://robertnyman.com/2009/05/28/getters-and-setters-with-javascript-code-samples-and-demos/ [08:42] tpryme: aaronblohowiak: I want to use getters/setters on the front-end for bindings [08:42] aaronblohowiak: tpryme: =( no ie [08:42] tpryme: aaronblohowiak: without having to change the syntax to function calls every time [08:42] tpryme: aaronblohowiak: And a work-around for ie [08:43] aaronblohowiak: tpryme: everything should be function calls! =) [08:43] tpryme: aaronblohowiak: is to setInterval and do a sweep of any new sets [08:43] aaronblohowiak: tpryme: so you want bugs that happen and are reproduceable for only 10ms (or whatever) windows? [08:43] tpryme: aaronblohowiak: But if it's all function calls and I want to share as much server and client code as possible, I'd have to re-write all the server code [08:44] tpryme: aaronblohowiak: I think it might work [08:44] tpryme: aaronblohowiak: I'll have to benchmark it in ie [08:44] aaronblohowiak: tpryme: how much server code is there? also, you could have getters and setters that call your function calls on the server side =). it isnt the benchmark, it is the race conditions that scare me [08:45] JimBastard: http://js1k.com/demo/133 [08:45] JimBastard: fucking 1k [08:45] JimBastard: lander [08:45] JimBastard: or http://js1k.com/demo/110, with the insane mouse inputs [08:45] JimBastard: for spin and click [08:46] admc has joined the channel [08:46] tpryme: aaronblohowiak: True, you'd have to bake in optimistic locking I suppose :P [08:47] aaronblohowiak: tpryme: which is actually impossible in js [08:47] tpryme: aaronblohowiak: but if you're trying to sync data on several clients and the server, you'll have to deal with race conditions [08:47] JimBastard: whys it always gotta be about race [08:47] aaronblohowiak: JimBastard: whattup prez? [08:47] tpryme: aaronblohowiak: Why is it impossible? Can't you build it on top of js? [08:48] aaronblohowiak: tpryme: not for the getter/setter stuff [08:48] SubStack: synchronizing server and client data eh? [08:48] SubStack: ACTION is hacking on that problem right now [08:48] tpryme: aaronblohowiak: Sure, wouldn't you just setup the right conditional checks in the setter? [08:48] aaronblohowiak: tpryme: there are no setters in ie, remember =) [08:49] aaronblohowiak: SubStack: are you going to do OT? Difference Synchronization? [08:49] aaronblohowiak: SubStack: i am going to go with vcs-like model [08:49] SubStack: I was thinking one-way channels first [08:49] SubStack: since they're easiest [08:49] tpryme: aaronblohowiak: hmm, let me think about that. [08:50] SubStack: this is part of my websocket web framework [08:50] AAA_awright: What's the preferred library for connecting to MySQL? [08:50] tpryme: SubStack: Lol, I'm working on a websocket web framework [08:50] aaronblohowiak: tpryme: what if one of your client-side modifications is rejected by the server? [08:51] tpryme: aaronblohowiak: I'm planning on using differential synchronization [08:51] SubStack: I like transactions [08:51] aaronblohowiak: tpryme: have you seen the google talk videos about that? [08:51] aaronblohowiak: SubStack: distributed STM ? [08:51] tpryme: aaronblohowiak: No, just read the paper and read the python impl [08:52] adambeynon has joined the channel [08:52] SubStack: aaronblohowiak: it's nice in haskell anyways [08:52] aaronblohowiak: tpryme: ah, the video is neat, but offers nothing substantial over the paper [08:52] fyskij has joined the channel [08:52] tpryme: SubStack: Did you open source your framework yet? [08:53] aaronblohowiak: tpryme: i don't like having to maintain a client-specific shadow and requiring synchronization to happen in passes =( [08:53] SubStack: tpryme: it's not written yet, I'm still getting dnode up into shape [08:53] tpryme: aaronblohowiak: what would you use? [08:53] tpryme: SubStack: Ah I see, so built on top of dnode? [08:53] SubStack: yep [08:53] aaronblohowiak: SubStack: you're the CPS in JS guy? [08:53] SubStack: cps? [08:54] aaronblohowiak: SubStack: continuation passing style [08:54] SubStack: oh continuation passing style [08:54] SubStack: right [08:54] aaronblohowiak: tpryme: depends on the problem =) [08:54] SubStack: I didn't know there was such a guy [08:54] SubStack: but were there such a guy, I would be a likely candidate [08:54] aaronblohowiak: SubStack: oh no, you're becomming self-aware! [08:54] aaronblohowiak: s/substack/skynet [08:54] jesusabdullah: continuation passing style? [08:54] tpryme: aaronblohowiak: For syncing any resource with a server for a general realtime web framework [08:54] jesusabdullah: ACTION & sleep (gnight y'all) [08:55] SubStack: I'm just trying to make it easier to write kick-ass webapps [08:55] aaronblohowiak: jesusabdullah: night [08:55] SubStack: namely my own kick-ass webapps [08:55] SubStack: and incidentally everyone else's [08:55] aaronblohowiak: tpryme: a general realtime web framework is inherently doomed. after 20 years of groupware research, the general consensus is "fuck!" [08:56] aaronblohowiak: lol [08:56] tpryme: aaronblohowiak: Can you point me to some papers? Before I go down the rabbit hole [08:56] SubStack: inherently doomed really? [08:56] aaronblohowiak: now, if you don't mind losing people's data occasionally, then you can do just fine [08:56] SubStack: yeah, people's data is not important [08:56] AAA_awright: How does anyone use a database if there are no async database libraries? [08:57] SubStack: AAA_awright: I think the postgres one is async [08:57] AAA_awright: That's nice if you use postgres [08:57] AAA_awright: :s [08:57] SubStack: also there's couchdb, mongodb, other stuffs [08:57] tpryme: AAA_awright: There are several async ones [08:57] SubStack: mysql is hard [08:57] tpryme: AAA_awright: which are you looking for? [08:58] AAA_awright: I can choose from sqlite, mysql, or an RDF store which I throughly don't think anyone has heard of [08:58] aaronblohowiak: tpryme:have you read the OT wikipedia page? [08:58] AAA_awright: And actually I can't use SQLite because there's no way to alter the tables after they are created [08:58] tpryme: aaronblohowiak: Yup [08:58] tpryme: AAA_awright: http://github.com/Sannis/node-mysql-bindings-benchmarks [08:59] SubStack: tpryme: what libs is your framework based around? [08:59] tpryme: SubStack: connect so I can leverage middleware [08:59] tpryme: SubStack: Socket.IO client + server [08:59] SubStack: heh [08:59] SubStack: dnode can use connect too [08:59] googol: exit [08:59] tpryme: SubStack: and then a custom orm/ohm and custom template that works with the orm/ohm using bindings [09:00] TomsB has joined the channel [09:00] SubStack: just var server = connect(...); Dnode(...).listen(server) [09:00] tpryme: SubStack: Yeah, saw that. [09:00] SubStack: why use templates if you've got sockets? [09:00] tpryme: SubStack: Need to play around with dnode [09:00] tpryme: SubStack: templates on the client side [09:00] aaronblohowiak: tpryme: this one is fun in poitning out OT problems: http://hal.archives-ouvertes.fr/docs/00/07/12/40/PDF/RR-5580.pdf [09:01] tpryme: SubStack: so I send json, the browser loads it into records [09:01] rne1223 has left the channel [09:01] tpryme: SubStack: the records are bound to listening objects like templates/views [09:01] tpryme: SubStack: which get auto-updated => minimal code [09:02] tpryme: aaronblohowiak: I'll give that a read [09:02] SubStack: event-emitters server-side then? [09:02] aaronblohowiak: tpryme, SubStack : i probably way overspoke when i said doomed. i'm sorry for being melodramatic. i should sleep =0 [09:02] SubStack: node-goggles is all about event emitters [09:02] SubStack: aaronblohowiak: nah it's cool [09:02] aaronblohowiak: tpryme: are you planning to OS your framework? [09:02] tpryme: aaronblohowiak: Yeah, eventually; but once it's in a stable api [09:02] tpryme: aaronblohowiak: In other words, the right way to get/set [09:02] tpryme: etc [09:02] aaronblohowiak: tpryme: hahahaha [09:03] SubStack: I tend to release stuff first then blog about it once it actually works [09:03] tpryme: aaronblohowiak: :)_ SubStack: What do you mean? [09:03] SubStack: tpryme: I mean the programming model server-side [09:03] aaronblohowiak: tpryme: transactions are super helpful in preserving the Intent of an operation [09:04] derferman has joined the channel [09:04] tpryme: SubStack: So what general archi. do you have in mind for yours? [09:05] rne1223 has joined the channel [09:05] tpryme: SubStack: The json -> models -> bindings -> views all happens client side [09:05] SubStack: a few things, first is client/ shared/ server/ layout for code sharing [09:06] aaronblohowiak: tpryme: also, trying to look over this made me want to give up =) http://cooffice.ntu.edu.sg/otfaq/ [09:06] SubStack: then the client can .subscribe to the server's event emitters, which is in dnode/events right now [09:06] SubStack: then synchronization primitives, probably evolving into full-on stm later [09:07] tpryme: SubStack: cool, i think we're thinking similar things [09:07] Tim_Smart: Anyone here had problems stat'ing a path with utf8 characters? [09:07] SubStack: also preserving an application state accross restarts would be neat too [09:07] hellp has joined the channel [09:08] aaronblohowiak: SubStack: so you are preferring locks over merging ? [09:09] SubStack: aaronblohowiak: yeah since the fields upon which an update is dependant might result in an inconsistent state [09:10] SubStack: I'm sure that paper that I've never heard of addresses this that you two were talking about [09:11] aaronblohowiak: SubStack: this makes sense. not supporting merging is a whole different ballgame =) [09:11] rne1223 has left the channel [09:12] SubStack: just adding a big fat "don't put effectful code in a transaction() since it might be restarted multiple times" to the top of the readme is good enough for me [09:13] aaronblohowiak: hahahahaha [09:13] SubStack: I'm sure it will be ignored [09:13] SubStack: but so long as /my/ apps work, whatevs [09:13] aaronblohowiak: SubStack: haaaa [09:15] SubStack: can't enforce purity in javascript now can we? [09:16] aaronblohowiak: SubStack: any language where you can enforce purity isn't worth using (a statement i will inevitably regret making, but i'm in a mood) [09:16] aaronblohowiak: :-) [09:16] SubStack: well even in haskell there's unsafePerformIO [09:17] SubStack: I guess lazyK means your criteria [09:17] SubStack: or unlambda [09:18] aaronblohowiak: what i would ultimately like is to have a way to declare what collections are referenced within a context and then subscribe to updates to both the collection listings and modifications of the members of said collections [09:18] bentomas has joined the channel [09:20] bpot has joined the channel [09:20] visnup has joined the channel [09:20] aaronblohowiak: this makes no effort at achieving a truthful state, but may be "nice" for the user. [09:20] SubStack: sounds like RemoteEmitter.attach, except for the last part [09:20] SubStack: it only routes events right now [09:21] SubStack: takes care of unregistering the callbacks made when a connection disconnects [09:23] bentomas has left the channel [09:24] aaronblohowiak: DNode is very cool kit. [09:24] aaronblohowiak: SubStack: are you planning on disallowing disconnected or occasionally-connected clients? [09:25] SubStack: disallowing? [09:25] aaronblohowiak: SubStack: not supporting [09:25] SubStack: how would occasionally connected work? [09:25] aaronblohowiak: SubStack: riding a train through tunnels [09:26] SubStack: well that is up to socket.io to send the disconnect messages [09:26] SubStack: from the user's perspective, they won't disconnect though [09:26] aaronblohowiak: SubStack: will the client then cache transactions ? [09:27] breccan has joined the channel [09:27] SubStack: well, "they won't disconnect" meaning the client code will re-establish the connection and attempt to recreate the state [09:27] SubStack: however that will work [09:28] aaronblohowiak: ah [09:28] aliem has joined the channel [09:28] aaronblohowiak: i am really interested in seeing that happen =) [09:28] SubStack: as a built-in sort of thing [09:28] SubStack: since that is a pain to do manually [09:29] SubStack: oh I see what you mean by caching [09:29] aaronblohowiak: =) [09:29] SubStack: buffering everything up so it just looks like really high latency [09:30] aaronblohowiak: that just sounds like pain for the ux if there is a conflict from something that was put in the buffer early [09:31] zomgbie has joined the channel [09:31] aussiegeek has joined the channel [09:31] aaronblohowiak: err, if a txn is rejected low on the stack of txns [09:31] femtoo has joined the channel [09:31] aussiegeek has joined the channel [09:32] aaronblohowiak: anyway... i have been chatting too much, not writing enough code [09:36] Utkarsh has joined the channel [09:43] aussiegeek has joined the channel [09:44] aussiegeek has joined the channel [09:45] rnewson has joined the channel [09:47] aussiegeek has joined the channel [09:49] Egbert9e9 has joined the channel [09:55] altamic has joined the channel [10:02] kriskowal has joined the channel [10:03] margle has joined the channel [10:05] kriskowal has joined the channel [10:07] freeall has joined the channel [10:08] Utkarsh has joined the channel [10:14] Egbert9e9 has joined the channel [10:16] genbit has joined the channel [10:21] xla has joined the channel [10:25] zorzar_ has joined the channel [10:29] bsstoner has joined the channel [10:38] Utkarsh has joined the channel [10:39] ph^ has joined the channel [10:42] mbrochh has joined the channel [10:48] MattJ has joined the channel [10:50] saikat has joined the channel [10:51] ph^ has joined the channel [11:06] nsm has joined the channel [11:09] ditesh|cassini has joined the channel [11:12] themiddleman has joined the channel [11:13] ph^ has joined the channel [11:15] d0k has joined the channel [11:15] dilvie has joined the channel [11:22] shreekavi has joined the channel [11:22] rmills has joined the channel [11:25] ncursestest has joined the channel [11:25] EyePulp has joined the channel [11:31] jetienne has joined the channel [11:31] Guest10496 has joined the channel [11:33] matt_c has joined the channel [11:39] maushu has joined the channel [11:49] SamuraiJack_ has joined the channel [12:02] jetienne: . [12:02] bsstoner has left the channel [12:09] SubStack: http://github.com/substack/js-traverse/blob/master/examples/stringify.js [12:09] SubStack: hackneyed example of how useful traverse is [12:10] SubStack: hackneyed since I added those modifier functions in order to write the example :p [12:13] herbySk has joined the channel [12:17] ctp has joined the channel [12:39] kriszyp has joined the channel [12:45] bcg has joined the channel [13:01] rasputnik has joined the channel [13:01] rasputnik: is this the right place to ask about connect.js ? [13:01] zemanel has joined the channel [13:02] mape: rasputnik: sure [13:02] thinker_ has joined the channel [13:03] tpryme has left the channel [13:03] davidwalsh has joined the channel [13:04] rasputnik: I wrote a dirt simple 'hit counter' just to play with Connect, and it hangs after about 16377 requests. Gist => http://gist.github.com/565169 . [13:04] rasputnik: bet a tenner it's my terrible n00b javascript causing the trouble. [13:06] rasputnik: hum, hang on. If I use Keep-alives it's fine. Probably a file descriptor thing on the ab side. [13:06] rasputnik: ACTION cracks out the httperf [13:07] dnolen has joined the channel [13:07] c4milo has joined the channel [13:08] rasputnik: ah yeah, fine now. must remember to never ever use ab for anything ever again. [13:09] sambao21 has joined the channel [13:09] dnolen has joined the channel [13:11] Gruni has joined the channel [13:16] dnolen has joined the channel [13:21] rasputnik has joined the channel [13:22] dnolen has joined the channel [13:23] maushu has joined the channel [13:24] margle has joined the channel [13:24] brainproxy has joined the channel [13:25] Blackguard has joined the channel [13:28] xla_SC has joined the channel [13:36] c4milo has joined the channel [13:37] c4milo has left the channel [13:46] mape: hmm ajaxian didn't even mention nodeKO, is that site just on life support now? [13:48] DTrejo has joined the channel [13:48] jetienne: y [13:49] jetienne: the 2 main guys lefts like amonth qgo [13:52] Tim_Smart has joined the channel [13:53] voxpelli has joined the channel [13:53] Tim_Smart: fictorial: ping [13:59] bradleymeck has joined the channel [13:59] Tim_Smart: I have a sneak suspicion redis-node-client is leaking memory. [14:00] Tim_Smart: *sneaky [14:02] maushu: Tim_Smart, NOOOOOOOOOOOOOOOOOOOOOoooooooooooooooooooooooooooooooooooooo [14:02] femtoo has joined the channel [14:02] Tim_Smart: maushu: :/ [14:02] maushu: ACTION watches as his projects blow up from the sheer leakness. [14:03] Tim_Smart: I checked all my code, and it looks like everything should be collected by the gc [14:03] Tim_Smart: But as I perform heaps of redis queries, RAM gets higher. [14:04] maushu: Tim_Smart, probably a closure gone wrong. [14:04] Tim_Smart: Its sitting at 35-50MB on idle... and all my state it stored in redis. [14:04] Tim_Smart: s/it/is/ [14:05] zemanel: still have a variable reference bug to solve on my proj, one day [14:05] maushu: "one day" [14:05] Tim_Smart: maushu: Maybe, I'm looking around atm. [14:05] tobeytailor has joined the channel [14:05] Tim_Smart: I might try get node-inspector working, and do some heap snapshots [14:06] maushu: Tim_Smart, generally, I've noticed that sometimes closures stay "open" and the variables insisde don't get gc'ed. [14:06] maushu: This on event callbacks and loops. [14:07] ysinopsys has joined the channel [14:07] V1 has joined the channel [14:08] bradleymeck has joined the channel [14:17] sechrist: wah [14:17] sechrist: ie6 [14:17] sechrist: wah [14:17] sechrist: death [14:17] delapouite has joined the channel [14:18] maushu: sechrist, wat. [14:18] sechrist: I hate ie6 [14:18] maushu: So does millions of people. [14:18] sechrist: I got my frontend perfect [14:18] sechrist: absolutely perfect [14:18] maushu: Disregard other browsers. [14:18] sechrist: but the javascript library that I was using for rounded corners and shadows performs like SHIT in ie6 [14:18] maushu: Develop only for ie6. [14:18] ysinopsys: guaranteed web compliance [14:19] sechrist: IE 6 has like no debugging capability so I typically don't try it until later [14:19] sechrist: perhaps I should [14:19] V1: IE6 isn't that bad, atleast we already know all the bugs and bolts of that browser. New browsers are a bigger pain as you have no clue what will be broken [14:20] sechrist: I mean it's kind of fun to have to hack on code to get it to work in ie6 but not on a time crunch [14:20] mr-rock has joined the channel [14:21] stephank: http://arewefastyet.com/ <- this getting interesting [14:22] populuxe has left the channel [14:24] Zuardi has joined the channel [14:27] V1: stephank: That's like first update again since months [14:29] stephank: I don't know, that graph shows a period of less than two months, and continuous improvements. [14:30] LowValueTarget has joined the channel [14:31] evanpro has joined the channel [14:32] nolan_d has joined the channel [14:32] zemanel has joined the channel [14:36] freeall has joined the channel [14:38] Nohryb has joined the channel [14:41] bentlegen has joined the channel [14:46] V1: Yes! [14:46] V1: I finally tracked down the root of all "ECONNRESET, Connection reset by peer" issues in my logs [14:57] programble has joined the channel [14:59] matt_c has joined the channel [14:59] dohtem has joined the channel [15:02] dnolen has joined the channel [15:04] Blackguard has joined the channel [15:08] maushu has joined the channel [15:09] Guest10496: what's the best way hash user passwords with node? [15:09] rtomayko has joined the channel [15:11] wakawaka: anyone? user password hashing? [15:11] maushu: wakawaka, crypto? [15:12] wakawaka: have you used it before? [15:12] maushu: Not for what you want. [15:12] maushu: http://nodejs.org/api.html#crypto-239 [15:13] Tim_Smart: wakawaka: crypto.createHash('sha1').update(password).digest('hex') [15:13] maushu: ^ That. [15:13] wakawaka: oh ok, awesome, thanks! [15:13] maushu: You also have sha1, md5, sha256, sha512, etc. like the docs say. [15:14] wakawaka: perfect, thanks a lot, much appreciated [15:14] Tim_Smart: Anyone here had heap snapshots working with node-inspector? [15:14] stephank: Shouldn't there always be a salt when hashing? [15:15] Tim_Smart: stephank: Up to you to put it in... [15:15] Tim_Smart: password = salt + password; [15:15] Tim_Smart: done. [15:15] maushu: Don't forget to add sugar. [15:15] Tim_Smart: password = salt + password + sugar; [15:15] maushu: password = salt + sugar + password; [15:16] Tim_Smart: ;) [15:16] Tim_Smart: Pepper? [15:16] Alex-SF has joined the channel [15:16] maushu: Pepper for great justice. [15:16] Utkarsh has joined the channel [15:17] maushu: *Warning*: Column "password" is too big. Initiating self-destruction sequence... [15:18] jxh has joined the channel [15:24] [[zz]] has joined the channel [15:24] xla_SC has joined the channel [15:26] Nohryb has joined the channel [15:29] marshall_law has joined the channel [15:31] shreekavi has left the channel [15:35] freeall has joined the channel [15:51] peteatolia has joined the channel [15:57] DTrejo has joined the channel [15:58] delapouite has joined the channel [16:04] kriskowal has joined the channel [16:05] sveimac has joined the channel [16:07] danielzilla has joined the channel [16:07] LFabien has joined the channel [16:12] evanpro has joined the channel [16:13] sveimac has joined the channel [16:13] SamuraiJack has joined the channel [16:18] rikarends has joined the channel [16:18] _TS has joined the channel [16:18] rikarends: hmm has anyone gotten nodejs to run inside an eclipse window so i can click the errors to get to the file? [16:18] rikarends: or something similarly nice [16:22] dnolen has joined the channel [16:26] zomgbie has joined the channel [16:28] sveimac has joined the channel [16:28] evanpro has joined the channel [16:29] peteatolia: I was wondering around the same lines, what you guys use as an IDE for node (&| js in general) ? Tried Aptana, but overkill for me. [16:29] xla_SC has joined the channel [16:30] altamic has joined the channel [16:32] DTrejo has joined the channel [16:33] Tim_Smart: peteatolia: I use gnu screen + vim [16:33] _TS: vim! [16:33] danielzilla: tmux4lyfe [16:33] nerdEd has joined the channel [16:34] peteatolia: aha :) I knew i'd get this one. Thx Tim_Smart [16:34] peteatolia: screen + nano for me at the mo [16:34] jamescarr has joined the channel [16:35] xla_SC has joined the channel [16:36] _TS: Tim_Smart: what are you using redis for? [16:37] Tim_Smart: _TS: Media server backend. [16:37] _TS: right on [16:38] Tim_Smart: There is a memory leak somewhere in the code (not sure if it is mine or 3rd party) [16:39] Tim_Smart: Heap profile would be nice right now... [16:41] _TS: i noticed somethng like that [16:41] _TS: im using redis [16:42] dipser: is it possible to compile a library? [16:42] _TS: aswell [16:42] Tim_Smart: Hmm... I might switch my library to http://github.com/bnoguchi/redis-node soon. [16:42] _TS: interesting its much newer =) [16:43] rikarends: peteatolia: yeah well i'm trying to use eclipse, but it doesnt appear to be trivial to just get *&@$! ctrl-f5 run nodejs and click on output to work [16:43] rikarends: or atleast i havent found it yet [16:43] rikarends: but i'm sure eclipse has the most awesome automated unittesting of weird javaframework integration [16:43] rikarends: i guess i always want the weird stuff :) [16:45] Tim_Smart: Yeah, I might just re-write my library watcher service, and use that newer redis client. [16:45] _TS: Tim_Smart: i think the syntax for setting hashes alone has won me over [16:45] rikarends: hey did someone write a C version of the redis client? [16:45] _TS: redis hashes ftw [16:46] rikarends: it would be nice to get a simple array based api [16:46] rikarends: to just dump it on a socket and get some stuff back [16:46] rikarends: redis shouldnt be function mapped imho [16:46] _TS: err sorry i just like how the hmset looked its almost the same nevermind [16:46] _TS: or replied with json [16:46] _TS: like couch [16:47] _TS: in some way [16:47] _TS: maybe not [16:47] _TS: food [16:48] rikarends: anyone know how to create a run configuraton for nodejs in eclipse [16:48] Nohryb has joined the channel [16:50] dipser: is it possible to compile a library? [16:51] sveimac has joined the channel [16:55] sonnym has joined the channel [16:57] jxh has joined the channel [16:58] V1: Does anybody know how to access the internal HTTP server of express? [16:59] dipser: internally it is connect as far as i know [17:02] V1: Yeah, i got that far as well, but I have gotten to a point where I need to add a error listener to the HTTP server so prevent uncaught exceptions [17:02] V1: As my log is still getting flooded with: [ 'Error: ECONNRESET, Connection reset by peer' [17:03] Yuffster has joined the channel [17:03] V1: and the solution involves adding a on error listener on the server: http://github.com/ry/node/issues/issue/174 [17:04] V1: Or maybe i'm just doing something weird ;p [17:05] pdelgallego has joined the channel [17:10] brianmario has joined the channel [17:16] LFabien has joined the channel [17:17] matt_c has joined the channel [17:18] aaronblohowiak has joined the channel [17:22] karboh has joined the channel [17:24] rikarends: damnit. everytime i try eclipse and think it might not suck [17:24] rikarends: it fails on some extremely basic simple thing [17:24] rikarends: like ***ing running an external command and having error output clickable [17:26] sveimac has joined the channel [17:26] rikarends: its time we replace eclipse with a JS based IDE :) [17:28] cloudhead has joined the channel [17:29] mikew3c has joined the channel [17:31] kriskowal has joined the channel [17:32] aaronblohowiak: rikarends: working on it. [17:32] rikarends: online anywhere already? [17:32] aaronblohowiak: rikarends: not really =/ [17:33] rikarends: eclipse is a huuuuuuuuuuuuuuuge pile of stuff though [17:33] marshall_law has joined the channel [17:33] rikarends: im just always amazed that this huuuuuge pile doesnt do what i want [17:33] aaronblohowiak: rikarends: what % of that do you need to do node.js development? [17:33] rikarends: a decent editor i guess [17:33] aaronblohowiak: rikarends: what would that mean for you.. syntax highlighting, and then what? [17:34] rikarends: decent search [17:34] rikarends: for you? [17:35] aaronblohowiak: rikarends: i would like to be able to define custom commands =) [17:35] rikarends: and that [17:35] rikarends: written in JS [17:35] rikarends: not in pages and pages of bullshit java [17:35] aaronblohowiak: rikarends: have you seen codemirror? [17:36] kriskowal has joined the channel [17:36] rikarends: looks decent [17:36] rikarends: we have a good editor coming up aswell (ajax.org) [17:36] rikarends: i think its beats codemirror by the looks of it [17:36] fyskij has joined the channel [17:37] rikarends: i cant wait till it can replace eclipse [17:37] aaronblohowiak: rikarends: is this your project? [17:37] rikarends: my company yeah, fabian is doing the editor though [17:38] aaronblohowiak: rikarends: the page loads and then i just seen the background for a while.. [17:38] aaronblohowiak: oh, there is the content [17:38] rikarends: yeah server is being slow [17:38] rikarends: or its a crapload of js [17:38] rikarends: the site is in need of some love [17:39] rikarends: spent the last month building a collaborative backend in nodejs+redis [17:39] rikarends: we actually have a working node debugger written in JS running on our editor too [17:39] aaronblohowiak: rikarends: oh cool! [17:40] aaronblohowiak: rikarends: collaborative backend... is that like data binding? [17:40] rikarends: http://www.ustream.tv/recorded/6908397 [17:40] rikarends: skip to 3 minutes [17:40] rikarends: thats what we have in 'the lab' [17:41] MrTopf has joined the channel [17:41] aaronblohowiak: rikarends: the docs are unusable in firefox [17:41] mape: rikarends: what is that? [17:41] rikarends: my talk at fowa about a js based IDE [17:41] mape: atlas thingy? [17:41] rikarends: it should kick atlas royally out of the park when its done ;) [17:41] mape: hehe, yeah the alpha/beta I payed for in altas was no sex [17:41] rikarends: i was just diving into eclipse to get some feel [17:42] isaacs has joined the channel [17:42] rikarends: yeah but to be honest making an IDE is also really hard [17:42] rikarends: it really pushes your UI framework to the limit [17:42] mape: I just want textmateish stuff that doesn't rape my machine when searching [17:42] isaacs: rikarends: *selling* an IDE is even harder. [17:42] rikarends: my feel is capuccino is not scalable enough to go all the way [17:42] mape: so bespin locally with sharing stuff [17:43] mape: and compatablity with textmate bundles [17:43] aaronblohowiak: rikarends: oh this is a gui ide... [17:43] isaacs: rikarends: textmate might be objectively worse than your editor in every possible way, but textmate is MY editor. [17:43] rikarends: aaronblohowiak: amongst other things yes.. visual, code and debugger [17:43] mr_daniel has joined the channel [17:43] aaronblohowiak: mape: that would be fun =) [17:43] rikarends: however we'll start with just text. [17:43] mape: isaacs: It's your editor? When can I expect TM2? [17:43] isaacs: rikarends: trying to convince someone to use a different editor based on features is like trying to convince someone to shoot their dog because the puppy is cuter. [17:43] rikarends: isaacs: hey im gonna keep that quote :) [17:44] isaacs: rikarends: cc by-attrib [17:44] rikarends: no i know developers are fickle and its hard n all [17:44] isaacs: it's not about being fickle, though [17:44] isaacs: it's about being loyal and monogamous when it comes to our editors [17:44] rikarends: but i just pulled out eclipse again to see if i can get a bit of workflow for node [17:44] rikarends: and its like ******** impossible or something [17:44] isaacs: yeah, right? [17:44] mape: isaacs: Really? I'm awfully pragmatic when it comes to editors, just haven't found anything better then TM [17:45] rikarends: im now supposed to write a java extension to do some regexping on my console output to make it find errors [17:45] isaacs: mape: the last time i switched editors was like 4 years ago, now, and it was very traumatic [17:45] mape: Guess VIM or emacs would be but haven't seen anything that makes it so [17:45] aaronblohowiak: mape: is there anything beyond the bundles and project drawer that you like? [17:45] inimino: vim++ [17:45] v8bot: inimino has given a beer to vim. vim now has 1 beers. [17:45] rikarends: im a visual studio C++ guy but ive been doing javascript mostly lately [17:45] isaacs: v8bot [17:45] isaacs: v8bot++ [17:45] mape: aaronblohowiak: my theme and look [17:45] v8bot: isaacs has given a beer to v8bot. v8bot now has 2 beers. [17:45] aaronblohowiak: inimino: i like vim, but vimscript sucks =( [17:46] isaacs: rikarends: vs is one of the few good IDEs, i think. [17:46] isaacs: rikarends: a damn shame it's windows only [17:46] rikarends: yeah i know. i've always despised eclipse [17:46] rikarends: but for some JS dev it seems quite powerful, especially with many files and search [17:46] isaacs: vs actually takes full advantage of the fact that it's an editor with a compiler built in. [17:46] rikarends: but now i want it to start node and have my errors clickable and whoop! [17:46] rikarends: there goes the most flexible ide on the planet. not even a simple regexp matcher built into its console [17:46] isaacs: i'd love to see a node-top-to-bottom terminal editor [17:46] rikarends: i mean .. w ..t..f.. [17:46] rikarends: this just pisses me off [17:47] isaacs: rikarends: yep. [17:47] mape: isaacs: ncurses thingy? [17:47] isaacs: rikarends: if you're used to vs, you're better off never using another IDE. [17:47] isaacs: rikarends: they'll just infuriate you. [17:47] isaacs: rikarends: [17:47] rikarends: well and then people wonder why microsoft wins [17:47] rikarends: well , won [17:47] isaacs: better to just go the editor+terminal route [17:48] isaacs: rikarends: i *have* seen very advanced vim users do pretty much everything that i loved in vs [17:48] rikarends: i mean the code editor in eclipse is fine imho [17:48] rikarends: the project thing is fine [17:48] isaacs: right, but it tries to do IDE features [17:49] isaacs: and it doesn't do them very well [17:49] isaacs: imo [17:49] rikarends: no exactly [17:49] rikarends: it makes it cloudy and vague [17:49] isaacs: compared to VS, which is kind of unfair, but still [17:49] rikarends: i mean its just running friggin stuff on a commandline whatever its doing [17:49] aaronblohowiak: ACTION is planning on a code editory, not a ide [17:49] rikarends: so just facilitate running stuff on a commandline, with some stdout parsing [17:49] rikarends: and yr golden [17:49] rikarends: but noooo.. [17:49] isaacs: right [17:49] isaacs: rikarends: so, that's basically what vim and emacs do. [17:50] isaacs: rikarends: they have a very handy way to get to the shell easily and do stuff [17:50] isaacs: rikarends: textmate HAD that, but it broke in Snow Leopard. [17:50] mape: is there any way to do intellisense in vim? [17:50] jamescarr: mape, I dont do intellisense [17:50] aaronblohowiak: mape: ctrl+p ? [17:50] isaacs: rikarends: so i just wrote a shortcut to open iterm and go to the current file, which is like 90% of the way to what i need. [17:50] rikarends: i know, i'll suck it up for now [17:51] mape: aaronblohowiak: ? [17:51] jamescarr: heh... facebook ad: "Meet Single Moms Today!" [17:51] rikarends: but i'm crying inside for where we are in friggin 2010 [17:51] mape: I don't know, hence why I'm asking [17:51] rikarends: hopefully i can get our editor slash IDE to make me happy :) [17:51] aaronblohowiak: mape: http://vim.wikia.com/wiki/Any_word_completion [17:52] aaronblohowiak: mape: or more advanced, http://insenvim.sourceforge.net/ [17:52] aaronblohowiak: but yea ctrl+p is like the escape key from textmate [17:52] mape: hmm k [17:52] rikarends: yeah PC's have gotten fast enough now to make eclipse not feel like running in quicksand [17:54] mape: netbeans and eclipse on osx is like jerking with sand paper :( [17:54] aaronblohowiak: mape: oh it has come a long way, then [17:55] eazyigz has joined the channel [17:55] mape: aaronblohowiak: My coworkers use it and I still think it looks and feels like shite [17:56] eazyigz: I wish to leverage the cache-manifest directive with nodejs. Is it possible? [17:56] aaronblohowiak: mape: i think that nifty things like extract to method would be nice, but at the end of the day, i just wish vim had beter file switching + textmate bundles [17:56] eazyigz: if so, how do I enable that mime type? [17:56] eazyigz: apache has an .htaccess file. What does nodejs have? [17:57] rikarends: nodejs is lower level [17:57] mape: aaronblohowiak: I just wish TM stopped being shitty when working with files on network mounts and didn't kill my system when searching [17:57] rikarends: it doesnt even have paths. it just serves http requests [17:57] mape: Other then that I'm pretty happy [17:57] rikarends: if you want something slightly higher level try the connect framework on top of nodejs [17:57] rikarends: which is essentially a mini apache type of thing running on nodejs [17:58] rikarends: eazyigz: nodejs just serves http requests. the path in an http request is really nothing more than a string that gets passed to the thing listening on port 80. thats what nodejs is [17:58] rikarends: eazyigz: same goes for headers. [17:58] rikarends: actually node doesnt even serve http requests unless you write a bit of code that makes it do that. [17:59] rikarends: with its http components [17:59] rikarends: just so you are confused now. [17:59] aaronblohowiak: mape: i've heard this is cool: http://henrik.nyh.se/2007/06/grep-in-project-command-for-textmate [17:59] mape: think there is awk [17:59] aaronblohowiak: mape: the remote mount thing is a chore. it takes an ssd for textmate search to really be snappy [18:00] mape: well locking the entire program because it is searching is wonky [18:00] aaronblohowiak: mape: fo' sho. [18:01] V1: Is there a canvas expert in da house? [18:01] eazyigz has joined the channel [18:03] rikarends: i did canvas [18:03] V1: ACTION inserts awkward silence [18:03] rikarends: and svg and vml [18:03] rikarends: whats the question [18:04] V1: I got an issue where modifying individual pixels is not work on Google Chrome windows, but it works on all other browser and Google Chrome mac o.O [18:04] rikarends: i didnt know canvas had pixel xs [18:05] rikarends: setPixel(x,y,color) [18:05] rikarends: try to write a barebone thing that just does setpixel(10,10,0) [18:05] rikarends: if that bugs its a bug in chrome :) [18:06] rikarends: not much to work around about [18:06] V1: I'm looping over the getImageData data and modifying each pixel than [18:06] rikarends: well try to go about it in a nice isolating way [18:06] eazyigz has joined the channel [18:06] rikarends: first see if setpixel works at all [18:07] rikarends: if it is a bug it'l help you define it [18:07] V1: it works, http://people.mozilla.com/~prouget/demos/35days/gray.xhtml this demo works fine in chrome [18:07] rikarends: k then it must be something you do [18:07] rikarends: try console outputting what yr writing [18:08] rikarends: dont assume anything. [18:08] rikarends: golden rule of debugging [18:08] V1: I tried that, but whole chrome crashes if i inspect the canvasDataArray :) [18:08] rikarends: then dont inspect [18:08] V1: ~_~ [18:08] rikarends: console.out ( x,y,color) [18:09] jchris has joined the channel [18:09] rikarends: browser bugs suck though [18:09] V1: yeah iknow, and debugging canvas is like rubbing sandpaper on you nuts, [18:09] V1: it hurts. [18:09] rikarends: lots of sandpaper and genital experience here [18:10] V1: :p [18:10] rikarends: weird channel :) [18:10] aaronblohowiak: rikarends: we are sponsored by a sandpaper company [18:10] Astro: omg, xmpp s2s in node works :) [18:11] aaronblohowiak: Astro: sweet [18:11] rikarends: maybe you should get sponsored by a lotion company :) [18:11] MattJ: ACTION slaps Astro [18:11] Astro: ouch [18:11] Astro: y? [18:11] MattJ: Heh [18:11] V1: gonna shrink my test case first, thanks for the heads up btw. [18:11] MattJ: Astro: I managed to stop myself going that far :) [18:11] eazyigz has joined the channel [18:12] hdon has joined the channel [18:12] Astro: I need to get a company to support me, and I figured that functionality might interest some people [18:13] aaronblohowiak: Astro: what is your project? [18:13] aaronblohowiak: node-xmpp [18:13] aaronblohowiak: there you go [18:13] aaronblohowiak: haha [18:13] aaronblohowiak: whoops [18:13] Astro: yes [18:13] Astro: attention, it's very unpolished yet [18:13] saikat has joined the channel [18:14] V1: hmz, even executing this example locally: http://people.mozilla.com/~prouget/demos/35days/gray.xhtml doesn't work. But checkout the example in the browser works.. wtf [18:14] V1: on the server* [18:15] aaronblohowiak: Astro: yea, and your documentation isn't quite clear what kinds of things i can build with it (or requires a lot of previous xmpp-terminology awareness) [18:15] rikarends: V1: maybe yr hitting a buggy xss feature :) [18:15] V1: lol :P [18:16] Astro: aaronblohowiak: I'm just doing the building blocks; a user-friendly xmpp library on top of node-xmpp is already out there [18:16] [[zz]] has joined the channel [18:16] aaronblohowiak: Astro: xmppjs? [18:16] eazyigz has joined the channel [18:16] Astro: I don't want to send "just text" over IM, I want to deal with stanzas [18:16] Astro: no, [18:16] aaronblohowiak: Astro: that makes sense [18:17] MattJ: aaronblohowiak: xmpp.js is by me, node-xmpp by Astro [18:17] Astro: http://github.com/athoune/node-xmpp-client [18:17] aaronblohowiak: sweeeet [18:17] MattJ: I haven't looked at node-xmpp, but I think it has a somewhat different API [18:18] Astro: I tried to make it more node-y [18:18] JimBastard has joined the channel [18:18] MattJ: I tried to make it more Strophe-y :) [18:19] MattJ: Actually most of it was based on Prosody libs ported to Javascript, the surface API isn't much [18:19] Astro: well, xmpp.js *is* strophe.js? [18:19] MattJ: Astro: No, I didn't copy a line of code [18:19] mattly has joined the channel [18:19] Astro: wow [18:19] aaronblohowiak: alright gents, i'm off to get some espresso [18:19] triyo has joined the channel [18:20] triyo: is there a way to load a source of .js file in node-repl? [18:20] Astro: I didn't know that when this Ludovic Bocquet guy asked me about it last week [18:20] aaronblohowiak: ACTION puts on a hat and monocle [18:20] rikarends: after doing a big project on xmpp, i still find it hard to see the use of xmpp [18:21] Astro: rikarends: IM? [18:21] rikarends: you can do IM just fine on nodejs without xmpp layering [18:21] rikarends: i can see the point for interop and bridging though [18:22] MattJ: and interop and bridging bring plenty of ready-made libraries and components [18:22] eazyigz has joined the channel [18:22] Astro: MattJ: you might want to correct http://wiki.xmpp.org/web/Roundup/Software [18:22] MattJ: But yes, if it's something custom and single site, no *need* for XMPP [18:22] Astro: MattJ: this guy asked me for an hour, and I had trouble explaining the relation of these libs... [18:23] MattJ: Astro: I don't know yours very well, so I would too :) [18:23] rikarends: we spent quite a bit of time on xmpp, extending ejabberd with our own channel manager to make it do the type of group datastreaming we wanted [18:23] rikarends: and if you add it all up [18:23] rikarends: it was just insane [18:24] rikarends: nothing 200 lines of nodejs cant fix [18:24] MattJ: "channel manager", "group datastreaming"? [18:24] rikarends: yeah collaboration [18:24] Astro: sounds like MUC to me :) [18:24] MattJ: MUC :) [18:24] rikarends: yeah exactly muc but not muc at all [18:24] rikarends: we tried muc and in the end we had to modify so much [18:24] rikarends: it was just not worth it [18:24] MattJ: Plus there's nothing to stop you using a component, and writing that with Node (that's /why/ I wrote xmpp.js) [18:24] rikarends: you cant beat everything into an oldschool IRC chatroom protocol [18:25] Astro: rikarends: except for line breaks ;) [18:25] rikarends: i guess xmpp suffers a bit from the whole enterprise mystique [18:26] Astro: sounds mysterious, what is it? [18:26] rikarends: 'enterprise resource allocation bus middleware development SDK' [18:26] rikarends: say what? [18:26] rikarends: stuff like that [18:26] rikarends: i just read an article on this problem [18:27] rikarends: well blog rant.. the one where systems get overly complex [18:27] MattJ: I work with XMPP full-time, and I can't say those kind of people make up the majority of XMPP users [18:27] MattJ: Oh, complexity, sure - I hate it :) [18:27] eazyigz has joined the channel [18:27] MattJ: But at its core XMPP isn't really complex, sadly I can point out several extensions which are [18:28] MattJ: Mostly because of people in the past saying "But I want to be able to do THIS and THIS and THAT!" [18:28] MattJ: That's the real danger of any system, protocol or software :) [18:28] wdbl has joined the channel [18:28] bradleymeck has joined the channel [18:29] rikarends: xmpp 'looked' easy tahts why we started with it [18:29] rikarends: but as we progressed it felt more and more like we had to sortof extend and squeeze into it instead of it doing stuff for us [18:29] rikarends: like when you have slightly different online/offline status management [18:29] wdbl: Hello all. What is the recommended way of communicating from Node.js to other back-end servers? Tcp/Proto-Buffers? SOAP? Http/Json? Something else? [18:29] rikarends: or when you have to run queries against online status [18:30] rikarends: all of a sudden yr trying to plug custom extensions into it to load that into a db so you can query that [18:30] Astro: wdbl: depends on the backend services [18:30] rikarends: it was the classic complexity hell, you forgot why you needed to solve this problem but you are chasing it anyway [18:31] rikarends: a problem emerging from the decision of using XMPP [18:31] rikarends: instead of solving the problem we needed to solve [18:31] wdbl: Astro: could be Java or C#. They already expose SOAP interfaces, but Json could be added as well. I'd really like to be able to PUSH from the Java/C# server to Node.js... [18:31] rikarends: which was keep all clients informed of stuff the other guys were doing [18:31] rikarends: if relevant to them [18:32] Astro: every time I announce xmpp software, guys like you jump up [18:32] bpot has joined the channel [18:32] rikarends: ghe :) [18:32] Astro: and tell their stories about how they wrongly chosen xmpp before [18:32] rikarends: nah its a good thing to write xmpp for node [18:32] eazyigz has joined the channel [18:32] MattJ: Astro: they'll understand, one day :) [18:32] wdbl: Astro: So, I guess I could make Node.js listen on one port for web clients and on another port for back-end services... and then just PUSH from Java/C# to Node.js in whatever format Node.js expects (Http requests?) [18:32] rikarends: just saying its very very hard to decide when to use or not to use xmpp [18:33] Astro: wdbl: yeah, that'll work [18:33] wdbl: Astro: thank you [18:33] Astro: wdbl: tough I discourage SOAP if you're not in love with it :) [18:33] brianmario has joined the channel [18:33] rikarends: SOAP is the root of all evil [18:33] wdbl: Astro: not at all. I'd rather use whatever Node.js works best with [18:33] rikarends: its a solution applied to the wrong problem [18:34] mikeal has joined the channel [18:34] rikarends: wdbl: try to find the simplest HTTP-based RPC encoding you can find. [18:34] rikarends: wdbl: if thats a simple URL with a HTTP verb, then thats it [18:34] rikarends: then thats what node will work best with [18:35] wdbl: rikarends: that just might work. There are only a couple of little events that I need to push with Node. Everything else, the browser will just request from the primary web server. [18:35] rikarends: then keep it as simple as you can [18:35] rikarends: its a good mantra for anything anyway :) [18:35] bradleymeck: soap is good for odd odd documents that are hard to parse, but other than that, meh [18:35] wdbl: agreed. thank you very much. [18:36] statim has joined the channel [18:36] wdbl: Oh, errrm. one more thing: What about keeping a persistent connection open? Do you think it'd be much better than having the Java/C# server making a new Tcp/Http connection for each push? [18:37] wdbl: Can Node do that? [18:37] rikarends: wdbl: yeah its easy, dont close the response [18:37] rikarends: wdbl: the question is if the Java side supports open http connections you can just add stuff to [18:37] wdbl: rikarends: I think I can just do it with a raw tcp socket [18:37] rikarends: wdbl: : however it depends on your serverload on both ends if persistent actually beats polling [18:38] rikarends: if you are trying to do something simple [18:38] wdbl: rikarends: just have to send the right text over it. [18:38] rikarends: dont do persistent sockets [18:38] jamescarr: amqp rocked my world [18:38] rikarends: because they can break and you have to keep track of that [18:38] rikarends: in terms of code complexity just reconnecting is simplest [18:38] rikarends: less bugs = good [18:38] wdbl: yeah a message queue was my other thought [18:38] rikarends: but it depends how many pushes/sec yr doing [18:39] rikarends: if its > 1 persistent is probably best [18:39] wdbl: peak will definitely be > 1. [18:39] rikarends: how far >1 [18:40] wdbl: 50 to 100 [18:40] wdbl: at peak [18:40] rikarends: all from one source?.. yeah then persistent is probably better [18:40] rikarends: but its handy to make it nice n fault tolerant [18:40] wdbl: (call center, screen pops to the browser when a call arrives for an operator) [18:40] rikarends: i just made a packet based protocol on node over HTTP its really trivial [18:41] rikarends: from a browser you'd have to do longpolling though [18:41] rikarends: unless you have em newfangled websockets [18:42] eazyigz has joined the channel [18:42] wdbl: we have a huge client that wants a web browser based operator panel and they want to use Chrome on their Linux desktops [18:42] wdbl: so we have websockets, woot! [18:43] rikarends: its so fun we get excited about websockets [18:43] rikarends: whilst it really is just something missing from XHR [18:44] rikarends: something so basic and trivial [18:44] rikarends: its borderline pathetic :) [18:44] wdbl: yeah push to the browser has been a long time coming. [18:44] jamescarr: I setup websockets bound to AMQP on the serverside [18:44] jamescarr: it's fucking brilliant [18:45] wdbl: jamescarr: so, browser -> node.js -> AMQP? [18:45] jamescarr: I'm using node.js to create a monitor UI for a JEE backend system [18:45] jamescarr: wdbl, and JEE -> AMQP -> node.js -> browser :) [18:45] rikarends: jamescarr: do you ever see nodejs take the place of those horrible JEE stacks? [18:45] wdbl: ahh yes ok :) [18:46] jamescarr: rikarends, no... at this point those JEE stacks are equivalent to COBOL on mainframes [18:46] jamescarr: some of the code dates back to 2001 [18:46] LFabien has joined the channel [18:47] rikarends: writing sane businesslogic in JS is still hard though [18:47] rikarends: i can imagine why you want a typed language for that [18:47] eazyigz has joined the channel [18:47] rikarends: i like the quote, a typesystem is really just a very poor form of unittesting [18:47] rikarends: but atleast it is a poor form of unittesting :) [18:48] Nohryb has joined the channel [18:48] rikarends: it is possible JS is way too flexible to ever be enterprise safe, ie safe for big hordes of codemonkey idiots [18:49] rikarends: in the same way as that C++ is not safe for the hordes [18:49] wdbl: imho, there are much better tools available for typed languages and that will continue to be the case for a while. [18:49] rikarends: i just wrote a pretty big backend system in nodejs with businesslogic and all [18:49] rikarends: and i can feel the uncertainty in not knowing what can be passed in, or who can modify my datastructures [18:51] rikarends: i dont know how that can be fixed without extremely strict guidelines [18:51] rikarends: and perhaps a guideline enforcing preprocessor [18:52] rikarends: but i'd be scared to have a whole group of enterprise monkeys do something in JS [18:52] eazyigz has joined the channel [18:54] SubStack: plenty of big teams use javascript client-side [18:54] SubStack: s/client/browser/ [18:54] rikarends: i doubt the actual amount of js devs on those teams are > 3 or 4 [18:55] rikarends: and the recycle time for the UI is usually every generation of the site [18:55] rikarends: its not a decade of backend code [18:55] rikarends: also, frontend js errors are much more easily tracked down [18:55] rikarends: the testmonkeys will scream :) [18:55] SubStack: it's far easier to write unit tests for node code than browser code [18:56] rikarends: oh absolutely [18:56] rikarends: but also the amount of real damage a frontend does to a database is usually 'almost none' [18:56] rikarends: since hopefully the api to the backend is secure [18:56] SubStack: hah you would hate dnode [18:57] rikarends: dnode? [18:57] SubStack: lets you call server functions from the browser [18:57] rikarends: i dont hate it, its just not very wise if those functions are not secure [18:58] rikarends: so yes i'm not a big fan of end to end transparency [18:58] SubStack: well they can be secure, it's just a pain right now in complicated apps to know if a function came from the server or is local [18:58] aaronblohowiak: SubStack: dont you specifically have to expose those functions? [18:58] bpadalino has joined the channel [18:58] rikarends: if its a pain to know in which security space you are then i have to admit its doing it WRONG [18:58] rikarends: but its great fun i'm sure [18:59] SubStack: aaronblohowiak: you have to explicitly return the values in a callback somewhere [18:59] V1: Dear fucking got you got to be fucking kidding me [18:59] aaronblohowiak: SubStack: nice. [18:59] aaronblohowiak: V1: canvas joy? [18:59] V1: The whole google chrome issue was 1 fucking line of code [18:59] V1: >___< 1 line [19:04] mape: Less code == less bugs :P [19:04] V1: And it worked fine on Mac, but windows noooo... [19:05] rikarends: V1: on windows idiots get punished ;) [19:05] V1: :p [19:08] [[zz]] has joined the channel [19:08] rikarends_ has joined the channel [19:11] jamescarr: apparently rabbitmq suppors jsonrpc too [19:11] eazyigz has joined the channel [19:12] sveimac has joined the channel [19:13] sambao21 has joined the channel [19:14] benburkert has joined the channel [19:15] _TS has joined the channel [19:15] wdbl: Hey! There's nothing wrong with Windows! [19:16] evanpro has joined the channel [19:16] sarenji has joined the channel [19:18] mape: wdbl: And nothing right as well? [19:18] genbit has joined the channel [19:19] wdbl: oh, it's _all_ right. [19:20] wdbl: i love it, wouldn't use anything else. [19:20] mattly has joined the channel [19:20] mape: wdbl: Tried anything else? [19:21] wdbl: (on my desktop) [19:21] jbrantly has joined the channel [19:23] _TS_ has joined the channel [19:23] wdbl: yes, I have a macbook pro and I blew OSX off of it after giving it a try for about a year. I've been a Linux user for about 15 years now. I run multiple asterisk and freeswitch servers and I've logged a ton of time on the big linux desktop distros (Fedora, Ubuntu, OpenSUSE). [19:24] mape: And you still want to use Windows? [19:24] atourino has joined the channel [19:24] _TS_: wierd [19:24] mape: Hmm that has to be a first, I don't think I've ever heard a OSX user go back to Windows. [19:25] wdbl: maybe you're not looking [19:25] kriskowal_ has joined the channel [19:25] wdbl: I'd rather use Linux than OSX. [19:25] mape: 21:20:11 < wdbl> i love it, wouldn't use anything else. [19:26] wdbl: yeah, I'm just saying... if I had to run something else, it'd definitely be Linux over OSX. [19:26] V1: yay, i got it fixed now Joyent won't update to the correct revision :p [19:26] mape: Huh? That was stating you prefered windows over everything else? [19:27] rikarends has joined the channel [19:27] wdbl: yes. Windows > Linux > OSX, imho. [19:27] _TS_: mape: i should change to watch #node.js no? ;) [19:27] rikarends: btw running nodejs on windows is pretty easy [19:28] mape: _TS_: Hmm might be more fun yeah [19:28] wdbl: however, I would not say "Linux users = idiots" or "OSX users = idiots" or anything of the sort. I don't understand why people say that about Windows though. [19:29] wdbl: just use what's useful to you. [19:29] rikarends: people are idiots whatever platform they are on [19:29] wdbl: it's just a personal preference. [19:29] _TS_: You were able to log in? [19:30] wdbl: I don't care what anybody runs, just don't talk bad about anybody, that's my motto. [19:30] rikarends: my favorite platform is wherever i can write/run/debug my code the easiest, and the windows behave in the way i want [19:31] muk_mb: So I'm new to javascript and whatnot, is there a tutorial somewhere explaining how to populate a