[00:01] sechrist: bmizerany: are you setting the field anywhere? [00:01] sechrist: SetInternalField(0, ptr); [00:02] sechrist: Handle ptr [00:02] bmizerany: sechrist: ObjectWrap::Wrap sets the field on Parser::New [00:02] sechrist: ah ok [00:02] _announcer: Twitter: "I am very impressed with both node.js and the twitter streaming api. I've spent years in POE, it's nice to see more event driven projects." -- Eduardo Arino de la . http://twitter.com/earino/status/16731221148 [00:03] sechrist: yeah dude I don't know [00:03] bmizerany: sechrist: http://github.com/ry/node/blob/master/src/node_object_wrap.h#L41 [00:03] CIA-77: node: 03Ryan Dahl 07master * r9bb8902 10/ doc/index.html : Add other OSes to website - http://bit.ly/az2lnx [00:03] sechrist: the website is under git? [00:03] sechrist: haha [00:03] bmizerany: sechrist: np. thanks for taking a look. [00:04] bmizerany: sechrist: why? does that seem odd to you? re: the website in git. [00:04] sechrist: creationix: I think it would be wise to generate the image file, then generate an index of crap and dynamically embed them with a client library [00:04] sechrist: I think that's cool, that's all [00:04] bmizerany: sechrist: ah. we did that for Sinatra too. [00:04] bmizerany: works out nicely with github-pages [00:05] sechrist: is CIA-77 a github bot? [00:05] bmizerany: sechrist: http://github.com/sinatra/sinatra.github.com [00:05] sechrist: hmm [00:06] creationix: bmizerany: just wondering, but is it possible to rename an account and keep followers? [00:06] creationix: I know renaming a project is a bit no-no [00:07] bmizerany: creationix: um. I think so. I don't think renaming something will loose followers. it will just make all the dead-links a PITA. [00:09] sechrist: bmizerany: you're a githubber? [00:09] bmizerany: sechrist: as in a team member? no. I'm Heroku. [00:09] bmizerany: sechrist: technoweenie is. :) [00:10] bmizerany: sechrist: I am on their drinking team. :) [00:10] technoweenie: bmizerany LEADS our drinking team [00:12] _announcer: Twitter: "Connect 0.0.5 released http://bit.ly/cRUI8p #nodejs" -- TJ Holowaychuk. http://twitter.com/tjholowaychuk/status/16731774879 [00:15] bmizerany: ACTION bangs head on desk again (close to drawing blood) [00:15] bmizerany: cant. lick. this. bug. err. [00:17] creationix: bmizerany: speaking of heroku and bugs... [00:17] creationix: well you know what I'm waiting on [00:17] bmizerany: creationix: my bug is with v8/node. :) [00:17] creationix: yuck [00:17] bmizerany: creationix: on...? [00:17] creationix: mainly my binary images working [00:18] charlesjolley- has joined the channel [00:18] creationix: http://sousaball.heroku.com/ [00:18] creationix: works great locally on the same version of node as you're using [00:19] creationix: bmizerany: I imagine updating node might fix it, there have been a lot of bug fixes since v0.1.92 [00:19] bmizerany: creationix: I did. I'm on .98 [00:20] creationix: hmm, how do I reset my app then? [00:21] ditesh|cassini has joined the channel [00:23] ivan has joined the channel [00:23] bjartek has joined the channel [00:25] sechrist: RFC2616, section 4.2 [00:25] sechrist: multiple of the same headers? [00:25] sechrist: that's [00:25] sechrist: retarded [00:26] sechrist: unless that has something to do with multiparting [00:26] pquerna: if there are multiple, they can be normalized into comma seperated [00:26] sechrist_ has joined the channel [00:26] pquerna: but its one reason repersenting http headers in a dict/hash format is problematic [00:27] bmizerany: creationix: oh. are you asking if I'm personally running on the latest node, or if node on Heroku is up to date? [00:27] creationix: node on heroku, sorry [00:27] pquerna: ie, you can't do, two Date: headers [00:28] technoweenie: pquerna: its also not a common use case. i remember working with headers in asp 3.0 being very awkward because it expected there to be multiple values for every header [00:29] pquerna: yes, on a practicle matter, for a client, I'd suggest not exposing the 'feature' [00:29] bmizerany: creationix: oh. it's not up to date. we still have to work on that. we're on hold with node updates for a minute. we're cranking out some projects that have been on the back burner fist. I'm itching to make our node support amazing. [00:29] pquerna: but on the server side, you should do the right thing (tm) [00:29] pquerna: even on the server side for example, it never worked right in CGI/FastCGI enviroments [00:29] pquerna: because of how they normalized extra headers anyways [00:30] markwubben has joined the channel [00:31] sechrist_: why doesn't colloquy use growl [00:31] sechrist_: bucket of fail [00:31] mikeal: colloquey is terrible [00:31] bmizerany: sechrist_: limechat. [00:31] sechrist: but limechat puts every channel in one window [00:31] sechrist: that's retarded [00:31] mikeal: creationix: did you see the streams util that I wrote? [00:31] Aikar: AndChat is better :O [00:31] creationix: mikeal: no, where [00:31] bmizerany: sechrist: no it doesn't. I turned that off. [00:31] sechrist: oh, okay [00:31] sechrist: I [00:31] sechrist: wasn't aware I could [00:31] mikeal: http://github.com/mikeal/node-utils/blob/master/streams/lib/main.js [00:32] mikeal: i haven't written tests yet [00:32] bmizerany: sechrist: you can minimize that panel. [00:32] creationix: mikeal: nice [00:32] mikeal: the multiPump is crazy [00:32] Aikar: but i got it even better, wifi hotspot and use laptop in the car :D [00:32] sechrist: bmizerany: tabs for privs, chans, etc? [00:32] Aikar: im riding in the car down the interstate right now >_> [00:32] Aikar: <3 HTC EVO [00:32] sechrist: I'd prefer a vertical menu.. I'm a vertical tab kind of guy [00:32] bmizerany: sechrist: hell. I forgot that feature existed until you brought it up. haha. [00:33] sechrist: Aikar loves dead batteries by noon [00:33] sechrist: _noon_ [00:33] creationix: mikeal: that is crazy, what does it do exactely? [00:33] Aikar: i dont watch videos at work [00:33] bmizerany: sechrist: http://skitch.com/bmizerany/dj8jr/skitch [00:33] sechrist: oh that's hot [00:33] sechrist: time to ditch collogay [00:33] Aikar: so my battery even with moderate daily use is 50% after 16 hours [00:33] bmizerany: sechrist: cmd+1..9 will hop to the respetive channel in the list. [00:33] mikeal: it pumps each readable stream in order to each writable [00:34] ryah: creationix: http://github.com/extjs/Connect/blob/master/examples/hello-world/app.js [00:34] mikeal: and it'll only pause each stream when all the writables can't write [00:34] Aikar: the evo's battery issues is due to bad apps eating battery and the battery needs conditioning [00:34] ryah: not a good hello world [00:34] ryah: looks frightening [00:34] mikeal: i need to implement some buffering on the reader tho [00:34] sechrist: it says hello world [00:34] Aikar: now ive had it since 5th it lasts a good while and i dont run bad apps [00:34] creationix: ryah: a bit much ? [00:35] ryah: yes [00:35] sechrist: ACTION waits for iphone 4 to ship [00:35] mikeal: there is more code that needs to be written on the multiPump for sure [00:35] creationix: tjholowaychuk: ryah says your hello world is a bit much ;) [00:35] mikeal: but it's a crazy idea [00:35] bmizerany: alright. I think I'm going to have to do a JS Sinatra framework for node soon, to school all you guys. :P [00:35] ryah: hello world should be one file [00:36] ryah: get('/', function () { return 'hello world\n' }) [00:36] creationix: mikeal: interesting [00:36] Tim_Smart: creationix: Hmm I'm working on http://github.com/biggie/biggie-router atm. Almost starting to look like duplicated effort [00:36] tjholowaychuk: haha :p [00:36] ryah: at least draw them in with that :) [00:36] bmizerany: ryah: if only the `function` keyword was optional [00:36] saikat has joined the channel [00:36] bmizerany: or had a nice alias [00:36] Aikar: sechrist: ive had my phone on for 12 hrs, played some game a bit, browsed market place, text a bit, i have like 5 things on background sync, with gmail and Exchange on Push, using wifi hotspot for past hour, and my batteries at 65% [00:36] sechrist: NOON [00:36] Aikar: oh and read news too [00:36] creationix: ryah: tjholowaychuk and I were actually talking about a simplified version of connect that assumes some nice defaults [00:37] tjholowaychuk: ill remove the cruft from hello world, its not express though so it wont look like that [00:39] ryah: yes [00:39] ryah: assuming defaults gets you 90% [00:41] Aikar: i know nodes meant to get away from the idea of a thread per connection type design system, but will node be adding support for threads in general to let the developer use them as they please? atm i have an app i want to rewrite in node, and oeach heavy portion is a seperate process that uses IPC to send messages back and forth. i would like to rewrite it in node and lower the process count but still have the heavier portions on a seperate thread that still has [00:42] Aria: Not generally, Aikar. Threads suck that much. Any reason the task can't be done as async tasks? [00:43] sechrist: Aikar: yes connect has multithreading crap [00:43] sechrist: the performance was juts [00:43] sechrist: b [00:43] sechrist: but that's not really solving your issue [00:43] sechrist: you need threads? node-webworkers [00:43] sechrist: or something if it blocks that much [00:43] creationix: sechrist: not threading, child processes [00:43] tjholowaychuk: thats multiple processes [00:43] sechrist: yeah [00:43] tjholowaychuk: haha [00:43] tjholowaychuk: bam [00:44] sechrist: but there's no threads [00:44] Aikar: i guess i look at code on a low level from a C++ point of view, where only one operation can be ran at a time on a single thread [00:44] Aikar: an async function can run 2 ops on a single thread at same time? [00:44] sechrist: make your IPC emit events [00:44] creationix: Aikar: node uses threads internally in the C extensions [00:44] sechrist: Aikar: that's not how it works [00:44] sechrist: there's one line of code executing at a time [00:44] sechrist: lol [00:44] creationix: obviously it's required for async fs I/O and stuff like that [00:44] Aikar: like if i have one section that does alot of heavy DB queries id like other parts to still be able to run during those queries [00:44] sechrist: internally there's threads that block and then emit [00:45] creationix: Aikar: it will by default [00:45] sechrist: yeah they wait in parallel [00:45] creationix: db queries are async [00:45] Tim_Smart: (depending on the library) [00:45] Aria: Yeah. You'd just make db queries async. Start one, and supply a callback to run when it comes back. [00:45] Aikar: like if ia query takes 1s, other stuff can still happen in the middle of that 1s right? [00:45] Tim_Smart: But someone who writes a sync db library is silly [00:45] Tim_Smart: Aikar: Yup [00:45] Aikar: ok [00:46] Aikar: well wouldnt threads still help with utlizing multicore systems (ie every system there is nowadays) or does node use threads under the hood? [00:46] pquerna: multi-process is the plan for node-products on that front right now [00:46] jakehow has joined the channel [00:46] Aria: Node uses a few threads under the hood, mostly to not block on system calls with no non-blocking equivalent. [00:46] creationix: Aikar: connect has multi-core built in [00:46] Aria: But the idea is that you go multi-process to scale to more cores. [00:47] Aria: (which makes sense, since shared stuff then has to be locked, and so often you end up starving a core anyway then.) [00:47] Aikar: ive already evaluated the possibility of reimplementing my current IPC system in node, i was just hoping to reduce using multiple processes [00:47] creationix: though I've never had a real-world need for it other than to make my synthetic benchmarks have higher numbers [00:47] Tim_Smart: Aikar: Webworkers already exist for that [00:47] Aria: How many cores do you need to keep busy, Aikar ? [00:47] pquerna: 64 :) ? [00:47] sechrist: 12 [00:47] Aikar: can you link me what this connect is? im not a heavy follower of node, i still gotta convnce someone to let me rewrite it in node [00:47] Tim_Smart: Aikar: The network is the bottleneck in most cases, not the CPU [00:47] Aikar: Aria: i mean just to get the work done faster :P [00:47] creationix: http://extjs.github.com/Connect [00:48] tjholowaychuk: ACTION gettin crunk while coding [00:48] creationix: tjholowaychuk and I work on connect as our day jobs [00:48] Aikar: and yoiu keep saying web workers i mean server side lol, is there an equiv of web workewrs on server side too? [00:48] Tim_Smart: Aikar: Yes [00:48] Aikar: sweet [00:48] Aikar: esier than spawning a new process [00:48] tjholowaychuk: creationix: lies! i get harassed by my girlfriend for a living [00:49] Aikar: sorry for mistypes im on laptop in car in some deep country and im lagging pretty bad my 3g conn is lagging out [00:49] Tim_Smart: Aikar: I can't remember the repo URL though [00:49] creationix: tjholowaychuk: :D [00:49] tjholowaychuk: its weird i get bugged more now that shes gone lol not cool [00:49] creationix: Tim_Smart: isn't it kriszyp's repo [00:49] Tim_Smart: creationix: I thought pgreiss was working on it [00:49] creationix: hmm, no [00:50] creationix: this one http://github.com/cramforce/node-worker ? [00:50] Aikar: oh so its something to add on to node and not on by default? [00:50] creationix: Aikar: node has the ChildProcess API build in [00:50] creationix: web workers will be added in a later version [00:50] Aikar: yeah i saw that, thats what i meant by i could reimplement my current IPC syhstem into node [00:51] sechrist has joined the channel [00:51] Tim_Smart: creationix: http://github.com/pgriess/node-webworkers/ [00:51] creationix: Tim_Smart: yes, that's the one [00:51] Aikar: which i still might do, so i could have node children on a PHP parent and vice versa [00:51] creationix: pgriess: knows the most about multicore stuff anyway [00:52] Aikar: im just mainly looking for a clean way to handle a ton of clients for a server. a game server to be precise [00:52] pgriess: aikar: questions about web workers? [00:52] Aikar: im writing a websocket server for a game im working on [00:52] sechrist: bmizerany: how do I turn off the stupid bottom window [00:52] Aikar: and i know php, which im currently using for development, isnt going to scale to high levels [00:52] Aikar: so i really wanna redo it in node [00:52] sechrist: Aikar: what are you doing in php that won't scale [00:53] konobi: ACTION calls bullshit [00:53] Aikar: a websocket server [00:53] konobi: =0P [00:53] sechrist: well yeah php shouldn't be keeping anything persistent [00:53] konobi: ah, fair enough... that's true [00:53] Aikar: trust me im a php enthusiast, but so manhy people give me shit for writing servers in php lol [00:53] sechrist: ACTION hi5s konobis [00:53] Tim_Smart: sechrist: PHP doesn't scale for anything with long transactions [00:53] sechrist: Tim_Smart: I just said that [00:53] pgriess: aikar: so did you have a question about the web workers stuff? or were you just wondering if there was an impl for node? [00:53] Aikar: so far at the levels of CLI implementationsive used PHP with ive had no issues with memory or cpu [00:54] sechrist: 5.3 has a GC though [00:54] Aikar: we was talking about solutions and someone informed me about them and said you know more about them is all [00:54] sechrist: or reference sweep [00:54] sechrist: calling it a GC is too kind [00:54] Aikar: i got the pages open and will look at em later at home [00:54] pzich has joined the channel [00:54] creationix: Aikar: in my experience you usually don't need more than one core for websockets [00:54] pgriess: aikar: ok. let me know if you run into any problems [00:54] creationix: but in case your app is cpu heavy, the node way is to use several processes and talk to eachother over ipc [00:55] Aikar: well i have atm the parent process handles the main socket and the IPC roouter, then a system that runs on a 10ms interval and does a TON of DB work (NPC AI) that uses the most cpu [00:55] LOLWUT__ has joined the channel [00:55] Aikar: so i was wanting to put the npc ai on its own thread so it doesnt affect the rest of the system [00:55] creationix: Aikar: is the cpu work in the db or the app [00:55] bmizerany: sechrist: grab it with the mouse and drag it down until it's no more. [00:56] sechrist: yeah that's what I did but that's pretty lulz [00:56] Aria: How long-running are the NPC's AI actions? Single, huge computations? Or db-act-db-act-db-act? [00:56] sechrist: the name highlighting to bigger font = awesome [00:56] Aikar: id imagine its mainly DB thats using the most CPU, but i havnt profiled that part extensively yet since its acceptable levels [00:56] Aikar: Aria: mainly writes to update their current position of moving [00:56] creationix: Aikar: well if it's the db eating the cpu, then you only need one node process for sure [00:57] Aikar: and then anyone of them thats attacking other players has stuff too [00:57] creationix: node uses non-blocking for all I/O [00:57] creationix: so it's not busy while waiting for the db [00:57] konobi: ACTION wonders if node exposes socketpair() yet [00:57] creationix: konobi: yep [00:57] Aria: Sounds like you don't need threads there at all. [00:57] Aria: Lots of short actions punctuated by IO [00:57] konobi: creationix: oh... shiny... where abouts? [00:57] Aikar: under php i def do, since DB calls are blocking lol ; ; [00:58] creationix: konobi: ahh private api [00:58] creationix: http://github.com/extjs/Connect/blob/master/bin/connect#L408 [00:58] Aikar: but yeah tis is why im wanting to rewrite it in node [00:58] Aikar: wow im hitting some bad lag atm >< [00:58] Aikar: so is extjs helping out on node? [00:58] creationix: yep [00:58] creationix: :D [00:58] Aikar: sweet [00:58] konobi: creationix: using that for IPC then? [00:58] Aikar: i really like their UI system [00:58] creationix: konobi: not yet, I don't have a real need for ipc yet [00:58] Aikar: i havnt made anything too complex with it, but i like how it all works together [00:59] creationix: I guess it's technically IPC when I pass the fd to the child processes [00:59] creationix: Aikar: did you see the new mobile stuff [00:59] deanlandolt_home has joined the channel [00:59] Aikar: nowonder my screen was so dark, i still had my sunglasses on >< [01:00] LOLWUT__: Aikar, writing a dungeon crawler? :) [01:00] Aikar: LOLWUT__: no, not really exposing it to the open public yet, still in early stages of dev [01:00] creationix: Aikar: you should write it using connect and Sencha Touch [01:00] creationix: http://www.sencha.com/ [01:00] creationix: that would be awesome [01:00] LOLWUT__: cool, I've been having a similar idea actually [01:01] LOLWUT__: I had a PERL script doing basically what node does [01:01] LOLWUT__: just not nearly as nice [01:01] LOLWUT__: ;) [01:01] Aikar: i just got some critical gameplay elements n this past week/today heh. now its at least 'playable' to a degree with some dynamicness, but no real 'goals' or achievements yet lol [01:01] LOLWUT__: cool :) [01:01] LOLWUT__: I'd really like to see a return to old adventure games [01:01] Aikar: and its mouse based atm so i dunno what ill do about mobile [01:02] LOLWUT__: ahhh [01:02] LOLWUT__: see I'm thinking of something mud-like [01:02] Aikar: its an action based game [01:02] LOLWUT__: basically a graphical mud that doesn't look like it was done in paint [01:02] Aikar: hince me saying npc's shooting at you :P [01:02] LOLWUT__: yeah :) [01:02] Aria: Hehe. [01:02] LOLWUT__: have you seen akihabara? [01:02] Aikar: neveer heard of it [01:02] LOLWUT__: it's a very impressive library [01:02] LOLWUT__: I've been attempting to help maintain documentation [01:03] LOLWUT__: it's basically canvas-driven game library functions [01:03] LOLWUT__: might help speed your project along :) [01:03] Aikar: ive got a gigantic js front end i completely developed (well besides the use of jQuery for dom based stuff), so im really interestged in writing the server side in JS too and have it completely written in JS [01:03] LOLWUT__: ohhhh [01:03] Aikar: ill go ahead and say it makes use of Google maps [01:03] LOLWUT__: yeah if that's written no need replacing [01:04] LOLWUT__: oh nice [01:04] LOLWUT__: I've been trying to think of fun ways to incorporate that stuff into games [01:04] Aikar: so your pos is latlng coordinates [01:04] LOLWUT__: nothing's really dawned on me though [01:04] bpot has joined the channel [01:04] Aikar: i dread having to update to google maps 3 tho, they changed syntax alot >< [01:04] LOLWUT__: the idea I've had brewing revolves a lot around text-driven adventuring [01:04] LOLWUT__: and online area creation [01:04] Aikar: google.maps.X instead of GMapp2 etc [01:05] LOLWUT__: yeah [01:05] LOLWUT__: I was looking at the apis [01:05] LOLWUT__: and, well, yikes. [01:05] LOLWUT__: looks like that wouldn't be fun to port over [01:06] Aikar: hope my friend likes this car. hes tired of having to stay with his gma driving her car lol (his broke down ), then he can finally come back to the apt [01:06] creationix: pquerna: where is velocity? [01:06] pquerna: santa clara [01:06] wang has joined the channel [01:06] creationix: I'd be down to coming [01:06] pquerna: http://en.oreilly.com/velocity2010 [01:06] creationix: ACTION loves node meetups [01:07] Aikar: i got node compiled on my server other day [01:07] Aikar: so i am rdy to start messing with it [01:08] Aikar: just gotta get my boss to stop wuith wanting new features and give me a few weeks to rewrite it all lol [01:08] wang: anyone know when heroku's nodejs might go public? (or if they'll take new beta tester) [01:08] Aikar: ( im only one working on it) [01:08] MattJ: Good luck :) [01:08] ryan_gahl: Aikar: if you solve that problem, bottle it up and sell it [01:08] creationix: wang: ask bmizerany [01:08] Aikar: lol [01:08] wang: ok thanks [01:09] Aikar: well see this is a side project OUTSIDE of our actual job. [01:09] Aikar: it was just his idea we had, and im making it happen (hes not a dev). hes constantly thinking of new ideas to make to bring in more money [01:09] Aikar: so were not under any real deadlines lol [01:09] ryan_gahl: is he techy at all? [01:09] Aikar: yea [01:10] ryan_gahl: ah [01:10] Aikar: he just likes to see progress lol [01:10] Aikar: so spending 3-4 weeks rewriting it, nothing really new is added [01:10] ryan_gahl: was going to suggest telling him the Internet is now running on javascript [01:10] ryan_gahl: everyone has to switch over, kind of like the DTV thing [01:10] Aikar: he really wannts to get a first prototype build out... but honestly his desire for a prototype 1 is lame and unfun lol [01:10] sechrist: okay so on the mac keyboard itself how do you skip to the beginning of a line in iTerm [01:11] sechrist: command + left and right change tabs [01:11] sechrist: im dyin squirtle [01:11] Aikar: i really erather wait and get it donealmost completely according to our ideas, then unleash it in an almost complete state [01:11] ryan_gahl: what's the backend currently? [01:11] Aikar: PHP [01:11] ryan_gahl: php? [01:11] LOLWUT__: that's the best way really [01:11] ryan_gahl: ac [01:11] Aikar: over multiple processes [01:11] ryan_gahl: ic [01:11] LOLWUT__: (the release process) [01:12] Aikar: i dont like releasing stuff in a rough state unfinished. then the people who try it and dont like it dont really come back when youj do release it [01:12] _announcer: Twitter: "Call me stupid, but what's the benefit of this V8 JavaScript / node.js stuff? What does it give you?" -- Ben Humphreys. http://twitter.com/benhumphreys/status/16735360568 [01:12] LOLWUT__: users are very finnicky, the less bugs you can expose them to near-release and post, the better [01:12] ryan_gahl: stupid [01:12] LOLWUT__: excuse me, users, ESPECIALLY gamers, ... [01:12] ryan_gahl: oh, he didn't hear me [01:12] LOLWUT__: he's stupid [01:12] LOLWUT__: lol. [01:13] kersny has joined the channel [01:14] ryan_gahl: Aikar: FWIW I currenly have to slog through the rest of the year at least in non-node until my biz team will let me re-do the architecture in node [01:14] ryan_gahl: but doesn't stop me from playing [01:15] ryan_gahl: gotta be ready with a framework when that time comes [01:15] LOLWUT__: yeah, gonna have to start talking up node around the office [01:15] LOLWUT__: half the frameworks devs are using at my shop are shoddy to begin with [01:16] Aikar: lol. yeah i work for too big of a company to implement node in our real jobs system. doing portal sites and other stuff (not released yet so i cant say what it is). you know how they are about using old stable versions [01:16] LOLWUT__: yeah... [01:16] LOLWUT__: well I'm one of the quality assurance / security guys there [01:16] Aikar: were already gonna be forcing php 5.3 on them, but a non 'usual' thing like node they will prolly say 'whats that' [01:16] ryan_gahl: ACTION wishes i could get hired by a company to be do bleeding edge r&d work only [01:16] LOLWUT__: and let's just say [01:17] LOLWUT__: a lot of the devs there [01:17] LOLWUT__: aren't passing muster right now [01:17] LOLWUT__: with the tools that they havd [01:17] ryan_gahl: ACTION wishes HE... [01:17] LOLWUT__: *have [01:17] Aikar: see we control our dev environment, got some instances up on EC2. so we dev on what we want [01:17] LOLWUT__: well tbh the benefits of node should be immediately apparent to MOST web dev shops [01:17] Aikar: and then when we pass it on to prod.... well itll be using 5.3 features so they kind of have to ;) [01:17] ryan_gahl: creationix: you're the extjs dude right? [01:17] LOLWUT__: "what, you mean our frontend people can develop super fast backends now? SCORE!" [01:18] ryan_gahl: or is that tj [01:18] LOLWUT__: personally I'm just glad they stopped using symfony [01:18] LOLWUT__: and modx [01:19] Aikar: i work for a telco heh, so i think im lucky we have so much freedom with our dev environment at least [01:19] LOLWUT__: really? [01:19] LOLWUT__: you'd think it'd be kinda the opposite, what with proprietary systems etc [01:19] Aikar: that would be true if it was OUR propeitary systems lol [01:19] LOLWUT__: do you get to play with haskell on the job? [01:19] LOLWUT__: ahhh [01:19] bmizerany: sechrist: did you say that the test/proto_test.js wasn't working for you? [01:20] Aikar: atm we use a 3rd party system and one of my job duties is working on breaking away from that but from a web stand point theres not much special there [01:20] LOLWUT__: nice [01:20] Aikar: i like it here tho, its very relaxed [01:21] Aikar: my boss is very cool [01:21] LOLWUT__: same where I'm at [01:21] Aikar: our group is kinda aliented, were not under IT [01:21] Aikar: IT gets mad we dont have to go through CR and shit [01:21] LOLWUT__: lol [01:21] Aikar: were sorta agile [01:21] LOLWUT__: yea [01:21] LOLWUT__: the environment I'm in [01:21] LOLWUT__: is agile on meth [01:22] LOLWUT__: but it keeps things interesting [01:22] LOLWUT__: never have to stick with a project for months [01:22] LOLWUT__: like the devs [01:22] tmpvar has joined the channel [01:22] Aikar: i started programming at 16, and even in college the php classes and stuff i knew it all [01:22] LOLWUT__: self taught, which is a blessing and curse [01:23] Aikar: but when it came to this job, i didnt really havcve much profesional experience other than personal projects, so didnt ask for no mid level pay grade [01:23] LOLWUT__: yeah I hear that [01:23] Aikar: so im trempted to switch jobs to get better pay, but i like the environment too much [01:23] LOLWUT__: I'm working on my second round of revisions to my pay [01:23] Aikar: this job is pretty much stress free, and my commute is 10 minutes w/o any traffic [01:23] Aikar: to and from [01:24] LOLWUT__: very nice [01:24] LOLWUT__: my commute's fairly long, but I relax basically the whole day [01:24] Aikar: im right on the bleeding line of the city, so if i switch jobs itll be in downtown instead and then ill be in the heavhy traffic :/ [01:24] LOLWUT__: and wreak havok when I have things to do [01:24] Aikar: its like major mall - half a mile - my house - countryish area lol [01:25] LOLWUT__: lol [01:25] _announcer: Twitter: "@kneath seems like the pubnub service would be good glue for such a service... of course one could setup own node.js server..." -- Nicholas Orr. http://twitter.com/SoreGums/status/16736146160 [01:25] LOLWUT__: pubnub is a ripoff [01:25] LOLWUT__: for anyone not a company [01:25] Aikar: i didnt like pubnubs attitude on their site about websockets [01:25] LOLWUT__: seriously [01:25] LOLWUT__: me either [01:25] LOLWUT__: once websockets becomes standard they're going to have to revamp [01:26] LOLWUT__: that's probably why they say all that [01:26] Aikar: and charging for each page load to connect to the stream? wtf [01:26] LOLWUT__: well it's in bundles [01:26] LOLWUT__: but my problem with it [01:26] LOLWUT__: is they pull that microsoft slant on it [01:26] LOLWUT__: where you're not talking real currency anymore [01:26] LOLWUT__: and it's down to points [01:26] LOLWUT__: etc [01:26] Aikar: well it said ".subscribe" costs X credits [01:26] LOLWUT__: purposefully convoluted [01:26] LOLWUT__: to look like a deal [01:26] Aikar: but in a js client side world, a page load would recall .subscribe [01:27] LOLWUT__: ah true [01:27] LOLWUT__: well, and call me crazy [01:27] LOLWUT__: but some SaaS is good [01:27] LOLWUT__: but for persistent services like this? no way. [01:27] Aikar: well they are basically running the long polling servers for you [01:27] Aikar: but its something you can easily do yourself yes [01:28] LOLWUT__: well [01:28] Aikar: just corps with money are too stupid to realize that [01:28] LOLWUT__: easily is up for debate [01:28] LOLWUT__: :P [01:28] Aikar: i could do it in a day :p [01:28] LOLWUT__: with nodejs, absolutely [01:28] LOLWUT__: yeah, I mean I could as well [01:28] Aikar: even php [01:28] LOLWUT__: but when it comes to lonpolling and all that [01:28] LOLWUT__: when I had done my initial research [01:28] LOLWUT__: it seemed like everyone was trying to offer up a full new http server with it [01:28] LOLWUT__: and all I want is my longpolling you know? [01:29] Aikar: set the proper config to not terminate process (same stuff as a CLI app) and simply setup an event loop that waits for new data and closes the connection aftger send [01:29] LOLWUT__: yeah, I ended up writing something in PERL [01:29] LOLWUT__: that did it [01:30] LOLWUT__: because other stacks of software were just too bloaty [01:30] Aikar: i really dont like perls syntax so i dont care to learn it lol [01:30] LOLWUT__: then I stumbled on nodjs [01:30] LOLWUT__: literally a week later [01:30] LOLWUT__: lol [01:30] Aikar: lol [01:30] LOLWUT__: fortunately select and poll aren't terribly involving in perl [01:30] LOLWUT__: so it wasn't much effort used [01:30] Aikar: yeah im mostly versed in PHP so i would have done everything in php, but my JS experience has gotten good lately and now ive found node id prolly use it for cli stuff too [01:30] LOLWUT__: yeah [01:31] Aikar: wtf my friend go [01:31] Aikar: its 9:30 rdy to go home lol [01:31] LOLWUT__: I was doing a video server thing in php/js [01:31] Aikar: he better not have paid for that car and headed phome w/o telling me [01:31] Aikar: and me sitting in this guys yard for 20 mins [01:31] Aikar: nvm there he is [01:31] LOLWUT__: lol [01:32] LOLWUT__: so have you played much with buffers at all? [01:32] Aikar: binary buffiers? [01:32] softdrink has joined the channel [01:32] LOLWUT__: yeah [01:33] LOLWUT__: I'm thinking about maybe looking at doing a video streaming server to get binary buffers down [01:33] LOLWUT__: and have somethin cool to show for it [01:33] Aikar: wwell not much in an interpreted language, but im also a C++ dev where i work on an app thats a deep level hack for a game, low level hooks, packet manipulation/injection [01:33] Aikar: http://windower.net pretty popular app [01:33] LOLWUT__: yeah c/c++ you just null-terminate etc [01:34] Aikar: i know how to work with the data, but i didnt find all the hook entry points and such, thats still over my head on ASM hackiing [01:34] Aikar: but yeah i "understand" binary data thanks to that experience [01:34] LOLWUT__: ah god, do not miss reverse engineering, lol [01:35] LOLWUT__: well I meant specifically in the nodejs context [01:35] LOLWUT__: like if you've messed with them [01:35] LOLWUT__: and how I might pack a file into a buffer as binary data [01:35] Aikar: ive not done anny work in node yet [01:35] Aikar: only compiled it [01:35] LOLWUT__: ohhh ok [01:35] LOLWUT__: it's super fun, btw. [01:36] Aikar: ok well hes buying the car so i gotta switch to driver seat, bbl maybe [01:36] LOLWUT__: I don't think I've had this much fun with an interpreted language since I learned perl [01:36] LOLWUT__: later dude [01:36] mjr_: If you guys want to mess with packet inspection in JavaScript, my node_pcap stuff is getting more and more useful all the time. [01:36] mjr_: No injection API yet, but soon. [01:37] LOLWUT__: oh neat [01:37] LOLWUT__: I definitely be interested in playing with it [01:38] mjr_: http://github.com/mranney/node_pcap [01:38] LOLWUT__: cool thanks :) [01:39] mjr_: All of the packets are decoded into JavaScript objects, but not many protocols are decoded yet. [01:39] hdon has joined the channel [01:39] mjr_: HTTP is pretty well supported though. [01:39] LOLWUT__: ah ok [01:39] LOLWUT__: TCP/UDP is about all I'd ever have use for [01:39] LOLWUT__: I think [01:39] mjr_: It certainly does that. [01:39] LOLWUT__: awesome [01:40] LOLWUT__: seems like a lot of people are developing really nice addons and such [01:40] LOLWUT__: has anyone considered doing a CPAN-esque repository? [01:40] Aikar: or nvm he wasnt happy with it [01:41] LOLWUT__: wb [01:41] Aikar: nice wasted 110 miles lol [01:41] LOLWUT__: aw man [01:41] Aikar: well, 220 [01:41] LOLWUT__: you or him? [01:41] LOLWUT__: lol [01:41] Aikar: my car [01:41] LOLWUT__: ahhhh [01:41] Aikar: his is broke down so we was going to get him a new one [01:41] Aikar: guy was 110 miles out [01:42] pquerna: LOLWUT__: http://github.com/isaacs/npm [01:42] chilts: and isn't there also one called 'Kiwi'? [01:43] chilts: or is that different? [01:43] LOLWUT__: dunno :P [01:43] LOLWUT__: I'm pretty new to this whole thing myself [01:43] chilts: ah yeah, I guess I was asking others :) [01:43] chilts: otherwise you wouldn't have asked if anyone had considered doing one :) [01:43] mjr_: There are a few different ways to manage packages with node. [01:43] LOLWUT__: I was overhearing about NPM, presumably that's a command line package manager [01:44] LOLWUT__: I should have been more specific [01:44] LOLWUT__: I meant cpan.org [01:44] LOLWUT__: like the online repository w/docs [01:44] mjr_: Since isaacs hangs out here a lot, and there seems to be good momentum behind it, I recommend everyone use npm. [01:44] LOLWUT__: in a searchable format [01:44] pquerna: LOLWUT__: i believe the intention would be to add things lke that to npm, it just doesn't exist yet ( a nice webui) [01:44] LOLWUT__: sometimes I like to just pour over documentation to addons [01:44] LOLWUT__: without having to grab said addons [01:44] LOLWUT__: ahhh ok [01:46] mjr_: Several people are working on making the interface to npm more user friendly. [01:46] mjr_: It's coming along pretty nicely. [01:46] LOLWUT__: cool :) [01:46] LOLWUT__: seems like a very active user base [01:46] mjr_: pquerna: now that you've conquered datagrams in node, is there else you are working on? [01:47] pquerna: creating shareholder value [01:47] pquerna: oh wait uh [01:47] rauchg: pquerna: now that you've reached the stars [01:47] rauchg: is it lonely up there ? [01:47] mjr_: Me, I've been busy building brand identity and demonstrating thought leadership. [01:48] sechrist: node.js needs to run in space [01:48] LOLWUT__: brand identity, eh? [01:48] LOLWUT__: sechrist, node.js powered sputnik must happen. [01:48] mjr_: sechrist: http://server-sky.com/ [01:48] sechrist: sputnik? more like sputnik.js [01:48] LOLWUT__: yesssss [01:48] ryan_gahl has joined the channel [01:49] LOLWUT__: we can use the leonard nimoy clip [01:49] Tim_Smart: jquery style routing ftw [01:49] LOLWUT__: from civ iv [01:49] LOLWUT__: where he quotes sputnik [01:49] sechrist: require('scotty').beamMeUp(); [01:49] LOLWUT__: easily the funniest piece of voiceover in that game [01:49] pquerna: mjr_: open to suggestions; But I've not got anything specific I need extra out of node.js right now. I do want to make a caching reverse proxy load balancer thing for fun; (I want to generate the server code on the fly based upon the configuration file, and see how good that JIT really is), but thats mostly an experiment in server design. (think... somehting like VCL in varnish) [01:49] creationix has joined the channel [01:49] LOLWUT__: nimoy: "beep ... beep .... beep ... beep" [01:50] Aikar: sechrist: about that, would require include the file every time you call it or does it have like require_once in php? [01:50] keyvan has joined the channel [01:50] Aikar: behave [01:50] pquerna: mostly its down to being back in the trenches at work = limited spare time :) [01:50] sechrist: I'm not sure how node.js's require does it [01:50] sechrist: I see people doing require() in loops [01:50] sechrist: I want to kill them. [01:50] LOLWUT__: lol [01:50] sechrist: YES THAT MEANS YOU [01:50] LOLWUT__: why would you do that? [01:50] creationix: Aikar: it's like require_once [01:50] LOLWUT__: doesn't require just set variables and return the object? [01:51] tmpvar: yeah, require() caches [01:51] sechrist: tmpvar: HI5 [01:51] tmpvar: hence the whole hot-loading problemo [01:51] LOLWUT__: that's what I thought :) [01:51] mjr_: pquerna: yeah, I'm bogged down from work on node first by vacation and now by work. [01:51] tmpvar: hot-reloading rather [01:51] LOLWUT__: tmpvar, couldn't you theorhetically load new code on exit? [01:51] sechrist: tmpvar: store version in redis.. require('blah-' + rev.toString()); [01:51] LOLWUT__: through the eval stuff? [01:52] tmpvar: oh, using evil? sure :P [01:52] LOLWUT__: haha [01:52] LOLWUT__: I never claimed it'd be GOOD [01:52] sechrist: actually I just solved the hotloading problem [01:52] tmpvar: how's that? [01:52] LOLWUT__: really? [01:52] sechrist: give me props [01:52] LOLWUT__: ACTION slow clap [01:52] tmpvar: code or it isnt real [01:52] sechrist: store revision in datastore.. require('blah-' + rev.toString()) [01:53] sechrist: it'll load it once [01:53] keyvan has joined the channel [01:53] sechrist: cache subsequent [01:53] sechrist: if the rev changes [01:53] sechrist: it'll use it [01:53] tmpvar: how do yup update the rev? [01:53] sechrist: booyah [01:53] sechrist: redis/couchdb/mongodb [01:53] tmpvar: wow. how do you update the rev? [01:53] sechrist: load it on an interval [01:53] pquerna: I don't know the internals of v8, but uh, will that ever 'release' the cached bytcode? [01:53] sechrist: setInterval(function(){getnewrev()},5000); [01:53] pquerna: s/bytecode//code/ [01:54] sechrist: commence the slow claps [01:54] tmpvar: pquerna, not sure.. im guessing it gets garbaged once there are no hanging refs [01:54] LOLWUT__: ACTION slow clap [01:54] greencoder has joined the channel [01:54] sechrist: I mean my approach makes sense [01:54] tmpvar: sechrist, thats a lot of machinery [01:54] sechrist: if you could clear the require cache [01:54] deanlandolt1: sechrist: require(someNonString) breaks a lot of things [01:54] sechrist: that is a string [01:54] deanlandolt1: no -- i mean someSymbol [01:55] sechrist: you mean a static char? why would that matter [01:55] sechrist: I would assume it's all the same in js [01:55] deanlandolt1: not when you have any kind of preprocessing [01:55] deanlandolt1: so, for instance if you want to share any code in the browser [01:55] sechrist: var revision_string = 'blah-' + rev.toString(); [01:55] sechrist: require(revision_string) [01:56] deanlandolt1: or you're using something like nodules (which, btw, solves the hotloading problem /and/ the browser loading problem) [01:56] sechrist: it does? [01:56] sechrist: oh okay [01:56] creationix: I still think preprocessing like that is too fragile [01:56] deanlandolt1: that's what i meant by someSymbol [01:56] deanlandolt1: creationix: you think nodules is fragile? [01:56] sechrist: require('askdjsldkajskdljaskldja') [01:56] sechrist: var blah = 'askdjaskdajsdlkjakdjadljad' require(blah) [01:56] sechrist: not the same? [01:57] deanlandolt1: sechrist: yeah, not the same...i'm not saying it's /right/..just that it's not the same [01:57] sechrist: oic [01:57] creationix: sechrist: correct, they are parsing the js source [01:57] creationix: not executing it [01:57] ryan_gahl: nodules ftw, btw [01:57] deanlandolt1: it makes it impossible (without narcissus or some such) to do any dependency analysis [01:57] sechrist: gotcha [01:57] LOLWUT__: never used nodules [01:57] LOLWUT__: never heard of [01:57] LOLWUT__: jeez, I need to brush up [01:57] sechrist: how does it solve the browser problem? that's nuts [01:57] sechrist: revisioned serves? [01:57] creationix: doesn't work with npm does it? [01:58] creationix: since npm changes the require path on the fly [01:58] sechrist: why would something need to work with npm [01:58] sechrist: wait what [01:58] sechrist: npm does not [01:58] ryan_gahl: http://github.com/kriszyp/nodules [01:58] sechrist: isaacs is like really against modifying anything in code [01:58] sechrist: kiwi does the require() hacks [01:58] creationix: of course nodule and npm aren't likely to be used together [01:58] ryan_gahl: that reminds me... [01:58] ryan_gahl: kriszyp: ping? [01:58] mjr__ has joined the channel [01:58] sechrist: ACTION brb food [01:58] deanlandolt1: yeah, kris was working iwth isaacs to make it work beautifully with npm -- there's no reason why it couldn't [01:59] ryan_gahl: calling kriszyp [01:59] ryan_gahl: :) [01:59] ryan_gahl: meh, will post to persevere list again i spose [01:59] deanlandolt1: ryan_gahl: whatcha need? [02:00] ryan_gahl: just wanted to hound him about that patch i submitted the other day re: "$ nodules -refresh app.js" [02:00] deanlandolt1: oh, yeah, your nodules patch [02:00] deanlandolt1: yeah, that's awesome btw :) [02:00] LOLWUT__: lol, man, it's really dorky, but nodejs is like seriously tempting me to write a MUD [02:00] ryan_gahl: my patch-attempt rather [02:00] tmpvar: blarg, Mesa/EGL is a pain to get building without xorg [02:00] deanlandolt1: LOLWUT_ that's actually the reason kriskowal (behind narwhal and a LOT of commonjs) is so involved in this stuff :) [02:01] LOLWUT__: really? [02:01] LOLWUT__: I'm not alone? [02:01] LOLWUT__: :D [02:01] creationix: sechrist: http://github.com/isaacs/npm/blob/master/lib/build.js#L229 [02:01] deanlandolt1: heh, no -- that's how this whole adventure started with him...at jsconf he was lamenting that one day he may be able to actually get back to writing his MUD [02:01] ryan_gahl: deanlandolt1: is the persevere list a kosher place to talk about all those sub projects of Kris's? [02:02] LOLWUT__: I should talk with him sometime [02:02] deanlandolt1: ryan_gahl: certainly, though w/ nodules the node list would probably be even more kosher [02:02] LOLWUT__: that was the whole basis of the concurrent design I was building in perl [02:02] LOLWUT__: to have a mud framework [02:02] ryan_gahl: true, thx [02:02] LOLWUT__: wanted to recreate one I administrated on back in the day [02:03] LOLWUT__: but don't have access to source [02:05] kersny has left the channel [02:06] kersny has joined the channel [02:06] pquerna: mjr__: actually, there isn't a TODO file anywhere is there. only the github issues.. but.. hmm. [02:08] mscdex: i think node.js 0.2 should be renamed: Node.JS 2000 [02:08] ryan_gahl: lol [02:08] mscdex: we'll gain more people that way [02:09] LOLWUT__: node 9001 [02:09] ryan_gahl: Knowed.JS [02:09] LOLWUT__: fix'd [02:09] deanlandolt1: mscdex: then we'd have to wait for Node.JS XP for stability [02:09] visnup has joined the channel [02:09] LOLWUT__: and then Node.JS vista would ruin it all [02:10] mscdex: 2001: A Node Odyssey [02:10] LOLWUT__: lol, I like that. [02:10] tmpvar: woot, I think I got it :) [02:11] LOLWUT__: in b4 easter egg fault in the ae-35 unit exception [02:11] mscdex: starring Justin Long as Ryan Dahl [02:11] mscdex: and JimBastard as himself [02:11] LOLWUT__: I'd probably fall to the ground laughing if a compiler/interpreter ever did that [02:11] mtodd_ has joined the channel [02:13] mscdex: someone should port ascii star wars to node [02:14] LOLWUT__: on it. [02:14] deanlandolt1: does it have a license :) [02:14] LOLWUT__: it's ok, I'll just double every character on the screen [02:14] mscdex: http://www.asciimation.co.nz/ [02:16] deanlandolt1: if you thought patorjk was a douche, george lucas is a real ass [02:20] _announcer: Twitter: "JEE has nothing on the sheer madness of Javascript. I need to buy "Javascript: The Good Parts". I wish you could use prototype in node.js" -- markgunnels. http://twitter.com/markgunnels/status/16739492376 [02:21] mscdex: someone tell that guy about jsdom! [02:21] mscdex: :P [02:21] _announcer: Twitter: "@LabThug JEE has nothing on Javascript's OO model. I need to buy "Javascript: The Good Parts". Wish you could use prototype in node.js." -- markgunnels. http://twitter.com/markgunnels/status/16739564673 [02:23] tmpvar: :) [02:23] tmpvar: i still need to find the guy who was working on readability + jsdom [02:23] tmpvar: if anyone knows, let me know [02:25] ncb000gt has joined the channel [02:25] ryan_gahl: hi tmpvar [02:25] tmpvar: hey [02:25] tmpvar: hello ncb000gt [02:26] ryan_gahl: so, not sure if you saw my little question at the end of dealing with joe the troll earlier... [02:26] tmpvar: possibly not [02:26] ryan_gahl: is jsdom + node-htmlparser (proper) good to go? [02:26] ryan_gahl: as in tautologistics latest [02:26] ncb000gt: tmpvar: hey man [02:26] ryan_gahl: or do you not know [02:26] tmpvar: right now its the default, but it uses Dav Glass' fork [02:26] ncb000gt: how goes it? [02:27] ryan_gahl: yeah, that what i mean... are you going back to taut's newer code soon? [02:27] tmpvar: ncb000gt, goes alright. trying to build mesa (egl) for use with kms without xorg. uphill battle heh [02:27] derferman has joined the channel [02:28] zaach has joined the channel [02:28] tmpvar: ryan_gahl, I'd like to not include any parser by default. I have a strategy for doing so, but it means breaking the current api :/ [02:28] ryan_gahl: break it! [02:28] ryan_gahl: :) [02:29] Tim_Smart: creationix: Working example of biggie router http://gist.github.com/447815 [02:29] ryan_gahl: yes, any parser would rock --- but ok, so as of right now, stick with the davglass fork that's in your lib [02:29] tmpvar: ryan_gahl, yeah, I guess I could tag and veer in that direction [02:29] creationix: Tim_Smart: my that looks a lot like connect ;) [02:30] tmpvar: ryan_gahl, for the near future, yes [02:30] Tim_Smart: creationix: I like the jquery style chaining for making layers [02:30] ryan_gahl: k thx [02:30] tmpvar: i'd like to get Aria's stuff going [02:30] creationix: so does tjgholowaychuk [02:31] ryan_gahl: you mean tjgotalittledrunk? [02:31] ncb000gt: tmpvar: haha nice. i'd imagine it's more like an up-mountain battle. [02:31] Tim_Smart: creationix: I haven't tried benching it yet. I'll compare a hello world to connect [02:31] ryan_gahl: he's all "i'm working and getting crunk, lmao" [02:31] mikeal has joined the channel [02:32] tmpvar: ncb000gt, well. I had it working at one point ALMOST [02:32] ncb000gt: haha [02:32] creationix: yeah, tj works from home [02:32] tmpvar: was throwing me some refreshRate > 0 assertion error [02:32] ncb000gt: your sentence contradicts itself [02:32] tmpvar: but it build/linked/etc etc [02:32] mde: creationix: I think we've got Ch 1. draft mostly done. I'm going to do a little copy-edit tonight. [02:32] ncb000gt: ahh nice [02:32] mde: creationix: After I commit tonight, can you give it a final once-over? [02:32] ncb000gt: so, the big question, why's your refresh rate suck? [02:32] creationix: mde: awesome, It's family night when I get home from work, but I might be on afterwards [02:32] creationix: mde: sure thing [02:33] mde: creationix: Once you give me the go-ahead, I'll pass it along to the Man. [02:33] creationix: mde: ok, I'll check it over then [02:33] tmpvar: ncb000gt, oh I didnt mention? I'm doing this inside of vmware with the vmwgfx staging driver. Honestly, I think this is where I crack and go insane [02:33] mde: Sweet. [02:33] creationix: mde: so was my section long enough or did you end up expounding on it [02:33] mde: creationix: No, I think it's fine for now. [02:34] mde: There'll be a bunch of feedback, and we'll have to make changes. [02:34] creationix: ok, I really have no clue, that's why I'm asking [02:34] creationix: I can't wait till the pdf goes on sale and we get feedback from the community [02:34] ncb000gt: tmpvar: lol! nice. well if youd like a guinnea pig, i'll test it with linux and better drivers [02:34] fowlduck has joined the channel [02:34] tmpvar: what video card are you running? [02:34] ncb000gt: I've been considering switching my nvidia drivers over to the nouveau drivers for gfx, haven't yet [02:35] tmpvar: ah, yeah.. i dont know if thats smart if you have a newish card [02:35] mde: Yeah, that's the real key. I expect there'll be a lot of rewriting early on. [02:35] ncb000gt: geforce 9600 ultra iirc [02:35] tmpvar: ah [02:35] tmpvar: that should work like candy [02:35] ncb000gt: yea [02:35] ncb000gt: i would expect it to :) [02:35] tmpvar: I might take you up on that [02:35] tmpvar: :) [02:35] Aikar has joined the channel [02:35] tmpvar: had to patch mesa, heh [02:35] ncb000gt: sure thing, just let me know [02:35] ncb000gt: heh [02:36] creationix: Tim_Smart: would you be offended if I took some ideas from biggie and incorporated them into connect's api [02:36] creationix: (no code stealing, I promise ;)) [02:36] Tim_Smart: Nope [02:36] Tim_Smart: I probably stole a few things from you somewhere [02:36] creationix: that's the spirit! [02:36] creationix: ideas are hard to copyright anyway [02:36] ryan_gahl: stealing MIT code?? [02:37] Tim_Smart: and patents are stupid these days [02:37] ryan_gahl: ;) [02:37] creationix: and my main goal with connect is to push the node community along [02:37] Tim_Smart: creationix: What ideas where you looking at? [02:37] creationix: I'm looking for an alternate syntax for stacking up a server [02:37] Tim_Smart: oic [02:38] creationix: something that assumes a lot of defaults and is much easier [02:38] Tim_Smart: I'm guessing you have looked through the source? [02:38] creationix: after writing 10+ connect apps I get real tired of writing the same 10 filter lines over and over [02:38] creationix: Tim_Smart: not yet [02:38] Tim_Smart: The core is here: http://github.com/biggie/biggie-router/blob/master/lib/biggie-router/index.js [02:38] Tim_Smart: I might modularise it further though [02:38] mde: We're all stealing. I totally stole Connect's prefork technique over the weekend. :) [02:39] mscdex: geddyyyyyyyyyyyyyy [02:39] ryan_gahl: creationix: connect needs a server-template notion [02:39] creationix: Tim_Smart: if you make Router a subclass of Http then the "connect" executable can launch it [02:39] mde: mscdex: Dude, Temples of Syrinx. :) [02:39] creationix: or at least expose listen and listen.fd [02:39] mscdex: hehe [02:39] creationix: ryan_gahl: yeah, for common groups [02:40] Tim_Smart: Http being? [02:40] mscdex: the concurrent connect demo should be called "connect 4" [02:40] creationix: mde: awesome [02:40] mscdex: :-D [02:40] creationix: mde: still planning on building it on top of connect? or just taking the parts you want [02:40] mde: creationix: I think I'd like to build on Connect, but first I just want to get stuff actually working. [02:40] creationix: Tim_Smart: node's built-in Http class [02:41] Tim_Smart: creationix: Ah I see [02:41] creationix: mde: understandable, besides, I think I might change the api a time or two before going stable [02:41] mde: And there's issues like how deeply integrated it needs to be to handle errors the way a normal end-user dev would expect. [02:41] creationix: mscdex: lol [02:41] mde: Right, I figured it might be best to wait on packaging and agnostic-connectors until stuff is a little more baked. [02:42] creationix: I'm building a real full-app the next couple weeks on connect [02:42] creationix: so that should help stabilize things [02:42] mde: Ah, once stuff depends on it, it has to calm down, right on. [02:42] creationix: of course it also makes me feel the pain points and want to change it [02:42] mde: Time for releases and versioning I guess. [02:43] mde: Shit, I guess I should actually package a Geddy release at some point. It's not even 0.1 yet. [02:45] CIA-77: node: 03Ryan Dahl 07master * ra8e9923 10/ (doc/index.html doc/cla.html): Add Contributor License Agreement. - http://bit.ly/a4Ibuu [02:46] creationix: ryah: btw, the CLA is awesome, that will help make node more credible [02:47] ryan_gahl: node's credibility was crap before ;) [02:47] mde: Really important for companies looking at Node. [02:48] ryan_gahl: s/crap/not crap/ [02:48] pquerna: just join the asf, then I don't need to setp buildbot either. [02:48] mscdex: nice save ryan_gahl LOL [02:49] Tim_Smart: creationix: How do I access the http.Server prototype? [02:49] maushu: CLA? [02:49] maushu: ACTION just joined the conversation. [02:49] mscdex: Contributor License Agreement [02:49] maushu: Ah. [02:49] creationix: Tim_Smart: http://github.com/extjs/Connect/blob/master/lib/connect/index.js#L99 [02:49] creationix: ok, heading home, I'll be back online later [02:50] Tim_Smart: creationix: Ah, so its in the http module [02:50] Tim_Smart: I though it was hidden [02:50] creationix: Tim_Smart: yep [02:50] stephenjudkins has joined the channel [02:50] pandark_ has joined the channel [02:50] pandark_ has left the channel [02:54] _announcer: Twitter: "@markgunnels dude what are you trying to do? This help at all? http://www.nakedjavascript.com/going-evented-with-nodejs" -- Chris Williams. http://twitter.com/voodootikigod/status/16741555195 [02:55] bpot has joined the channel [02:56] technoweenie: nodej [02:56] technoweenie: is what pauly shore uses [03:02] boaz has joined the channel [03:05] stephenjudkins has joined the channel [03:05] everton has left the channel [03:06] stephenjudkins_ has joined the channel [03:07] ryah: technoweenie: no patches from you ever? [03:07] ryah: ACTION is going through the author list [03:08] keyvan has joined the channel [03:14] phiggins has joined the channel [03:17] Yuffster has joined the channel [03:19] derferman has joined the channel [03:20] Aria: tmpvar: Make the parser to use a property of DOMImplementation? how much API breakage does your idea have? [03:22] creationix has joined the channel [03:22] creationix_ has joined the channel [03:23] _announcer: Twitter: "@lazycoder nah, i've looked at python and ruby and i'm pretty happy w/ .net. node.js is only thing that interests me and will rule on ironjs" -- Darren Kopp. http://twitter.com/darrenkopp/status/16743345527 [03:23] tmpvar: reworking how windowAugmentation/browserAugmentation work [03:23] tmpvar: possibly removing them in favor of a feature based "builder" [03:23] tmpvar: Aria ^^ [03:23] Aria: Aaah, I like that rather a lot more. [03:24] tmpvar: yeah, when I wrote them I had no idea they would be used the way they are ;) .. the names no longer make sense [03:24] Aria: Heh, yeah. I get your layered design. Makes sense. [03:28] mw has joined the channel [03:30] Aikar: can anyone with a standard gui based IRC client scroll up and pastebin me the chatlog from about 1.5 hrs ago when i first said something about threads until that discussion sorta ended so i can bring those links up? [03:30] tmpvar: Aikar, http://nodejs.debuggable.com/ [03:31] Aikar: oh, handy [03:31] everton has joined the channel [03:31] fowlduck has joined the channel [03:35] _announcer: Twitter: "@darrenkopp you've looked at the .net imp of the node.js Apis? I haven't yet. Looks interesting." -- Scott Koon. http://twitter.com/lazycoder/status/16744099026 [03:35] _announcer: Twitter: "@phillyrb - Node.js in 30 minutes or less - Node.js in 30 minutes or less Mat Schaffer What is Node.js?... http://tumblr.com/xd3bz3i6v" -- Trevor Lalish_Menagh. http://twitter.com/trevmex/status/16744116157 [03:36] Aikar: looks like connect is very similiar to what my IPC system does. but i think ima want to write my IPC system in node anyways so i can node and PHP play together If I want (I have a PHP IRC bot I've wrote and would be nice to also be able to load modules in node instead of PHP) [03:38] keyvan has joined the channel [03:41] stephenjudkins has joined the channel [03:42] CIA-77: node: 03Ryan Dahl 07master * r95b252e 10/ AUTHORS : Fix bad email addresses in authors file - http://bit.ly/de8TB2 [03:42] PyroPeter has joined the channel [03:42] deanlandolt_home has joined the channel [03:44] ryah: keeping trace of contributors to a large project like this is serious work [03:45] ryah: note to anyone starting a project: do CLAs from the start. [03:46] mjr_ has joined the channel [03:48] _announcer: Twitter: "[Js 人 気 情报] christkv's node-mongodb-native at master - GitHub http://bit.ly/9X1ehY # javascript" [de] -- jsMagazine. http://twitter.com/jsMagazine/status/16744874428 [03:49] _announcer: Twitter: "@lazycoder but i think it would be _awesome_ to be able to run a node.js script on ironjs." -- Darren Kopp. http://twitter.com/darrenkopp/status/16744967710 [03:50] inimino: ryah: any reason why you're doing them now? [03:51] tmpvar: just a thought, wouldn't it speed stuff up if we could go directly from a buffer containing a json string to a js object? [03:51] tmpvar: instead of a toString() then a JSON.parse [03:52] Aikar: i doubt toString is really any expense on the cpu [03:52] inimino: tmpvar: but JSON.parse is implemented by V8, so you'd have to patch it to handle buffers, or write your own [03:52] tmpvar: Aikar, its an extra op [03:52] tmpvar: inimino, yeah, I did notice that.. hrm [03:52] tmpvar: just a though :) [03:52] Validatorian has joined the channel [03:53] _announcer: Twitter: "signed my node.js Contributor License Agreement. Woo, my two one-line patches are totally legit now ;-)" -- rentzsch. http://twitter.com/rentzsch/status/16745173724 [03:53] tmpvar: s/though/thought [03:53] Aikar: swhich should run in like 0 ms. ideally return a ptr to string data in the scalar object. so like 1-2 instruction sets? [03:53] ryah: inimino: i'll pm you [03:54] tmpvar: Aikar, doubtful.. It'd need to convert to a JS string [03:55] tmpvar: Aikar, for instance, if that were the case, then JS strings would be as fast to manip as a buffer which is not the case [03:55] tmpvar: sorry, brain is a bit fried [03:56] mscdex: extra crispy! [03:57] inimino: Aikar: in most cases buffers aren't UTF-16 so it would require more than a cast [03:57] Aikar: inimino: im not the one who said to do buffers -> json. i was saying a JS string probally is quicker than a buffer [03:58] Aikar: since js vars are scalar, id expect the scalar object to have a ptr to the string data [03:58] Aikar: in utf16 string format or w/e [03:58] inimino: hm [04:00] Aria: You might run into the wrath of V8's garbage collection if you go looking for the raw memory of a string. [04:00] WALoeIII has joined the channel [04:00] Aria: It's a generational collector. Things get moved about in an unholy way. [04:01] deanlandolt_home: ryah nice move on the CLA...i think it's the only way to roll [04:02] Aikar: Aria: i didnt mean for _i_ to use the raw memory. someone said wouldnt a buffer be quicker than a JS string for .parseJson since you dont need to do .toString(), and i was saying it probly isnt since a .toString is likely just switching the scalar ptr to the string object instead and should be a 1 or 2 instructions operation, vs a buffer -> json which needs all kinds of other parsing [04:02] Aria: Aaah. [04:03] boaz has joined the channel [04:04] _announcer: Twitter: "Browse the Web on Twitter ChiarpUserStream node.js made apps - Hatena Diary liquor branch http://tumblr.com/xy1bz56qi" [ja] -- nobu666. http://twitter.com/nobu666/status/16745856374 [04:05] technoweenie: ryah: hmm not sure i've submitted a patch to node.js itself [04:06] _announcer: Twitter: "Co-opting the node.js announcer bot. hi everyone!" -- Guillermo Rauch. http://twitter.com/rauchg/status/16745985000 [04:06] rauchg: haha [04:06] rauchg: yup, that was me [04:07] LOLWUT__: oh u [04:09] grahamalot has joined the channel [04:10] sanderjd has joined the channel [04:11] unomi has joined the channel [04:11] _announcer: Twitter: "Saying hi too all the guys in #node.js IRC. Good times." -- Tim Smart. http://twitter.com/Tim_Smart/status/16746295770 [04:11] mscdex: :-D [04:12] LOLWUT__: hello [04:12] Tim_Smart: ohai! [04:12] LOLWUT__: how goes it? [04:12] Tim_Smart: Streaming API is pretty quicl [04:12] Tim_Smart: *quick [04:12] LOLWUT__: yeah? [04:12] Tim_Smart: yup [04:12] sanderjd has left the channel [04:13] LOLWUT__: nice, from what I've seen there isn't much of node that isn't [04:13] LOLWUT__: well, any, really [04:13] LOLWUT__: lol [04:13] LOLWUT__: I have a simple echo server running on a pretty small vps and it's fast [04:14] Tim_Smart: LOLWUT_: I have my portfolio site running on node on a prgmr.com instance [04:14] LOLWUT__: nice [04:15] LOLWUT__: I've got mine through a friend, specs aren't much to look at but he gives me quite a bit of bandwidth [04:15] LOLWUT__: so I use it for a lot of backend development stuff [04:15] Tim_Smart: About to update it to my sparkly new router library [04:15] derferman: Tim_Smart: What size prgmr instance? [04:15] Tim_Smart: derferman: 256 [04:15] derferman: I have the smallest, and I can't seem to even build Node from source [04:16] derferman: hmm, nvm, I have the same size [04:16] derferman: How long does it take you to build it? [04:16] Tim_Smart: Pretty quick [04:16] LOLWUT__: yeah, mine's running a 256mb [04:16] derferman: hmm, let me try it right now [04:17] Aikar: and how much yhou guys paying [04:17] Tim_Smart: Aikar: $8 a month [04:17] Aikar: lol [04:17] Tim_Smart: :D [04:17] Aikar: i pay 100/mo for a pretty good dedicated [04:17] stephenjudkins has joined the channel [04:17] LOLWUT__: I pay 15/mo [04:17] LOLWUT__: that's for 256mb ram, 20gb disk, 1.5tb transfer [04:17] Aikar: 1.6 quad core xeon with 4gb memory [04:18] LOLWUT__: lemme guess [04:18] LOLWUT__: esecuredata [04:18] Tim_Smart: Aikar: You running Java or something? lol [04:18] technoweenie: the twitter streaming api is brought to you by scala and ruby [04:18] Aikar: 5tb transfer, 200gb hdd [04:18] Aikar: nope, using ServerLoft.com [04:18] stephenjudkins has joined the channel [04:18] LOLWUT__: Aikar, if you're paying that much for a dedi go with esecure [04:18] Aikar: Tim_Smart: no i just got tired of running low on memory [04:18] LOLWUT__: they're like 90/mo [04:18] LOLWUT__: and unmetered [04:18] LOLWUT__: for roughly the same [04:19] Aikar: bandwidth isnt really an issue [04:19] LOLWUT__: ah ok [04:19] LOLWUT__: I was doing video streaming on a dedi I had with them [04:19] Aikar: atm my servers under utilized, but anything cheaper is a VPS with low memory [04:19] LOLWUT__: so a big must was unmetered bw [04:19] Aikar: plus 5tb is ALOT of bandwidth for 1 single box to use [04:19] LOLWUT__: yep [04:19] LOLWUT__: can be [04:19] LOLWUT__: depends on what you use it for [04:20] LOLWUT__: honestly if I spend 100/mo on the machine [04:20] LOLWUT__: I'd like to see it get a LOT of use [04:20] Tim_Smart: Torrenting huh [04:20] LOLWUT__: no actually I did a video streaming system [04:20] LOLWUT__: with icecast [04:20] mikeal: ryah: big fancy CLA [04:20] mikeal: sell out :P [04:20] LOLWUT__: and had it to where I could tell my irc bot youtube videos to dl [04:21] LOLWUT__: and it would dl to the machine, use ffmpeg to encode to flv [04:21] LOLWUT__: and insert into the playlist [04:21] LOLWUT__: etc [04:21] technoweenie: Conjugated linoleic acid? [04:21] Aikar: yeah serverlofts deals are better than esecure [04:21] LOLWUT__: really? [04:21] LOLWUT__: I'll check 'em out [04:21] Aikar: quad core box on esecure with 4gb memory is 180 [04:22] LOLWUT__: the bandwidth is really more the selling point with them I think [04:22] Aikar: and you get 4 free extra IP's vs 2 [04:22] Aikar: like i saidu nless your torrenting - 5tb for a single box is pretty high [04:22] LOLWUT__: not unless you're streaming variable bitrate video [04:22] Aikar: when your reaching 5tb of traffic a month your gonna have multiple servers [04:22] LOLWUT__: to over 100 people [04:22] LOLWUT__: simultaneously [04:22] ryah: mikeal: i think you can only get so far before someone forces you to do it [04:22] LOLWUT__: lol [04:22] Aikar: true [04:22] LOLWUT__: I'm telling you [04:22] LOLWUT__: there was a legit NEED [04:22] LOLWUT__: lol [04:23] mikeal: it's true [04:23] tmpvar: damn.. [04:23] LOLWUT__: the encoding wasn't all that heavy on the hardware [04:23] Aikar: the atom server they got is nice for people who need cheaper host, but single core is heh [04:23] mikeal: big fancy project now [04:23] Aikar: and 10mb speed [04:23] LOLWUT__: yeah [04:23] mikeal: pretty soon we'll have committers from IBM [04:23] tmpvar: ryah, do I need to sign one for my already commited code? [04:23] LOLWUT__: the 100mb is way better [04:23] mikeal: and it's all over :P [04:23] LOLWUT__: I was using the 180/mo btw [04:24] LOLWUT__: but yeah [04:24] LOLWUT__: that wasn't sustainable [04:24] LOLWUT__: so back to a vps for bare development needs [04:24] rauchg: Tim_Smart: that was a good tweet too [04:24] rauchg: did you delete it ? [04:24] rauchg: :P [04:24] Tim_Smart: rauchg: Yeah :p [04:29] ryah: tmpvar: yes [04:29] liucougar has joined the channel [04:31] tmpvar: ok then [04:33] ryah: tmpvar: merci [04:38] boaz_ has joined the channel [04:38] tmpvar: ryah, I'll put it on the list :) [04:39] ryah: tmpvar: ? [04:39] ryah: i already spammed all the contributors :) [04:40] tmpvar: oh, I see. I avoid email after work hours aha [04:44] tmpvar: ryah, that was easy. thanks [04:47] creationix has joined the channel [04:48] stevendavie has joined the channel [04:53] tmpvar: ryah, for node knockout.. "Using node.js and whatever additional technology you want;" -- does that mean pre-baked libs? [04:53] tmpvar: s/mean/include [04:54] visnup: that means [04:54] visnup: yes [04:54] ryah: yeah [04:54] tmpvar: great [04:55] visnup: I'm still finishing writing up the rules, which should clarify all of that; sorry for the delay [04:55] tmpvar: np [04:56] technoweenie: when is it? august ro something? [04:57] visnup: last weekend of august [04:57] visnup: august 28-29 [04:57] visnup: (gmt) [04:57] technoweenie: ah ok, i have an app idea, i guess i should register [04:57] visnup: whoo hoo! [04:57] technoweenie: rock on! [05:02] tmpvar: egl will be mind [05:02] tmpvar: mine* [05:02] tmpvar: http://gist.github.com/448018 -- so close [05:03] tmpvar: egl, no x, kms, etc .. pure hotness [05:03] ncb000gt: soon enough :) [05:04] tmpvar: yeah, just a matter of bugging the dri-devel guys enough into helping me lol [05:04] tmpvar: i should be documenting this journey [05:06] zaach has joined the channel [05:09] Kiba: finally finished freelancing work that should have been done a while ago [05:12] tmpvar: Kiba, what language? [05:12] Kiba: javascript and node.js [05:12] Kiba: I need to code MOAR [05:12] Kiba: ACTION is a lazy bastard [05:12] tmpvar: wow, what client then? [05:13] Kiba: some other programming dude that's too busy with his business [05:13] tmpvar: ah [05:13] zaach has left the channel [05:13] Kiba: my mininum requirement everyday is 30 commits. [05:13] tmpvar: man, i wish i made more than 3 commits a day [05:14] Kiba: that is my goal each day [05:14] tmpvar: I'm working on some bloated java project [05:14] Kiba: well, I tend to commit micro-code [05:14] Kiba: small amount each commits [05:14] tmpvar: so 1 commit = many hours of digging [05:14] Kiba: job? [05:14] tmpvar: through layers and layers of stupid j2ee sh*t [05:15] tmpvar: yeah [05:15] tmpvar: for the moment, we are planning a re-write [05:15] Tim_Smart: I'm guess j2ee dev is the opposite of 'agile' [05:15] Kiba: I got burned out by too many rewrites [05:15] tmpvar: we (KarlG and I) are pushing for a rewrite in node [05:15] Kiba: well [05:15] Kiba: I am weary of rewrite [05:15] tmpvar: which is why i've been so active in doing c++ stuff lately [05:15] Kiba: rewrite can be like hell on earth [05:16] tmpvar: yeah, we have identified the fact that the client's entire mindset is wrong [05:16] tmpvar: culture/mindeset/etc [05:16] tk has joined the channel [05:16] Kiba: well [05:16] Kiba: I want to avoid rewrite as much as possible [05:16] Kiba: it's a fricking time sink [05:17] tmpvar: oh, you have no idea. [05:17] tmpvar: we have a daily wtf [05:17] tmpvar: every day [05:17] tmpvar: for the past month and a half [05:17] tmpvar: 10 year old code base [05:17] Kiba: that why us programmers have job [05:17] tmpvar: 6 or so different firms have touched it and just made it into a gigantic pile of crap [05:17] Kiba: because of some lazy ass programmers or no good programmers from before than [05:18] Kiba: lazy management [05:18] Kiba: or both [05:18] tmpvar: sure, thats why we dont want to pay their technical debts heh [05:18] Kiba: well [05:18] Kiba: I get to deal with cutting edge tech. I am paid for that privillege. [05:19] tmpvar: sounds fun, do you do open source work? [05:19] Kiba: I do only open source work. [05:19] tmpvar: github? [05:19] Kiba: that's my freelancing modus operandi [05:19] tmpvar: i like it [05:19] Kiba: tmpvar: I am embrassed to have code on github that's unfinished..but anyway take a look at.... [05:20] Kiba: ACTION have tons of unfinished project [05:20] tmpvar: eh, my github is litered with that [05:20] tmpvar: bogged way down by this java thing [05:20] tmpvar: im not a java dev [05:20] tmpvar: but im making it work lol [05:20] Kiba: http://github.com/kiba [05:20] Kiba: well [05:20] Kiba: anyway [05:20] Kiba: for some projects, I spent a lot of time on it [05:20] Kiba: it was my hobby in high school [05:21] Kiba: unfortunely they never paid off commercially for me [05:21] Kiba: BUT [05:21] Kiba: it's sunk cost. [05:21] Kiba: no use worrying aobut it anyway [05:21] tmpvar: you are a game dev? [05:21] Kiba: but it's so hard to resist such natural feeling [05:21] Kiba: game development is my hobby. [05:21] tmpvar: or an attempted gamedev [05:21] Kiba: I hope to make games full time. [05:21] tmpvar: got ya [05:22] tmpvar: who doesn't ;) [05:22] Kiba: and I do that for money anyway [05:22] tmpvar: got ya [05:22] tmpvar: you've seen node-ogl? [05:22] Kiba: no [05:22] Kiba: I am not too good mathematics unfortunely [05:22] tmpvar: http://github.com/tmpvar/node-ogl [05:22] tmpvar: native opengl bindings .. for the desktop :) [05:22] Kiba: but I got a rails mininum viable product that I want to finish first [05:23] Kiba: not sure how I will open source it and still make money [05:23] tmpvar: service oriented :) [05:23] tmpvar: premium-ware or whatever the buzzword is [05:23] Kiba: In anycase, I wasn't a free software zealot. [05:23] Kiba: anymore [05:23] Kiba: moved on to bigger and better idealogy :) [05:24] WALoeIII has joined the channel [05:25] Kiba: tmpvar: ya know, I get scared aobut somebody beating me there first..but I knew that's just nonsense. [05:25] Kiba: it's irrational [05:25] tmpvar: with your big bad rails project? [05:26] Kiba: life rpg game [05:26] tmpvar: oh [05:26] tmpvar: secondlife/wow? [05:26] Kiba: self improvement application [05:26] Kiba: hack your incentive system to align with your goals [05:26] Kiba: make it like wow [05:26] Kiba: make life like wow [05:26] mape has joined the channel [05:26] tmpvar: all i can say is "wow" [05:26] tmpvar: :P [05:26] Kiba: that's my idea. [05:27] tmpvar: alright, since we are sharing [05:27] tmpvar: my idea is to kill off xorg [05:27] Kiba: really? [05:27] tmpvar: and replace it with something that is closer to the kernel, faster, and stupid simple to modify [05:27] Kiba: wow. [05:27] Kiba: amibitious hacker. [05:27] tmpvar: yep. i was hoping for wayland [05:28] Kiba: hmm..I didn't know that I have 7 followers [05:28] tmpvar: but, ive given up hope there. so im going for it. got mesa building without xorg today, first milestone! [05:28] tmpvar: rendering to osmesa is next, then hooking up node-ogl [05:28] Kiba: what's a wayland? [05:29] tmpvar: http://en.wikipedia.org/wiki/Wayland_(display_server) [05:29] tmpvar: i may end up borrowing some code from him.. but from what I've experienced he is too busy to offer any sort of support [05:29] amerine has joined the channel [05:30] tmpvar: even in the form of "how can I help" [05:30] tmpvar: so im taking the direct approach [05:30] tmpvar: rabit holes, and walls await haha [05:30] chrischris has joined the channel [05:31] mape: Facsimile? [05:31] tmpvar: hi mape [05:31] mape: Hey [05:34] mape: Oh.. fax [05:34] tmpvar: alright, till tomorrow. peace! [05:34] tmpvar has left the channel [05:34] mikeal has joined the channel [05:35] tmpvar has joined the channel [05:35] Kiba: damn [05:35] Kiba: I have an irregular sleep schelude [05:35] Kiba: can't sleep at the right time [05:35] Kiba: end up sleeping in the middle of the afternoon [05:35] Kiba: and then sometime..at night [05:38] LOLWUT__: yeah, I just plain don't like going to bed early [05:38] LOLWUT__: I'm a rebel. [05:39] LOLWUT__: question, with this nodered, is this something that needs to be compiled with nodejs? [05:39] LOLWUT__: like, into nodejs? [05:41] technoweenie: nodejjjj [05:41] LOLWUT__: eh? [05:41] mape: Nice, Connect added less middleware [05:41] mape: Just keeps getting smaller and smaller.. hehe [05:41] LOLWUT__: always a good thing :) [05:41] bmizerany has joined the channel [05:41] mape: LOLWUT__: (less.js) [05:42] LOLWUT__: ahhh [05:43] LOLWUT__: I'm pretty new to the javascript thing outside the browser, still discovering a lot of the projects out there [05:43] LOLWUT__: how do I go about integrating these things? [05:44] LOLWUT__: I guess I don't really understand that [05:45] LOLWUT__: ah npm. nice. [05:48] stevendavie has joined the channel [05:55] admc has joined the channel [06:01] jarsen has joined the channel [06:02] ph^ has joined the channel [06:03] Tim_Smart: LOLWUT__: npm and git [06:03] Tim_Smart: :p [06:03] LOLWUT__: yeah I got it [06:03] LOLWUT__: thank you though :) [06:03] LOLWUT__: I am wondering where some documentation might be to help me out with getting started though [06:04] LOLWUT__: new to pubsub/nodered/that whole bit [06:06] creationix: mape: where is the source for your asset thing? [06:07] mape: creationix: http://mape.me:8081/assetsManager.js [06:08] mape: Still have some cleaning up (and finding the cssmin js version again) [06:08] creationix: I'm thinking of changing the connect api [06:08] mape: What kinda changes? [06:08] Tim_Smart: DO IT. It isn't awesome if it doesn't have an api that changes every few days [06:08] creationix: I've discovered a few major problems with the current spec [06:09] creationix: for example, it's impossible to have two instances of any one middleware with different configs [06:09] mape: Sure? [06:09] mape: Don't see why you couldn't do that with mine [06:09] Tim_Smart: creationix: I pass the config at request time [06:09] mape: But then again that might be me not using Connect properly [06:10] creationix: mape: setup is called at startup once per middleware line [06:10] creationix: but "this" inside setup is the module itself [06:10] creationix: and modules are cached in node [06:10] creationix: so if it's required more than once, you'll trample the first instance [06:11] mape: But if the module exports, can't you just have that return a new instance? [06:11] creationix: mape: nope, not with the current version [06:11] creationix: the module is the instance [06:11] mape: Hm k [06:12] creationix: also I find it very restrictive and over-complicated [06:13] creationix: I think instead the module should be a function that takes config parameters and returns a request handler [06:13] creationix: I'd like it even more simpler if possible though [06:14] mape: A string that is evaled using black magic? [06:14] creationix: no, that not needed [06:14] mape: hehe [06:14] creationix: https://gist.github.com/47362192adda1271788b [06:14] creationix: something like this maybe? [06:15] mape: and config is just options for the module? [06:16] creationix: yep, it's whatever you want it to be [06:16] creationix: and since it's in the closure you don't even need to store it anywhere [06:16] mape: So how do I do on load actions? Like generating static assets that are then served in the returned function? [06:16] mape: Otherwise you need the overhead of setting it up each req? [06:17] creationix: just do it before returning the function [06:18] mape: Ah yeah ofcourse [06:18] agnat has joined the channel [06:18] creationix: like I said, it's much simpler and more flexible [06:18] creationix: and on the other side, it's even more beautiful [06:18] mape: But then I wouldn't be able to do cacheTimestamps like I do it right? [06:19] creationix: https://gist.github.com/47362192adda1271788b [06:19] creationix: mape: hmm, let me see... [06:20] creationix: sure you can, it's even easier too [06:20] creationix: var cacheTimestamps = {}; [06:20] creationix: before returning the function [06:21] mape: this.cacheTimestamps = {}; Since I want to be able to access them outside of that closure? [06:22] mape: Or em no.. [06:22] creationix: if you want it global, then just declare the var outside the function [06:22] creationix: then you could share the cache across instances [06:23] mape: Well then all that needs to be assigned in the app.js? If I roll it as a module doesn't that get closed up? [06:24] creationix: well if you want it accessable from outside the module, then just put a reference on exports [06:24] creationix: functions can have properties too [06:24] creationix: just like any object [06:24] mape: Yeah of couse [06:25] creationix: my only problem now if the syntax for building the app [06:25] creationix: it gets a little more verbose, but a lot more direct [06:25] creationix: instead of {filter: log} it's require('connect/filters/log')() [06:26] mape: Moving closer to fab? :) [06:26] creationix: but maybe I could keep that shortcut for that case [06:26] creationix: yeah, originally I had something like this [06:26] creationix: but then I was encouraged to make it more OO [06:26] creationix: not sure this is a place for OO style code though, it seems so much more complicated [06:26] technoweenie: server.filter(log) [06:27] creationix: technoweenie: good idea [06:27] technoweenie: i'd prefer something that looked legible in coffeescript too :) [06:27] mape: server.filter('log') ? [06:28] technoweenie: i wonder what that gist would look like in coffee script [06:29] creationix: how about this http://gist.github.com/448085 [06:29] creationix: technoweenie: it's been a while since I've worked on coffeescript, but I think it would look good [06:30] technoweenie: gisting [06:30] mape: creationix: Looks nice [06:30] stephenjudkins has joined the channel [06:30] creationix: ryah: ^ what do you think? [06:30] creationix: each layer is now just a function, nothing fancy [06:30] technoweenie: creationix: what do you think about createServer returning a server object that i could modify directly [06:30] Tim_Smart: creationix: biggie-router is slightly edging connect in speed now [06:31] Tim_Smart: pretty damn close though [06:31] creationix: Tim_Smart: nice [06:31] creationix: technoweenie: I've thought about that a few times, whats your reason for wanting it? [06:31] _announcer: Twitter: "Wrapping my head around using TLS (Transport Level Security) with node.js" -- Sudar. http://twitter.com/sudarmuthu/status/16753380650 [06:32] creationix: technoweenie: have you seen biggie-router, something like the use function [06:32] technoweenie: https://gist.github.com/e7a54347b00eacabded0 ok gist re-orders files. compiled.js is the compiled coffeescript [06:33] technoweenie: having a method to add a handler is useful in some cases [06:33] technoweenie: for instance, you could selectively include a handler based on the existence of a lib or a certain deployment environment [06:34] technoweenie: for example, rails apps typically load Rack::Debug in dev mode [06:34] Tim_Smart: technoweenie: Some biggie router syntax if you are interested: http://gist.github.com/447815 [06:35] technoweenie: i like that too [06:35] marshall_law: creationix: is there a way to run a single test from the test harness? [06:35] marshall_law: (rather than a whole suite) [06:35] creationix: marshall_law: yes, but I forget how [06:35] marshall_law: :) [06:35] Tim_Smart: creationix: We should come up with a solid spec for modules [06:35] technoweenie: is there a reason you're passing next/req/res? [06:36] technoweenie: how about something like (err, context), and then you can do context.next/context/request, etc [06:36] creationix: Tim_Smart: I do like your setup syntax [06:36] marshall_law: creationix: well, the good news is procPath seems to be working in both Linux + OSX.. i have code for the "none" and "freebsd" platforms as well but no VM to test them [06:36] jetienne has joined the channel [06:36] creationix: marshall_law: if you add the test, the ci server will test it for you I think [06:36] marshall_law: creationix: cool, i added it [06:37] marshall_law: creationix: my changes are on http://github.com/marshall/node [06:37] creationix: or at least you could submit the patch to the mailing list and ask someone with that hardware to test it [06:37] creationix: but when you're ready send the patches or links to them on github to ryah and/or the mailing list [06:38] creationix: technoweenie: I think I do like the whole (req, res, next) thing [06:38] creationix: for a few reasons [06:38] technoweenie: well one thing that sucks, its similar enough to biggie but in a different order :) [06:38] creationix: my end goal is that it's a superset of node's http server eventually, but not sure that's possible [06:39] ctp has joined the channel [06:39] creationix: IE a plain node hello world app would also work as a connect hello world app [06:39] technoweenie: ok fair enough [06:39] kjeldahl has joined the channel [06:39] Tim_Smart: I can easily change it to be next 3rd argument [06:39] Tim_Smart: I'm not sure of the merits though [06:40] creationix: currently it requires the list of functions to be in an array instead of separate arguments since you can send in a env after the list [06:40] creationix: I'm not sure that's a very important use case if we structure the rest right [06:40] mickgardner___ has joined the channel [06:40] creationix: Tim_Smart: how do you feel about modules just being functions that generate functions [06:41] Tim_Smart: creationix: They need a setup() call though [06:41] keyvan has joined the channel [06:41] Tim_Smart: or something [06:41] marshall_law: creationix: just realized i made the mistake of making multiplpe commits.. d'oh [06:41] jetienne: i need a kindof getopt... any suggestion ? [06:41] creationix: marshall_law: squash is your friend [06:41] visnup has joined the channel [06:41] Tim_Smart: creationix: actually, that works [06:42] gormer has joined the channel [06:42] marshall_law: creationix: i already pushed them.. care to elaborate? :) [06:42] creationix: Tim_Smart: yeah, the double function method seems to work really well, just seems odd at first to a lot of people [06:42] slaskis has joined the channel [06:42] creationix: marshall_law: I'm not a git expert, but there is a squash command [06:42] marshall_law: hmm doesn't like squash here [06:42] creationix: maybe it's rebase, not sure [06:43] Tim_Smart: creationix: But what about performance? Generation functions every request isn't too amazing [06:43] Tim_Smart: *generating [06:43] creationix: Tim_Smart: no, the generation is only at setup [06:43] creationix: the outer function is setup, the inner is handle [06:43] creationix: marshall_law: once it's ready, just force a push to github [06:43] Tim_Smart: I setup for each request :/ [06:43] Tim_Smart: (if the setup function is there) [06:44] creationix: Tim_Smart: why? [06:44] creationix: why not inline that setup at the top of handle [06:44] virtuo has joined the channel [06:44] technoweenie: https://gist.github.com/fa111cdb0a219a11a096 btw, here's the new github streaming archiver i wrote over the weekend. i hope to start testing it in production this week [06:45] Tim_Smart: creationix: nvm, I see what you are getting at [06:45] Tim_Smart: yeah should be fine [06:45] creationix: Tim_Smart: I'm fairly sure the nested function pattern is good, just not 100% sure of the (req, res, next) pattern [06:45] Tim_Smart: and the argument order should be request, response, next right [06:45] creationix: if those are the arguments, yes [06:45] creationix: next is a callback and callbacks always go last [06:46] creationix: and req and res are the order in node [06:46] teemow has joined the channel [06:47] Tim_Smart: creationix: What will the setup function take as arguments? [06:47] creationix: mde: is it alright if I review the text in the morning, or do you want it tonight [06:47] creationix: Tim_Smart: whatever your module wants [06:47] creationix: the framework won't specify anything [06:47] Tim_Smart: ok [06:47] creationix: unless... [06:47] _announcer: Twitter: "[Js 人 気 情报] technoweenie's twitter-node at master - GitHub http://bit.ly/dqVPmx # javascript" [de] -- jsMagazine. http://twitter.com/jsMagazine/status/16754092335 [06:48] Kiba` has joined the channel [06:48] creationix: dang, I forget something [06:48] creationix: I do want the module to have access to the global environment [06:49] creationix: hmm, if I attach the environment to the 'connect' module, then the module just needs to do require('connect').env [06:49] creationix: not sure if that will work for biggie though [06:49] Tim_Smart: creationix: I can just pass the router instance, or 'this' etc [06:49] creationix: yes, but I want to be able to use raw requires when loading my modules [06:50] creationix: so no call or apply [06:50] creationix: hmm, that didn't make sense [06:50] creationix: what I mean is that if we depend on "this", then people have to use call or apply and manually set the environment on every setup call [06:51] Tim_Smart: creationix: I mean as the first argument [06:51] Tim_Smart: setup(this, ...) [06:51] creationix: first argument is better, but still has to be called explicitly [06:51] creationix: I guess that's not as bad [06:52] creationix: (reminds me of python) [06:52] Tim_Smart: creationix: I already use it when creating a route anyway [06:52] Tim_Smart: under the hood I just have proxy calls creating routes [06:53] creationix: Tim_Smart: I don't see "this" anywhere in your gist [06:53] felixge has joined the channel [06:53] creationix: I guess that a benefit of the procedural style of building the stack [06:53] creationix: you can hide stuff like that behind function calls [06:53] Tim_Smart: creationix: http://github.com/biggie/biggie-router/blob/master/lib/biggie-router/index.js#L164 [06:54] Tim_Smart: L157 for the proxyMethod function [06:55] creationix: yeah, I can't really make the stack that high level [06:55] creationix: (meaning the pattern matching and HTTP verb matching) [06:56] Tim_Smart: Ah ok. I'm just allowing regex and string for now [06:56] Tim_Smart: Oh, I see what you mean [06:56] creationix: remember kriszyp's crazy benchmark back when I released connect? [06:57] creationix: the reason his dispatch loop was so much faster was because there was zero overhead between the steps [06:57] creationix: just nested functions [06:57] creationix: though I'm not sure it really matters in the end since dispatch is usually a very small part of the cost [06:58] creationix: but adding regular expressions matches, http verb checking, and all that nice stuff really slows down the dispatch loop [06:59] Tim_Smart: creationix: I compared to the the fastest solution (raw http.createServer) and it was only a couple ms per request behind. (including connect btw) [06:59] creationix: couple ms per request? that sounds like a lot [07:00] [[zz]] has joined the channel [07:00] Tim_Smart: I did a `ab -n 1000 -c 100` btw [07:00] creationix: (benchmarks are tricky) [07:00] creationix: ahh, so a couple isn't as bad then, there is high concurrency [07:00] Tim_Smart: yeah [07:01] _announcer: Twitter: "@ @ JelleMenges Ahmedali123 Why are there so many from which JS useful teskten that the 'adult' as Labour are sorely missed" [nl] -- Marcel Duyvestijn. http://twitter.com/Liefdevollid/status/16754669813 [07:01] creationix: still, i'd like sub milisecond responses if possible [07:01] creationix: get > 1000 reqs/second with -c 1 [07:02] creationix: node is great a extreme concurrency and overall throughput, but just ok as latency [07:03] Tim_Smart: I'm getting ~0.3 on both biggie and connect [07:03] Tim_Smart: (ms per request) [07:03] creationix: with -c 1 ? [07:03] Tim_Smart: yeah [07:03] creationix: ok, good [07:04] creationix: so sounds like the matchers aren't too expensive [07:04] creationix: but is it the right place for them? [07:04] Tim_Smart: I'm doing the most basic server (hello world) though [07:05] Tim_Smart: I haven't put a match in yet. I'll insert a get('/') and see how goes [07:05] creationix: ok, try that [07:06] LOLWUT__: got a question for you guys if you would be so kind [07:07] creationix: LOLWUT__: what's up [07:07] LOLWUT__: been reading up on this pubsub stuff and working with faye-node atm to look at simple pubsub implementation [07:07] LOLWUT__: what I'm looking to do is a websockets irc server [07:07] LOLWUT__: and I'm wondering with the whole pubsub paradigm going on how things like a channel ban would work [07:08] creationix: not sure what a channel ban is, but probably just a filter function when looping through the people to publish to [07:08] Tim_Smart: creationix: Still 0.3ms per request :) [07:08] creationix: or just remove them from the subscribe list when banned [07:08] creationix: Tim_Smart: nice [07:08] LOLWUT__: see that's what I'm thinking, but for that to be reliable the server would have to delegate it [07:08] Tim_Smart: Anyway, time to cook some food [07:09] LOLWUT__: I'm not the best when it comes to js, I can work with it, but peeking underneath some of these apis is kinda over my head [07:09] LOLWUT__: I'm wondering if maybe there's an event I can hook into server-side [07:09] LOLWUT__: to do said filtration [07:09] creationix: LOLWUT__: probably, I haven't looked at faye though [07:09] ditesh|cassini has joined the channel [07:10] LOLWUT__: well from what I can tell it's firing a 'message' event [07:10] LOLWUT__: on message [07:10] LOLWUT__: would I just be correct in assuming the convention is the next var is the message? [07:10] LOLWUT__: or I suppose in this case json object [07:11] LOLWUT__: lemme see if I can locate the few lines and paste.. [07:11] LOLWUT__: Faye.Channel = Faye.Class({ [07:11] LOLWUT__: initialize: function(name) { [07:11] LOLWUT__: this.__id = this.name = name; [07:11] LOLWUT__: }, [07:11] LOLWUT__: push: function(message) { [07:11] LOLWUT__: this.trigger('message', message); [07:12] LOLWUT__: } [07:12] LOLWUT__: }); [07:12] creationix: yeah, that looks like the publish end of pubsub [07:12] creationix: you need the subscribe end I think [07:13] creationix: since some people need the message and others not [07:13] creationix: unless you're trying to keep someone from posting to the channel [07:13] creationix: then that is the right place [07:13] LOLWUT__: well the way I'm thinking it [07:13] LOLWUT__: is join/part [07:13] LOLWUT__: would be akin to subscribe/unsubscribe [07:13] creationix: yep [07:13] LOLWUT__: ban would essentially be a forced unsubscribe [07:13] LOLWUT__: and subsequent denial of subscription [07:13] creationix: yep, and bounce of attempted joins [07:14] creationix: exactely [07:14] LOLWUT__: cool [07:14] LOLWUT__: any special way I'll need to call that? [07:14] creationix: then you won't have to filter the broadcast [07:14] creationix: no clue [07:14] LOLWUT__: ideally it'd just be addListener [07:15] LOLWUT__: I suppose I could always modify the existing faye-node [07:15] LOLWUT__: but that's not really preferred [07:15] LOLWUT__: lol [07:16] pdelgallego has joined the channel [07:20] BrianTheCoder has joined the channel [07:21] jetienne has joined the channel [07:25] ctp has joined the channel [07:29] teemow has joined the channel [07:34] romainhuet has joined the channel [07:36] ryah: inimino: what linux distro you run? [07:40] _announcer: Twitter: "Just finished prototype web server that uses nginx, apache and node.js. Tomorrow web sockets and real time game play :)" -- Benson Wong. http://twitter.com/mostlygeek/status/16756320766 [07:54] SamuraiJack has joined the channel [07:54] marshall_law: ryah: fyi I submitted my patch to the mailing list [07:55] marshall_law: ryah: do you guys have VMs or boxes for testing freebsd/solaris somewhere? [07:58] ryah: marshall_law: i test on solaris [07:59] Tim_Smart: ryah: Is the build bot offline? [07:59] ryah: marshall_law: the changes look good [07:59] dahankzter has joined the channel [07:59] ryah: marshall_law: looks like getexecname() will work on solaris [07:59] marshall_law: ryah: cool, i wasn't able to bang out the solaris impl, i can if you give me a shell though :) [07:59] ryah: marshall_law: you need to agree to http://nodejs.org/cla.html before i can accept the patch [07:59] marshall_law: ryah: yeah, i felt bad enough attaching freebsd without testing it [07:59] marshall_law: cool np [08:00] ryah: ACTION feels so official with the CLA [08:00] ryah: :P [08:00] mape: Hehe [08:00] marshall_law: ryah: we have one too [08:00] marshall_law: :) [08:01] marshall_law: last two jobs actually, had one [08:01] ryah: marshall_law: what do you think about changing it to process.execPath ? [08:01] ryah: process.proc seems redundent [08:01] marshall_law: ryah: funny, my original leaning was exePath, that's fine.. i'm not tied to the name [08:03] marshall_law: ryah: want me to resubmit the patch with name changed or just merge and change before commiting? [08:03] ryah: marshall_law: i'll change it before commiting it [08:03] xla has joined the channel [08:03] marshall_law: ryah: CLA submitted [08:09] ryah: thanks [08:09] mape: Same, just wondering though [08:09] mape: What is the validity of doing it digitaly? Since you get no signature will it be of any help if issues arose? [08:11] ryah: electronic signatures do hold up in court - obviously it's more easily possible to argue you haven't signed it [08:11] ryah: but ink signatures can also be forged [08:11] marshall_law: time to crash.. [08:11] ryah: marshall_law: thanks for the patch, going to merge it soon [08:12] marshall_law: ryah: sweet, do y'all have a CIA or GitBot? [08:12] mape: ryah: Jup true, anways done done and done. [08:12] ryah: marshall_law: yes [08:12] marshall_law: cool :) [08:12] marshall_law: oh, CIA-77 had scrolled of my screen.. hehe [08:13] ryah: mape: tack [08:13] mape: Hehe [08:23] N` has joined the channel [08:38] MattJ has joined the channel [08:42] xla has joined the channel [08:43] ceej has joined the channel [08:43] dabreaka has joined the channel [08:44] derbumi has joined the channel [08:48] _announcer: Twitter: "Released node-formidable 0.9.2. Contains one critical and one non-critical bugfix: http://bit.ly/98y5UB #nodejs" -- Felix Geisendörfer. http://twitter.com/felixge/status/16758957802 [08:53] mape: http://npm.mape.me/ should be quite a bit faster now, removed 85 requests per page load [08:56] technoweenie: oh wow, looks nice [08:57] technoweenie: i love how fab.js is #1 [08:57] mape: Hehe, it still does a lot of ajax requests to fetch stuff so not instant but better then before [08:57] hassox has joined the channel [08:57] xla has joined the channel [08:58] fdmanana has joined the channel [08:58] technoweenie: is there a server behind it caching shit like gh watchers [08:58] mape: yeah [08:58] mape: Otherwise the GH API would cry [08:59] technoweenie: no, i think you'd be crying because of rate limiting :) [08:59] mape: Well yeah, whine might be a better word ;) [08:59] technoweenie: oh right [09:00] mAritz has joined the channel [09:02] _announcer: Twitter: "@ Toscho Only if I may use and Websockets Node.js: D" [de] -- Peter. http://twitter.com/sir_pepe/status/16759496598 [09:10] _announcer: Twitter: "@ Toscho Quark, which does not need load balancing, but only the right tool for the job: Node.js!" [de] -- Peter. http://twitter.com/sir_pepe/status/16759783474 [09:15] deanlandolt_home has joined the channel [09:17] derbumi has joined the channel [09:20] maushu has joined the channel [09:21] Tim_Smart: OK. I have been able to deploy biggie-router on a live site with good results :) [09:31] _announcer: Twitter: "just started playing with #node.js . cool stuff. I came onto it from looking into #less.js very nice technology." -- Shawn McElroy. http://twitter.com/luckysmack83/status/16760581948 [09:32] technoweenie: http://four.livejournal.com/747302.html hey ryah extended my mongrel upload progress code in 2007 [09:32] inimino: ryah: Debian mostly [09:41] LuckySMack has joined the channel [09:49] agnat has joined the channel [09:53] CIA-76 has joined the channel [09:59] ewdafa has joined the channel [10:09] nsm has joined the channel [10:14] LuckySMack has joined the channel [10:21] kodisha: mape: what does the click to the module name does? [10:24] mape: kodisha: huh? [10:25] mape: Oh yeah.. right now not a lot.. [10:25] kodisha: i click, and nothing happens [10:25] kodisha: http://npm.mape.me/ [10:26] mape: Yeah it is work in progress but I guess I'll add the github url to it [10:26] mape: or it should take you to a subpage [10:26] mape: which isn't created yet [10:26] kodisha: github url is fine [10:26] kodisha: (for now, until you create subpages) [10:27] mape: I'll look at it later, at work now [10:27] kodisha: ;) [10:28] kodisha: you should do the same with project owners :) [10:30] Tim_Smart: kodisha: Well, maintainers, not owners [10:30] manveru: now to the hard part... hooking up node with gnugo... [10:30] manveru: i assume nobody here has a parser for gtp? [10:38] kodisha: Tim_Smart: yes you are right, i was thinking what to say, but since he only show avatar of one person, somehow owner sounded logical [10:38] kodisha: this rain is killing me :( [10:38] chilts has joined the channel [10:39] kodisha: http://www.google.com/search?hl=en&source=hp&q=weather+belgrade&aq=f&aqi=g-p1g9j1&aql=&oq=&gs_rfai= [10:40] kodisha: 17 deg in end of June, come on :( [10:40] kodisha: i want my global warming back [10:40] kodisha: :D [10:40] _announcer: Twitter: "@notxonhoj Less with node.js - fine. Less compiled by JS in the browser - crazy! Especially with emphasis on reducing client load times." -- Omar Qureshi. http://twitter.com/omarqureshi/status/16763240806 [10:41] Tim_Smart: kodisha: Its winter here. 17 would be nice [10:41] kodisha: where are you Tim? [10:41] Tim_Smart: New Zealand [10:43] kodisha: that's like totally opposite side of the globe from here :) [10:45] Tim_Smart: Yeah, London is half way around the world from NZ. NZ is +12GMT [10:46] kodisha: so what's the local time? 23? [10:46] Tim_Smart: 2246 [10:47] LuckySMack has joined the channel [10:49] LuckySMack: i have a question about node.js. mostly just wrapping my head around the concept of its use. Currently i normally use php as my main language with some jquery and other js in the app. so does node.ns allow me to basically make pages in Js along with other languages (in my case php) where the Js code will run client side as well as be able to do server side stuff? [10:49] Tim_Smart: LuckySMack: node.js is a server-side language [10:49] Tim_Smart: Meaning it could essentially replace your PHP code if you wanted [10:50] LuckySMack: well i thought it handled Js as well for the client side of things [10:50] LuckySMack: ok [10:50] manveru: LuckySMack: client side will always run in the browser itself [10:50] kodisha: you don't get native "connection" of client side and server side js with node [10:51] Tim_Smart: Nope. If you have ever used Ruby on Rails, then it is a similar paradigm [10:51] LuckySMack: well i use php mostly so im trying to guage how/if node.js would assist or help me [10:51] LuckySMack: manveru, yea i know that [10:51] kodisha: you would write less code [10:51] manveru: it's not PHP, isn't that good enough? :) [10:51] kodisha: in same language [10:52] LuckySMack: lol [10:52] kodisha: and for some things it would probably run faster [10:52] Tim_Smart: LuckySMack: If you want to implement chat / realtime stuff, node.js can run alongside you main app. [10:52] LuckySMack: hey i do like php [10:52] Tim_Smart: Or you can implement the entire stack in Node.js. [10:52] LuckySMack: ok [10:58] nsm has joined the channel [11:03] Tim_Smart: Urgh PHP messes with your head [11:04] kodisha: i think i have a problem, i have app that is serving a html template, and when that template loads it starts to send bunch of ajax requests to node backend, so sometimes if i refresh frontend it refreshes fine, but sometimes it gets stuck, and just continues to shoot those ajax requests [11:05] kodisha: and i refresh agan, it aborts the previous connection and everything loads fine [11:06] Tim_Smart: So the AJAX isn't resetting or something? [11:06] kodisha: yeah, ajax continues to work [11:07] Tim_Smart: So you have a frontend problem [11:07] Tim_Smart: Doesn't sound like the node backend is doing anything wrong. [11:08] kodisha: but how the frontend could keep the page from not loading? i do have set interval for those requests, but shouldn't that stop on refresh? [11:09] kodisha: or do you have idea how should i stop all those requests on reload? [11:09] kodisha: wait on unload event? [11:09] Tim_Smart: The browser should shut them all off [11:12] LuckySMack has joined the channel [11:14] kodisha: can you please try this http://kodisha.net:8000/ and se if a) it loads without hanging b) works after few refreshes [11:15] Tim_Smart: kodisha: You should probably stream that sort of data. [11:16] kodisha: well, at some point i will definitely switch to web sockets [11:16] kodisha: but for now it's easier to have api which returns json [11:16] Tim_Smart: kodisha: Use socket.io, it has decent failovers [11:17] Tim_Smart: But yeah, its not refreshing for me either. Firebug just keeps on racking up xhr requests [11:17] ctp has joined the channel [11:17] kodisha: there you go :( [11:18] kodisha: it just happens at random times [11:18] Tim_Smart: kodisha: Listen for unload or whatever, and cancel execution [11:18] kodisha: will do that [11:28] ewdafa has joined the channel [11:28] kodisha: i hink i fixed it :) [11:28] kodisha: *think [11:29] kodisha: yup, works much better now [11:29] Tim_Smart: kodisha: What was the problem? [11:31] LuckySMack has joined the channel [11:31] kodisha: removed bunch of old code, added on unload listener, also before i switched to getting data via ajax pull i tried to push from server via templates, and for that i used global object and iterated on it [11:31] kodisha: removed all that, left only plain html and ajax calls, it works now [11:31] Tim_Smart: ah [11:32] kodisha: lesson learned: serve only clean html, modify via ajax [11:32] kodisha: :) [11:34] kodisha: Tim_Smart: right now i use this kind of urls to get the data : http://kodisha.net:8000/buffer/get/?name=local.localhost.network.pingRemoteHost [11:34] Tim_Smart: Yeah I noticed :) [11:34] kodisha: how should i switch that to socket.io? [11:35] kodisha: at some point there might be like [11:35] Tim_Smart: kodisha: socket.io will be a stream [11:35] kodisha: 20 charts on one screen [11:35] Tim_Smart: so you just set up 'channels' to listen on [11:35] kodisha: aha, i see, so one channel for one data source [11:36] kodisha: and then i listen for events [11:36] Tim_Smart: ya [11:37] kodisha: did people push relatively large amounts of data trough it? [11:38] Tim_Smart: Yeah I assume so [11:38] kodisha: and what if connection breaks? does it reconnect? [11:38] Tim_Smart: Not sure [11:40] kodisha: that is the nice thing with ajax calls, they keep hitting same urls until server responds, or you get your network connection back [11:41] quirkey has joined the channel [11:41] kodisha: i will do stress test when i get to work :) i will try hitting this with siege stress software, and see how it handles [11:42] kodisha: since this is all async, and in node, it should work fine [11:42] kodisha: oh wait, i can ssh to my office box from here :D [11:42] kodisha: yaay [11:42] zomgbie has joined the channel [11:43] kodisha: (i have ubuntu and siege set up there) [11:44] PyroPeter has joined the channel [11:44] PyroPeter has joined the channel [11:44] mape: kodisha: Requests per second: 290.13 [#/sec] (mean) [11:44] kodisha: 10 concurrent - brieze [11:45] kodisha: mape: that's cool, right? [11:46] mape: handles 240 concurrent [11:46] mape: Seems to be capping because of network though [11:46] mape: Getting around 3MB/sec [11:47] Tim_Smart: mape: What you benching? [11:47] mape: Tim_Smart: kodishas page [11:47] kodisha: wow, i'm getting nice figures here [11:47] kodisha: page or json urls? [11:47] mape: http://kodisha.net:8000/buffer/get/?name=local.localhost.network.pingRemoteHost [11:47] kodisha: cool [11:47] mape: or getTCPConnections rather [11:48] mape: might want to do the bench locally to get a better idea of what it actually handles [11:48] mape: kodisha: are you caching buffers? [11:48] Tim_Smart: ah nice. Bench http://fostle.com/ (served with node) [11:48] kodisha: mape: they are in memory, but i snapshot them to hdd via async job, so i can load them after crash/restart [11:49] kodisha: (i'm proud on that piece of code :D ) [11:49] mape: kodisha: I mean the output you send, do you save them as buffers in node? Or strings? [11:49] mape: Tim_Smart: Seems to have broken [11:49] kodisha: mape: they are bunch of objects [11:49] kodisha: circular buffer structure [11:49] kodisha: i iterate on them on every request [11:49] mape: Ah yeah [11:51] kodisha: load on server didn't went over 0.3 [11:51] kodisha: and i have fairly low end server [11:51] Tim_Smart: mape: My vps is down :/ [11:51] ewdafa: who is your vps provider? [11:51] mape: kodisha: Jup, slow connection helps lessen load ;) [11:51] mape: Tim_Smart: Yeah seems like it.. [11:52] Tim_Smart: hopefully it wasn't node that crashed it [11:52] mape: Just getting bad gateway [11:52] mape: so seems it is [11:55] mape: Tim_Smart: Can't access it? [11:55] Tim_Smart: Yeah checking logs atm [11:55] namelessjon: If I'm using a repl, is there a way to still get 'clean' output (via sys.puts or similar) rather than it being indented all over the place? [11:55] kodisha: bad gateway [11:56] kodisha: for http://fostle.com/ [11:56] mape: Tim_Smart: yeah probly a lot of access lines [11:56] kodisha: mape, look what you did to my tcp connections http://kodisha.net:8000/ [11:56] kodisha: :D [11:57] mape: jup they rose [11:57] robrighter has joined the channel [11:57] kodisha: what are you using to test? [11:57] mape: apache bench [11:58] margle has joined the channel [11:58] kodisha: cool, thanks [12:00] Tim_Smart: mape: Lots and lots of "Jun 22 11:51:45 timsmart kernel: [198918.273526] nf_conntrack: table full, dropping packet." [12:00] mape: :/ [12:00] kodisha: ACTION needs to go to work :/ [12:01] _announcer: Twitter: "Speaking of which, the list had come node.js Did notice of 0.1.99 release. I'll just update" [ja] -- KOBA789. http://twitter.com/koba789/status/16766789522 [12:01] _announcer: Twitter: "node.js impression is becoming the de facto standard. "Marak's pdf.js at master - GitHub" - http://j.mp/d7TO3U" [ja] -- mooz 4 clicks. http://twitter.com/stillpedant/status/16766794338 [12:02] chrischris has joined the channel [12:02] Tim_Smart: mape: I guess that means you ddosed my vps to death :p [12:03] mape: Something like that [12:03] mjr__ has joined the channel [12:07] kodisha: after similar incidents i dropped vps for good [12:08] kodisha: and switched to dedicated, you can find really cheap servers these days in Germany, but i guess that's too far for most of you guys [12:11] kodisha: and it rains again :( really hard this time, and i need to go outside :( [12:11] mape: I just keep my dev box in the clauset [12:13] kjeldahl has joined the channel [12:14] voodootikigod has joined the channel [12:15] Guest32322 has joined the channel [12:17] nsm has joined the channel [12:18] sechrist_ has joined the channel [12:20] stagas has joined the channel [12:21] phiggins has joined the channel [12:22] jedschmidt has joined the channel [12:24] fermion has joined the channel [12:24] jedschmidt: anyone else getting a "Bus Error" when running npm? i just updated node to the latest version, not sure that has anything to do with it... [12:26] kjeldahl: Trying to install node+connect on a new system. Then I get this wierd error: http://pastebin.com/5NdEHrdA Any ideas? [12:26] behmann has joined the channel [12:30] jedschmidt: actually, i take that back. my entire node install is now borked after the update. [12:31] jedschmidt: make test returns --- CRASHED --- for all tests. [12:32] jedschmidt: ryah: ^^ [12:32] TheEnd2012_ has joined the channel [12:33] Tim_Smart: jedschmidt: I haven't updated yet. I'll see if I can reproduce [12:33] jedschmidt: thanks again, Tim_Smart! [12:33] jedschmidt: i'm on OS X 10.5, fwiw. [12:34] Tim_Smart: ok ubuntu 10.04 here. [12:35] mw has joined the channel [12:36] jedschmidt: weird. [12:39] Tim_Smart: jedschmidt: [00:31|% 100|+ 105|- 0]: Done [12:39] margle has joined the channel [12:40] jedschmidt: yeah, every test crashes... i'm not in a dire need to figure this out now, but anything you know i should try? [12:40] Tim_Smart: make clean first [12:40] Tim_Smart: or make distclean [12:41] keeto has joined the channel [12:43] jedschmidt: okay, trying that. [12:43] behmann: I did a make clean first and the bug seems to be introduced in commit ca35ba640 [12:43] behmann: the previous commit, 95b252e8 (fix bad email address in authors file) runs the tests without errors [12:43] kschzt has joined the channel [12:44] Tim_Smart: "Darwin, Linux, Solaris. FreeBSD still needs testing." ;) [12:44] jedschmidt: yeah, that doesn't help. [12:44] kschzt: hi there. how do you guys unit test your JS, without a browser instance (at least the UI, in a CI system), with code coverage reports? [12:44] kschzt: JsTestRunner looks good, but requires a browser instance to capture [12:45] behmann: kschzt: jspec :) [12:45] behmann: http://visionmedia.github.com/jspec/ [12:45] Tim_Smart: http://github.com/cloudhead/vows looks interesting [12:46] Tim_Smart: website - http://vows.heroku.com/ [12:46] kschzt: cool, thanks, I'll take a look :) [12:48] kschzt: hmm, so maybe I'll run a combination of Selenium tests for browser/ui stuff, and some more core logic tests in Node [12:48] nsm has left the channel [12:49] JAAulde has joined the channel [12:49] maushu: I'm so tired. [12:50] JAAulde: wake yo butt up [12:50] JAAulde: j/k, I sympathize as that was me yesterday afternoon [12:50] JAAulde: couldn't get anything done [12:50] kschzt: behmann, JSpec looks great :) no code coverage reports in either afaics [12:51] chrischris has joined the channel [12:52] behmann: kschzt: woops, I missed that requirement in your initial message... off hand I do not know of a js utility that creates coverage reports [12:52] behmann: sorry [12:52] kschzt: could run them through this for instrumentation http://siliconforks.com/jscoverage/manual.html [12:54] stagas: posted an SO question about gaming: http://bit.ly/byM7KI [12:54] stagas: and node [12:56] stagas: does it make sense? [12:56] stagas: :P [12:56] Tim_Smart: stagas: Yeah the question is very legible. [12:57] kschzt: stagas, do you need to send the entire game state? how about just updating them with short events from the backend model? [12:57] kschzt: pubsub style [12:58] stagas: I'm not sure [12:58] stagas: what about cheating [12:58] kschzt: 'entire game state' sounds like a lot, but updating them with events from the model sounds right imho [12:58] kjeldahl has joined the channel [12:59] kschzt: cheating you account for in the backend, and drop events that don't match or that seem to be fake. [12:59] ajpiano has joined the channel [12:59] kjeldahl has joined the channel [13:00] stagas: it would be slower I think, I was thinking of sending just the actions of each user so it would be fast, render in frontend and keep the game in the backend also so that there is a real entire game state [13:00] kschzt: for 1) do they really need to be in sync? maybe you can find a way to have them be 'eventually consistent' ;) [13:00] kriszyp has joined the channel [13:01] kschzt: stagas, yeah I would do that too, just send short action events to the backend domain and have the domain publish model changes, and send those to the right consumers [13:03] davidsklar has joined the channel [13:03] kschzt: 1) is very hard to do :) [13:04] kodisha: can you "track" question on SO? [13:04] MattJ: I wish SO had feeds for searches :/ [13:06] kodisha: i don't see "watch this qustion" or "subscribe" button [13:06] LionMadeOfLions has joined the channel [13:06] kodisha: that sux [13:06] MattJ: No, though you can "favourite" questions [13:06] kodisha: ah, i see [13:06] kodisha: star [13:06] stagas: kschzt: if you don't mind you can post an answer or upvote it so other would see it :) [13:06] kodisha: upped [13:07] mitkok has joined the channel [13:07] stagas: the difference with all other multiplayer games is that with node.js we can have the same game run in the backend and in the frontend (well almost..) [13:08] MattJ: Wow, I take it back... SO does have feeds (now?) [13:08] MattJ: I sure didn't see them last time I looked [13:08] MattJ: ACTION gets busy [13:09] stagas: MattJ: yeah it has, it's just doesn't have a link in the page [13:09] stagas: it [13:09] kschzt: stagas, yeah I'm going to do just that with our game. I'll see about posting something :) [13:09] _announcer: Twitter: "It noted MOONGIFT: »node.js Web frameworks like Sinatra with" Express ": ☆ daily about open source http://am6.jp/ds7PMn" [ja] -- 高橋敦彦. http://twitter.com/attrip/status/16770491746 [13:10] kschzt: syncing game state in the backend between multiple Node boxes is a bit of a dilemma, ie. scaling out the backend [13:11] stagas: you could scale each room [13:11] kodisha: kschzt: he will probably need to fallback to some other technology for that [13:11] kschzt: in your case, maybe you can keep each room on its own node, yeah. [13:11] kodisha: ie zookeper [13:11] kodisha: for shared state distributed across the machines [13:11] stagas: yeah spawn a node for each room would be nice [13:12] stagas: would also be trivial to keep 1 game state in the backend and kill it when it ends [13:12] stagas: something like that [13:12] kodisha: damn i must go, ttys [13:13] kschzt: kodisha, that's a good idea, I was thinking Rhino + Hazelcast [13:13] kodisha: it depends of amount of data that needs to be shared [13:22] _announcer: Twitter: "@ Nmerouze I just started watching Node.js just for fun but in principle it would tell me whether it be a complete team" [fr] -- Jonathan Blanchet. http://twitter.com/jblanchefr/status/16771180389 [13:25] sanderjd has joined the channel [13:25] Ori_P has joined the channel [13:34] unomi has joined the channel [13:37] jedschmidt has joined the channel [13:37] [[zz]] has joined the channel [13:39] kersny has joined the channel [13:40] technoweenie has joined the channel [13:41] ncb000gt has joined the channel [13:44] chrischris has joined the channel [13:50] grahamalot has joined the channel [13:55] kodisha has joined the channel [13:55] kodisha: did i miss some cool game backend talk :) [13:56] stagas: actually since you left you were the one talked last [13:57] stagas: http://nodejs.debuggable.com/2010-06-22.txt [13:57] jherdman has joined the channel [13:57] stagas: lol [13:58] WALoeIII has joined the channel [13:58] kodisha: lol [14:00] technoweenie has joined the channel [14:01] stagas: we could use a game framework [14:01] markwubben has joined the channel [14:01] stagas: for node [14:02] femto has joined the channel [14:02] mitkok has joined the channel [14:02] sechrist_: Is IRC utf8 compliant? ≠ [14:02] sechrist_: seems like the IRC spec didn't care [14:04] technoweenie has joined the channel [14:05] zaach has joined the channel [14:05] rauchg has joined the channel [14:08] pandark_ has joined the channel [14:09] blowery: irc doesn't care [14:09] blowery: some irc clients interpret otuput as UTF-8 [14:10] fowlduck has joined the channel [14:10] kjeldahl: Ok, so now the connect library want something named "expresso" (when running make)? What is that (I'm on linux ubuntu lucid)_ [14:10] kjeldahl: ? [14:12] sanderjd has left the channel [14:14] ncb000gt: stagas: what kind of framework? [14:15] stagas: ncb000gt: that would handle the connections among the clients, ensuring game state, compensating delays, receiving and sending player actions to the other players etc. [14:16] stagas: ncb000gt: so that people don't have to reinvent all that stuff for every multiplayer game [14:16] bradleymeck has joined the channel [14:16] stagas: low level stuff [14:17] stagas: ncb000gt: and possibly a frontend equivalent to handle all that [14:17] gf3 has joined the channel [14:20] bradleymeck: python makes me stab myself in the eye w/ a spork at times, type checking should "never" be done, just catch the exception when it doesnt work is not a sound solution [14:21] tmpvar has joined the channel [14:21] ceej has joined the channel [14:22] sechrist: dterm [14:22] sechrist: is [14:22] kodisha: stagas: i think in this case frontend would depend on game type, so you only could implement low level frontend lib, and leave game specific details to game developer [14:22] sechrist: AMAZING [14:22] kodisha: ACTION googles dterm [14:22] stagas: kodisha: yes [14:22] Yuffster has joined the channel [14:24] stagas: the rendering/collisions etc stuff are so different on every game it's impossible to build a decent framework for those and everyone has to figure those on themselves [14:24] stagas: but connections, game states, rooms, should be common [14:24] sechrist: kodisha: :D [14:24] kodisha: sechrist: this dterm thingie looks cool [14:24] sechrist: wait are we discussing a game framework? [14:24] sechrist: now that it has UDP [14:24] sechrist: that's feasible [14:24] sechrist: is there proper pack() for buffers? [14:25] sechrist: or do you mean browser games [14:25] nefD has joined the channel [14:25] sechrist: totally different architecture [14:26] sechrist: ^^ was thinking server moreso than client [14:27] stagas: sechrist: I'm thinking of a framework that would handle multiplayer games in the backend mostly [14:27] sechrist: okay -- event driven-ness makes it really easy to implement message passing [14:28] sechrist: did you have anything specific in mind? [14:28] sechrist: << has developed gameservers [14:28] sechrist: I'm talking like realtime FPS though moreso than browser/mud stuff [14:28] stagas: sechrist: http://bit.ly/byM7KI [14:29] stagas: sechrist: yes real time stuff [14:29] sechrist: stagas: in technicality -- realtime cannot be achieved [14:29] sechrist: however [14:30] sechrist: the general way to accomplish this is to run simulation on the server [14:30] sechrist: and have the clients constantly synchronizing with the current state [14:30] stagas: sechrist: yes I was thinking the same also see the link [14:31] kodisha: sechrist: how does the fps, like lets say, quake live sync players? like you just described? [14:31] sechrist: well first off [14:31] sechrist: you ditch TCP [14:31] sechrist: because with realtime games you cannot have guaranteed message passing -- it screws everything up [14:32] sechrist: (this may be less of an issue in this decade, but it used to be a showstopper) [14:32] sechrist: then you implement prioritized messaging [14:32] sechrist: player location, and things of that nature (stuff you don't care about after it's happened) don't need to be verified [14:32] sechrist: so if there's a packet loss, there's no catchup [14:32] kodisha: (does node supports udp?) [14:33] sechrist: it does now [14:33] stagas: kodisha: yes [14:33] kodisha: great! [14:33] tmpvar: morning [14:33] sechrist: stagas: I saw a really good technical toc on the quake netcode [14:33] sechrist: it's pretty much the standard in gameserver architecture [14:33] stagas: sechrist: cool do you have any links on that stuff? [14:33] sechrist: let me look -- I might be able to find it [14:33] sechrist: also unreal also released a good tech doc [14:34] Aria has joined the channel [14:34] Aikar: id be interested too - however with my thing as i talked about last night its using WebSockets so no UDP for me :3 [14:34] sechrist: Aikar: you have a whole other set of issues to worry about [14:34] sechrist: you'll never have realtime [14:35] sechrist: http://trac.bookofhook.com/bookofhook/trac.cgi/wiki/Quake3Networking [14:35] stagas: sechrist: so realtime is impossible, but we can do stuff to make it 'seem' like realtime [14:35] crohr has joined the channel [14:35] sechrist: stagas: I was talking about over websockets hehe [14:35] sechrist: with WS you can get closer [14:35] tmpvar: also take a look at enet, if you want a game specific lib (for examples) [14:35] sechrist: but if you have clients relying on multipart and stuff no way [14:35] Aikar: well im not doing an fps so its not a big of a deal, and what im doing gives me the ability to run movement visualization on client side that runs identical to server, so theres not a continous stream of updating locations. [14:35] tmpvar: http://enet.bespin.org/ [14:35] sechrist: oh okay that works [14:36] sechrist: enet is very similar to the quake model [14:36] tmpvar: yeah [14:37] Aikar: basically i say "heres a start and end and a speed, move this player" and itll run movement calculations that are identical to the server. with periodic updates from the server to sync with server incase of client lag [14:37] sechrist: so with node's buffers... is there a possibility of a buffer overflow? [14:37] tmpvar: sechrist, seems possible, right? [14:37] tmpvar: im guessing that [] is overloaded and run through the appropriate checks [14:37] sechrist: I haven't looked at the actual implementation -- but the speed advantages make me think it's a lot closer to the silicon than anything v8 provides [14:38] tmpvar: sechrist, oh, it certainly is [14:38] tmpvar: its a char * [14:38] sechrist: h4x [14:38] bradleymeck: its a c++ char* so heck yea!, and yes [] is overloaded [14:38] sechrist: I must try to break it from jsland later today then [14:39] Aria: YEah, nothing so pointed that you might hurt yourself, but still a fast thing. [14:39] tmpvar: hehe [14:39] tmpvar: hey Aria -- how goes? [14:39] Aria: It's good! [14:39] Aria: Hoping to do some more HTML5 hacking tomorrow on the plane. [14:39] bradleymeck: wonder if we could get an unsafe buffer class that doesnt bounds check... [14:39] Aria: I'm sure you could. [14:39] technoweenie has joined the channel [14:39] Aria: But I'm not sure there's a point. [14:40] tmpvar: Aria, nice! where are you headed? [14:40] Aria: San Antonio. [14:40] tmpvar: interesting.. thats an odd city heh [14:40] bradleymeck: its nice and warm down here ty [14:41] sechrist: stagas: basically what carmack and co came up with is literall just this. only verify certain types of packets, provide sequencing for things that must parse in order, and a fast over ratio compression(if any) [14:41] tmpvar: bradleymeck, haha, yeah [14:41] sechrist: actual implementation varies, but that's generally how it all goes [14:41] Aria: Heh, so I've heard. But I've a good customer and friend there, so I'll give it a visit and work my rear off. [14:41] sechrist: San Antonio hm [14:41] aakour has joined the channel [14:41] tmpvar: sechrist, yeah.. variable garentees on ordering/delivery based on packet type [14:42] kurokikaze has joined the channel [14:42] sechrist: it's the only way to do things [14:42] stagas: I think I understand [14:43] sechrist: since mtus are generally like 1500 bytes -- a json message format should work [14:43] sechrist: so you probably don't have to worry about binary packing [14:43] sechrist: unless you're retrofitting to existing client code [14:44] tmpvar: or just use msgpack :) [14:44] sechrist: what is that? [14:44] tmpvar: http://msgpack.sourceforge.net/ [14:44] tmpvar: and http://github.com/pgriess/node-msgpack [14:44] sechrist: ooh json binary serialization [14:44] sechrist: even better [14:44] tmpvar: yep [14:45] tmpvar: but its like lightning [14:45] sechrist: by all means use that [14:45] stagas: tmpvar: nice! [14:45] kodisha: this should be included in node :) [14:46] stagas: doesn't have a js implementation? [14:46] _announcer: Twitter: "[del] [from euler] YUI Theater — Ryan Dahl: “Introduction to NodeJS” (58 min.) » Yahoo! User Interface Blog http://url4.eu/4rmX9" -- sldfjd ldajds. http://twitter.com/sldfjd/status/16776509272 [14:46] sechrist: could this be deserialized in the browser? [14:46] sechrist: or does this rely on Buffer() [14:46] tmpvar: ryah is still blowing up on the internet [14:46] technoweenie has joined the channel [14:46] JimBastard has joined the channel [14:46] sechrist: it's barack hussein squires [14:46] JimBastard: FU internet hate machine [14:46] softdrink has joined the channel [14:46] JimBastard: http://github.com/scottgonzalez/figlet-js [14:47] JimBastard: spite driven development > all [14:47] sechrist: JimBastard: explicit licensing [14:47] stagas: http://github.com/pgriess/node-msgpack [14:47] micheil has joined the channel [14:47] sechrist: JimBastard: is this the whiteroom implementation? [14:48] JimBastard: yep sechrist , i contracted scott to rebuild the whole thing based on the open spec found at figlet.org [14:48] sechrist: noice [14:48] sechrist: there needs to be a "like" button on github [14:48] JimBastard: to keep it fair and all, since techinically i did see that dudes shitty code (even though i would never use his retarded "parsing" strategy) [14:48] ajpiano has joined the channel [14:48] tmpvar: sechrist, agreed [14:49] bradleymeck: sechrist you can emulate a buffer in the browser it just wont run fast... at all [14:49] sechrist: I should be able to like repos, like commits, and like lines of code, comments, everything [14:49] kodisha: num of watchers == like :D [14:49] kodisha: sechrist: [14:49] kodisha: :D [14:49] sechrist: facecode [14:49] sechrist: codebook [14:49] sechrist: codebook sounds good [14:49] blowery: mycodepsace [14:49] kodisha: gitbook [14:50] sechrist: codebook.com is squatted [14:50] sechrist: I wonder what they'd take for it [14:50] stagas: kodisha: well it would be at least num of watchers*4 == like :P [14:50] Aria: How about viewing Github through a proxy server that lets you use jquery to add buttons? [14:50] sechrist: Security implications [14:50] Aria: Your own proxy server. [14:50] sechrist: But yeah that would work [14:50] tmpvar: or a bookmarklet [14:50] sechrist: oh then other people can't see my like [14:51] sechrist: grease script [14:51] sechrist: etc [14:51] tmpvar: yeah. fail whale [14:51] Aria: Sure, if they have the proxy server too, and there's a hub. [14:51] sechrist: -sigh- [14:51] kodisha: gitbook.com doesn't work [14:51] Aria: ACTION has plans in this direction [14:51] kodisha: .net is free [14:51] tmpvar: github should oss their site ;) [14:51] Aria: Like Gitorious did? [14:52] tmpvar: yeah.. maybe not [14:52] tmpvar: maybe I don't want to see how horrible it is on the other side [14:52] sechrist: then everybody would literally fork it [14:52] Aria: I keep intending to post all my stuff to Gitorious. [14:52] sechrist: tmpvar: some code should be left unpublished [14:52] sechrist: like windows [14:52] tmpvar: honestly, I'm really not sold by gitorious [14:53] sechrist: I need private repos sometimes [14:53] tmpvar: tried it, sort of hated it lol [14:53] tmpvar: gitosis [14:53] sechrist: and I do like github [14:53] sechrist: so I pay them [14:54] technoweenie has joined the channel [14:54] mw has joined the channel [14:55] mscdex: cout << "o hai noders." << endl; [14:55] Aikar: does github allow private on free accts? i dont mind paying tho [14:55] sechrist: nah [14:55] Aria: They don't. [14:55] sechrist: you gotta upgrade [14:55] sechrist: it's a nice business model [14:55] Aikar: i haven't gotten into the whole git movement yet tho heh [14:56] Aikar: haven't had the time to play with it [14:56] sechrist: Aikar: I just did a few days ago -- there's a TON I haven't learned yet [14:56] sechrist: I'm using it like I would use svn [14:56] Aikar: yeah i know its better, it just seems like theres alot to it, and just haven't had the time [14:56] sechrist: I need to get a book on it [14:56] sechrist: I just learned submodules recently [14:56] Aikar: and trying to get a coworker who programs archaicly to move to it? yeaaah thatll be hard [14:56] Aria: The day you know you 'get' git is when you make a feature branch, do something, then mainline it. [14:57] Aria: For something trivial. [14:57] sechrist: what do you mean? [14:57] blowery: ACTION mainlines everything [14:57] sechrist: blowery: even heroin? [14:57] blowery: EVERYTHING [14:57] sechrist: caffeine [14:57] blowery: oranges [14:58] sechrist: Aria: I'm not sure exactly how that would be beneficial [14:58] sechrist: you still have to merge [14:58] Aikar: saddens me he sits behind me editing files with a normal editor (not to bash an editor, but when working on projects IDE's really help), then alt tabbing to file zilla, manually drag and drop the file into the folder, then test... then alt tab back to the source folder to right click and use tortoise to commit. [14:58] Aikar: the time he spends on those lil things like that i get so much more done [14:58] Aria: So you don't break stuff, sechrist ;-) [14:58] creationix has joined the channel [14:58] Aria: It was a slightly ironic statement. [14:59] kodisha: so, i just bought gitbook.net :D couldn't resist :D [14:59] Aikar: lol [14:59] JimBastard: worst domain ever [14:59] sechrist: you should tie github accounts to facebook accounts [14:59] sechrist: and cross shit [14:59] JimBastard: you gotta reach higher [14:59] JimBastard: like asciimo.com [14:59] kodisha: sechrist: i will :D [14:59] sechrist: lulzimo [15:00] kodisha: and you *will* be able to leave comment on line of code [15:00] kodisha: :D :D [15:00] creationix has joined the channel [15:00] sechrist: okay so I'm about " " this close to taking pgriess's node-websocket-server and submoduling it into my fork of socket.io [15:00] sechrist: i'm not thrilled with their implementation [15:01] kodisha: that is about 2.5mm on my screen [15:01] kodisha: :D [15:01] sechrist: &nsbp; [15:01] pgriess: sechrist: i'd suggest taking miksago's. mine is just a clone of his w/ a few small changes needed to support speaking over UNIX sockets [15:01] pgriess: sechrist: he has plans to merge them soon [15:02] sechrist: hmm okay [15:02] pgriess: sechrist: for -server, that is. if you want a client, mine is the only way to fly [15:02] sechrist: for unit testing I will probably use your client [15:02] Aikar: how would a unix socket work on a websocket server. if your not communicating with a browser, why not use an ordinary raw Socket server? [15:02] pgriess: sechrist: ok. it should work well w/ miksago/node-websocket-server v0.1.2.00 [15:02] micheil: pgriess: I'll probably end up getting those patches commited ~ 2 weeks time. [15:03] micheil: pgriess: I'm not about most of the time. spending the nights of the next 2 weeks doing stuff for a production, so, yeah. [15:04] pgriess: micheil: ok, hm. i'm working on a ydn (developer.yahoo.com blog) post about using web workers + web sockets to do multi-process http serving and was hoping to pimp your stuff rather than my own fork [15:04] pgriess: micheil: they're really very small changes. if you have 5m to take a look you can probably just merge them [15:04] pgriess: micheil: a handful of lines each [15:04] micheil: pgriess: could you hold up on that? [15:04] micheil: because chances are, as soon as you publish, there'll be people wanting help. [15:04] pgriess: micheil: yeah, i can. i don't need to get it out asap, but i'd like it to go out soonish [15:05] micheil: yeah, sure thing [15:05] sechrist: pgriess: the connect bench I saw was impressive [15:05] pgriess: sechrist: cool, is there a link somewhere? [15:06] sechrist: pgriess: http://gist.github.com/434549 [15:06] mscdex: oh cool, keanu reeves has his own url shortener! [15:06] mscdex: http://kea.nu [15:06] mscdex: :-D [15:06] sechrist: oh neat [15:06] Aikar: lol [15:07] mscdex: huhu [15:07] pgriess: mscdex: lol [15:07] Aikar: pgriess: you work for yahoo? [15:08] pgriess: aikar: yeah [15:08] Aikar: cool, one my managers went back to yahoo few months ago [15:08] Aikar: know Nawien Sharma? [15:09] Aikar: well ex manager* lol [15:09] pgriess: aikar: no, never worked w/ him personally. but i've been doing a lot of work w/ his group of late [15:10] pgriess: sechrist: what was the node app that was getting benchmarked? 35k reqs/s over 4 cores is much higher than i was able to get as a reverse HTTP proxy [15:10] pgriess: (i maxed out at 14k reqs/s over 8 cores) [15:11] sechrist: pgriess: ask mape [15:11] sechrist: I saw that and went O.O [15:11] sechrist: didn't see the app [15:11] pgriess: mape: yt? [15:12] sechrist: that's pretty nuts stuff [15:12] sanderjd has joined the channel [15:13] pgriess: sechrist: i suspect he's doing the "echo" benchmark [15:13] sechrist: well yeahh [15:13] sechrist: but still [15:13] sechrist: you try doing 35k requests/s ! [15:14] creationix: pgriess: the app he's doing is just a hello world test, yes [15:14] creationix: but exported as an instance of http.Server so connect can use it [15:14] sechrist: Connect/examples/multitouch$ [15:15] creationix: oh, it was multitouch, nice [15:15] creationix: that's not just an echo server [15:15] creationix: it's got about 6 layers of my "slow" dispatch layer [15:16] sechrist: so what would it be on his hardware with just echos [15:16] pgriess: creationix: heh [15:16] sechrist: 50k? [15:16] sechrist: 70k? [15:16] sechrist: 100k? [15:16] pgriess: creationix: but it just responds back w/ a static response rather than doing any I/O, eh? [15:16] creationix: I remember now, it's multitouch with logging disabled [15:16] creationix: pgriess: it's loading indes.html from the disk and serving it [15:16] mape: pgriess: ? [15:16] creationix: and gzipping and other stuff on the fly [15:16] sechrist: loading from disk [15:16] sechrist: each [15:16] sechrist: time? [15:17] creationix: sechrist: nope, connect apps can usually cache smartly [15:17] _announcer: Twitter: "Ryan Dahl explains non-blocking IO benefits (as opposed to threads) better than I've ever seen in this nodejs vid: [15:17] pgriess: creationix: ok so aside from the first request, it's a hello world app (serving static content from memory) [15:18] pgriess: creationix: albeit more data than "hello, world" [15:18] creationix: more or less, yes [15:18] pgriess: cool, just wondering [15:18] creationix: I find the secret to making node apps fast is to cache as buffers in ram whenever possible [15:18] pgriess: the 35k reqs/s is impressive either way ;) [15:18] mape: just responding with a buffer no? [15:19] mape: and that scaled pretty linear [15:19] creationix: yep, the cache middleware stores the response body as a single buffer [15:19] mape: Usually I just max out my Gbit connection and stop trying to optimize [15:20] creationix: the default settings for the cache is to hold the data 30 seconds for static content [15:20] creationix: which is plenty long for synthetic benchmarks like this ;) [15:21] creationix: I did a raw throughput test with a 1mb response echo body [15:21] mape: well caching using buffers have real life usefulness [15:21] creationix: and get about 10 Gigabit on my laptop [15:21] mape: I moved 990MB/sec of css/js so that is really handy [15:22] _announcer: Twitter: "Going to try out Socket.IO (http://github.com/LearnBoost/Socket.IO-node) for node-notepad. ws.js is too limiting and has hardly any docs." -- Ratan J. Sebastian. http://twitter.com/rjsvaljean/status/16778503165 [15:22] mape: But yeah, benchmarks are always benchmarks [15:23] jarsen has joined the channel [15:23] mscdex: maushu: _announcer's second to last tweet ^^ [15:23] technoweenie has joined the channel [15:23] mAritz: ITS BROKEN AGAIN! [15:24] mscdex: nevar! [15:24] mAritz: YES! [15:24] kodisha: yup, no url :D [15:24] kodisha: or did the poster forgot to paste url [15:26] creationix: it should still point to the tweet itself, right? [15:26] mscdex: yep [15:26] kodisha: http://twitter.com/zackchandler/status/16778271150 [15:27] creationix: ahh yes, that was a good video [15:27] creationix: mde: you up yet? [15:28] mscdex: gedddddyyyyyyy :-D [15:28] mehmetd has joined the channel [15:28] Aikar: with require -- ./ is relative to calling file, and w/o ./ its by require_paths, is the CWD of the node process by default in the require_paths? ie base all includes from the root of project folder where applicable [15:28] mscdex: "Twitter is over capacity" :O [15:28] kodisha: yup [15:29] kodisha: did twitter rewrote all of their backend to scala? [15:29] mscdex: i dunno, but it doesn't seem to scale-a [15:30] mscdex: oh finally, it loaded [15:30] deanlandolt_home has joined the channel [15:31] creationix: Aikar: I don't think cwd is in the search path [15:31] Aikar: hmm [15:31] Aikar: why not? [15:31] creationix: hmm, not sure though [15:31] creationix: ACTION tests [15:32] creationix: nope, it's not in the path [15:32] creationix: but it's not hard to add at all [15:32] creationix: require.paths.unshift('.') [15:32] Aikar: having a file thats like 5 levels deep needing libs/x.js from the root folder is a little easier to understand than ../../../../../libs/x.js :3 [15:33] derbumi has joined the channel [15:33] creationix: remember that cwd isn't always the root of your code structure [15:33] jakehow has joined the channel [15:33] creationix: especially if using something like upstart [15:33] creationix: and messing with the require path from a library is like stomping on globals [15:34] Aikar: whats upstart? [15:34] creationix: upstart is the new initd type thing for linux [15:34] tmpvar: hey creationix, how goes? [15:34] Aikar: hm [15:34] creationix: tmpvar: good [15:35] creationix: Aikar: doing `require.paths.unshift(__dirname)` from your foot lib isn't too bad [15:35] creationix: perhaps "stomping" is a little strong [15:35] creationix: but it's not without side-effects [15:36] stagas: sechrist: the quake model is very interesting [15:36] sechrist: more like necessary [15:36] creationix: Aikar: also you could just require that any users of your lib have the root folder(of the lib) in their path and just assume it's there [15:36] stagas: sechrist: I'm searching for a delta/diff implementation for js [15:36] siculars has joined the channel [15:37] creationix: this it true for all installed libraries, and it's not hard to set the path right before requiring a lib [15:37] sechrist: compression is really your last concern [15:37] sechrist: for most messages they're going to be more size compressed than non-compressed [15:37] sechrist: I can pretty much guarantee you [15:37] kevwil has joined the channel [15:37] sechrist: msgpack looks pretty dope [15:38] sechrist: that's something to look into [15:38] sechrist: but compressing msgpack output seems moot [15:38] stagas: sechrist: yeah but how do you unpack on the browser side? [15:38] sechrist: .. your client is a browser? [15:38] sechrist: -sigh- [15:39] stagas: :) [15:39] sechrist: I asked you this earlier [15:39] stagas: I think I answered [15:39] sechrist: ah then i'm sorry [15:39] sechrist: you can't use udp in a browser except perhaps with a flash bridge [15:39] sechrist: and even then i'm not sure [15:39] gwoo has joined the channel [15:40] sechrist: js <-> flash <-compressed binary protocol-> server would be luls [15:42] texodus has joined the channel [15:43] technoweenie has joined the channel [15:44] gerad has joined the channel [15:52] Clooth has joined the channel [15:53] rauchg has joined the channel [15:53] phiggins has joined the channel [15:54] MattJ: "compressed binary protocol" - binary protocols don't compress all that well in general [15:56] aho has joined the channel [15:56] sudoer has joined the channel [15:57] gerad1 has joined the channel [15:59] mtodd has joined the channel [15:59] bradleymeck: sure they do [15:59] tjholowaychuk has joined the channel [15:59] kodisha has joined the channel [16:04] indiefan has joined the channel [16:05] kurisu has joined the channel [16:08] stevendavie has joined the channel [16:08] gerad has joined the channel [16:09] mikeal has joined the channel [16:11] markwubben_ has joined the channel [16:15] joshbuddy has joined the channel [16:18] creationix has joined the channel [16:20] nuba has joined the channel [16:20] jedschmidt has joined the channel [16:21] JimBastard: does anyone know why JSLINT hates me? [16:21] JimBastard: Lint at line 46 character 38: Unexpected use of '++'. for (i = 0; i < hashes.length; i++) { [16:21] tjholowaychuk: your missing a var in there [16:21] jarsen has joined the channel [16:21] tjholowaychuk: for (var i [16:21] JimBastard: nope [16:21] tjholowaychuk: might not be what it is bitching about [16:21] JimBastard: i is declared above [16:21] tjholowaychuk: it bitches about everything [16:21] JimBastard: tjholowaychuk: im doing one var statement per method [16:22] tjholowaychuk: hmmm [16:22] JimBastard: my CTO says, go make whole site jslint [16:22] JimBastard: lol [16:22] JimBastard: so im on it! [16:22] tjholowaychuk: ++i maybe haha i dunno [16:22] steadicat has joined the channel [16:23] JimBastard: tjholowaychuk: plusplus: false, [16:23] JimBastard: its a setting [16:23] creationix: JimBastard: Crockford hates ++ [16:23] creationix: then it's ignoring your setting [16:23] mikeal: it's a bad idea to use ++ in other languages [16:23] _announcer: Twitter: "this one for node.js has code coverage and is otherwise fun (also has a --boring option) as well. http://github.com/visionmedia/expresso" -- kschzt. http://twitter.com/kschzt/status/16782077366 [16:23] mikeal: so he doesn't want to encourage it [16:23] mikeal: but he openly admits it's not a security issue in js [16:24] creationix: that's the warning you get when the option is on and you have a ++ [16:24] mikeal: he should call that crockfordlint [16:24] phiggins: ACTION cheats and takes lots of crockfordisms out of his jsl.conf [16:25] mikeal: everyone does that :) [16:25] creationix: phiggins: id there a jslint bundle for textmate [16:25] creationix: all I can seem to find is javascript lint [16:25] mikeal: i think it complains about comma first [16:25] creationix: s/id/is/ [16:25] tjholowaychuk: its called javascript tools or something [16:25] phiggins: creationix: i use javascript-tools.tmbundle (that's the github proj name) [16:25] creationix: yeah, I don't think that one uses jslint [16:26] mikeal: i don't use jslint :) [16:26] rope has joined the channel [16:26] JimBastard: yeah [16:26] JimBastard: im setting it to allow ++ [16:26] JimBastard: for now [16:26] JimBastard: gonna switch to iterators though [16:26] JimBastard: .forEach9) [16:26] JimBastard: .forEach() [16:26] creationix: well jslint does have one really nice feature [16:26] creationix: it will detect mispelled variables pretty reliably [16:27] mikeal: yeah, you know what else finds that really easily [16:27] mikeal: running the code :) [16:27] phiggins: have you ever used jsure [16:27] creationix: and if you happen to agree with the white-space rules (like my work's rules) then that part is handy too [16:27] phiggins: it finds fun things like unused declarations and so on [16:27] creationix: mikeal: not always, running the code doesn't run all the code [16:28] creationix: the static analysis is actually pretty good [16:28] creationix: I just wish it wasn't so opionated about the little things that don't matter [16:28] zlatiborac has joined the channel [16:28] mikeal: phiggins: jsure looks nice [16:29] phiggins: the output is trash (either tags or ansi are the options. no plaintext) [16:29] creationix: ohh, ocaml [16:29] bpot has joined the channel [16:29] qFox has joined the channel [16:30] gerad has joined the channel [16:33] JimBastard: you know people are kinda stupid and very easy to influence [16:34] JimBastard: ACTION was riding the front-page of hacker news, reddit, and github all day [16:34] JimBastard: :-D [16:35] steadicat has joined the channel [16:35] gerad: we're a herd animal [16:36] kodisha: :D [16:36] creationix: woot https://www.michaelsutter.com/images/dpimg/fa5142e5807ab8556bb7e3751c5ff342.jpg [16:36] WALoeIII has joined the channel [16:36] JimBastard: that shit is all sorted out today to, it was trivial getting the FIGlet parser rebuilt [16:36] WALoeIII has joined the channel [16:37] JimBastard: all of that asshat's code is gone [16:37] JimBastard: will redeploy when i get home and update [16:37] JimBastard: send an email to that fucking badassjs.com guy [16:43] derbumi has joined the channel [16:43] _announcer: Twitter: "I made a simple HTTP API for LESS to CSS compiler with node.js. http://bit.ly/bMiCaz http://bit.ly/bEWnaV" -- Hong, MinHee. http://twitter.com/hongminhee/status/16783401684 [16:44] creationix: mape: are you still up? [16:47] _announcer: Twitter: "I made a simple HTTP API for LESS to CSS compiler with node.js. http://dahlia.ruree.net/lessc/ http://github.com/dahlia/web-lessc" -- Hong, MinHee. http://twitter.com/hongminhee/status/16783623786 [16:50] richcollins has joined the channel [16:51] grahamalot has joined the channel [16:58] Ori_P has joined the channel [17:00] kevwil has joined the channel [17:03] Tekerson has joined the channel [17:05] grahamalot_ has joined the channel [17:07] BrianTheCoder has joined the channel [17:08] kjeldahl: Ok, so now the connect library want something named "expresso" (when running make)? What is that (I'm on linux ubuntu lucid)? [17:09] creationix: expresso is a node library [17:09] JimBastard: kjeldahl: just yell at tjholowaychuk :-D [17:09] creationix: I think it's in a submodule [17:09] tjholowaychuk: yeah its a submodule [17:09] tjholowaychuk: should only need it for make test [17:09] tjholowaychuk: unless i did something funky [17:09] kjeldahl: Ah, something about git submodule. [17:10] kjeldahl: tjholowaychuk: Well, I tried a simple "make", but I guess that's the same thing. [17:10] tjholowaychuk: oh its because its the default [17:10] JimBastard: Yellsourcing and Spite Driven Development, key weapons in the bastard developers arsenal. #bastardfacts [17:10] cloudhead has joined the channel [17:10] creationix: tjholowaychuk: what do think about this? http://gist.github.com/448085 [17:11] kjeldahl: I'm getting weird errors when trying to move my app to another machine: http://pastebin.com/zwhXPDWU [17:11] kjeldahl: router.js in connect... [17:11] mikeal: http://couchcamp2010.eventbrite.com/ [17:11] tjholowaychuk: creationix: more JSGI style? or is this for the simple thing [17:11] mikeal: CouchCamp [17:11] mikeal: !!!!!!!!! [17:11] mikeal: you should all come :) [17:12] Gruni has joined the channel [17:12] creationix: tjholowaychuk: I don't know if I'd call it jsgi style [17:12] JimBastard: mikeal: only 800 bucks? ILL GO TWICE [17:12] JimBastard: :p [17:12] tjholowaychuk: the closure thing is identical isnt it [17:12] JimBastard: but really, when you gonna let me start paying you guys for couchdb hosting [17:12] creationix: but I'm changing modules from objects with named parameters to nested functions [17:12] JimBastard: and or can i haz beta [17:12] mikeal: that covers room, good food, and beer for two days :) [17:13] JimBastard: i think we are going to be ready to go live in a couple of weeks [17:13] mikeal: JimBastard: i know you can drink more than 800 dollars worth of booze in 2 days so don't pretend it's expensive :) [17:13] JimBastard: indexzero has fled to canada to write javascript for two weeks [17:13] creationix: kjeldahl: not sure what's going on there [17:13] creationix: addRoute isn't defined for some reason [17:13] JimBastard: mikeal: i actually fail really hard at drinking [17:13] JimBastard: mikeal: i worship the volcano god [17:13] mikeal: haha [17:13] joshowens has joined the channel [17:13] mikeal: Damien has a Volcano lanyard [17:13] JimBastard: creationix had to leave the room several times when he was staying at my place :p [17:14] JimBastard: :-D [17:14] mikeal: he wears it to conferences, it's the best lanyard for a CEO ever [17:14] JimBastard: volcano = god [17:14] _announcer: Twitter: "@Hasans Well, and because we love google technology we have to give a try for http://nodejs.org an Evented I/O for #Google V8 JavaScript!" -- Amr Numan Tamimi. http://twitter.com/amrnt/status/16785276143 [17:15] mikeal: that's a silly reason to use node.js [17:15] mikeal: how about "because it f'ing rocks" [17:15] JimBastard: but yeah mikeal nodejitsu is gonna be launching soon. we probaly roll with our one couch instance for the few first months, but we are looking into a couch cloud solution [17:15] JimBastard: and i would like to give some money to couch.io [17:16] mikeal: do you shard your database per user or are you doing one big ass giant db? [17:16] JimBastard: mikeal: so like, right now we are talking about nodejitsu's database [17:16] JimBastard: that only our APP has access to, not hosted apps [17:16] stephenjudkins has joined the channel [17:16] JimBastard: but yes, we'll need to give users their own DB at some point [17:17] mikeal: what size do you expect a single db to get? [17:17] JimBastard: unknown at this point [17:17] mikeal: ok [17:17] JimBastard: i would think not epic large, but large enough so users can do something usefull [17:17] JimBastard: cover like 80% of the average cases [17:18] JimBastard: our core DB should stay pretty much relatively speaking [17:18] mikeal: ok, our hosting should be able to handle that once it's up [17:18] JimBastard: should i just keep bugging you every week or so :-D [17:18] mikeal: still working out the kinks [17:18] JimBastard: of course [17:18] JimBastard: we'll continue to just use our one instance for now [17:18] JimBastard: i dont think we'll need to expand on that for a few months at least [17:20] derferman has joined the channel [17:21] saikat has joined the channel [17:22] caolanm has joined the channel [17:23] [[zz]] has joined the channel [17:25] _announcer: Twitter: "Is it not ironic that the node.js site uses frames? http://nodejs.org/api.html" -- st_luke. http://twitter.com/st_luke/status/16785957900 [17:26] JimBastard: yes frames are ironic [17:26] JimBastard: of.... [17:29] rauchg: is it ironic [17:29] rauchg: that it doesn't use iframes ? [17:29] rauchg: i do hate that the menu is generated with js [17:30] rauchg: or [17:30] rauchg: i should say [17:30] rauchg: that it relies on domready [17:30] rauchg: so the menu takes a while to show up [17:30] liucougar has joined the channel [17:31] kjeldahl: creationix: Sorry, was afk. Yes, really wierd. Just a fresh node install, then npm, then npm install connect, and that is what I got on an existing app of mine. Nothing fancy. I've googled around and found similar messages which may indicate it is somehow V8 that "forgets" stuff. No idea yet though. Thanks anyway. [17:31] kersny has joined the channel [17:35] creationix: kjeldahl: run your code through jslint [17:35] creationix: it's got a pretty good static analyzer [17:36] voodootikigod has joined the channel [17:36] JimBastard: rauchg: you would think one of us would step up and fix the docs lol [17:36] JimBastard: i think creationix did at one point [17:36] JimBastard: HEY DOES ANYONE IN HERE KNOW JS I NEED A SIDE MENU FOR THE NODEJS SITE [17:37] creationix: I think ryah, felixge, and mape did the current version, not sure though [17:37] kjeldahl: creationix: Thanks. The identical code runs fine on another machine though. My code is identical, but node & connect may be different versions (installed the latest on the new system where it doesn't work). [17:37] creationix: possibly [17:38] k23z__ has joined the channel [17:38] kjeldahl: creationix: It also fails "deep" inside connect (router.js), which is another indication of something really weird. [17:39] kjeldahl: creationix: If I comment out the simple block that activates the router, it works fine. That block is simply: http://pastebin.com/P2RB4Ykr [17:39] JimBastard: hrmmm so if im using jslint and have, browser=true....i need to var window; or else it fails the jslint, but the browser wont allow a redclaration of window. how can i fix this? [17:41] jxson has joined the channel [17:42] JimBastard: i got it, /*global window */ [17:43] deanlandolt1 has joined the channel [17:43] richcollins has joined the channel [17:47] mikeal has joined the channel [17:49] devtime has joined the channel [17:53] derbumi_ has joined the channel [17:54] _announcer: Twitter: "Haha! Successfully built Node.js on my Ubuntu Machine." -- Brad Johansen. http://twitter.com/johansenbrad/status/16787655462 [17:55] mattly has joined the channel [17:56] kjeldahl: creationix: Here's a minimal example which doesn't use any of my code: http://pastebin.com/YauiZYts [17:57] creationix: kjeldahl: ahh, I see, the bug is in router itself [17:57] creationix: I wonder when that got introduced [17:57] gerad1 has joined the channel [17:57] creationix: kjeldahl: are you grabbing connect from npm? [18:00] gerad has joined the channel [18:00] voxpelli-laptop has joined the channel [18:02] joshbuddy has joined the channel [18:03] sh1mmer has joined the channel [18:03] voxpelli-laptop has joined the channel [18:04] tjholowaychuk: creationix: the rest middleware is working out sweet, even for the rails-style mvc I am using it as the underlying router, so far so good [18:04] creationix: :) [18:05] tjholowaychuk: i think it could be the base for a lot of frameworks even if its not used directly [18:06] slaskis_ has joined the channel [18:07] Ori_P has joined the channel [18:08] sr: i love the node-router style thing [18:09] BrianTheCoder has joined the channel [18:10] maushu has joined the channel [18:10] tjholowaychuk: sr: the one in connect? or the other one [18:10] sr: the one in connect yeah [18:11] jxson_ has joined the channel [18:12] creationix: sr: what in particular do you like? [18:12] sr: simple :) [18:13] zomgbie has joined the channel [18:14] jxson_ has joined the channel [18:17] reid\work has joined the channel [18:18] gerad has joined the channel [18:18] creationix: sr: have you seen the syntax for the rest middleware [18:18] creationix: it does about the same thing, but in a different style [18:18] creationix: and a little more power [18:19] creationix: http://extjs.github.com/Connect/rest.html [18:19] creationix: sr: the reason I ask is because I'm trying to combine the two into the best of both worlds [18:19] creationix: it doesn't make sense to have two providers that do about the same thing included by default [18:20] sr: creationix, yeah i've read the test and all. but i like the simple router approach because it stays out of the way. sort of [18:20] sr: creationix, i should say i haven't written much node code too. so it's easier to start with something simple at the stage of the curve [18:20] tjholowaychuk: those docs are a little out of date now with the rest changes [18:20] devinus has joined the channel [18:20] creationix: tjholowaychuk: got a gist of the new stuff? [18:20] sr: how needs docs, the tests are great [18:21] gerad1 has joined the channel [18:21] tjholowaychuk: creationix: it just has the function so you can do app.get('/whatever') similar to router / express [18:21] tjholowaychuk: we could add regexp support though then it would be basically router [18:21] sr: creationix, imo, the router mixed with the rest route matching would be perfect [18:21] creationix: that's what I'm thinking too [18:21] tjholowaychuk: sr: the new version of rest is pretty much the same [18:22] tjholowaychuk: ill add straight up regexp support though for complicated shit [18:22] tjholowaychuk: and update the docs. i just wanted to keep them matching 0.0.5 [18:22] bradleymeck: tj if you could combine all the regex ahead of time you could save some time too [18:22] richcollins has joined the channel [18:23] creationix: tjholowaychuk: don't the patterns just compile to regex anyway? [18:23] BrianTheCoder: any idea why this can't seem to handle more than a few requests? http://github.com/BrianTheCoder/proxy-js/blob/master/fair_balancer.js [18:23] V1 has joined the channel [18:23] V1: Howdy [18:23] tjholowaychuk: yeah they do, but if someone passes a regexp its undefined right now, will probably fuck up [18:24] creationix: tjholowaychuk: I'm going to start with the closure refactor [18:24] tjholowaychuk: aight [18:24] tjholowaychuk: make a different branch though [18:24] creationix: should I make a branch since it's breaking all middleware api [18:24] creationix: :) [18:24] tjholowaychuk: yeah, anything we are not 100% on, well most things should be a different branch anyway [18:25] tjholowaychuk: until its solid [18:25] tjholowaychuk: but yeah fuck that will be a fun refactor. rewrite all internals / tests / dosc [18:25] tjholowaychuk: docs [18:25] creationix: :D it's the node way [18:25] utgo has joined the channel [18:25] bradleymeck: closure refactor? [18:26] tjholowaychuk: might need some booze for this one [18:26] tjholowaychuk: haha [18:26] jedschmidt has joined the channel [18:26] creationix: bradleymeck: http://gist.github.com/448085 [18:27] creationix: tjholowaychuk: yeah, I think it qualifies for a 0.1.0 version bump [18:27] tjholowaychuk: for sure [18:27] tjholowaychuk: i feel yucky bumping patch for features, but otherwise it will be like express 0.14.0 haha [18:27] creationix: at this rate we'll beat node to 0.2.0 within a month ;) [18:27] tjholowaychuk: which is fine but lame [18:28] mikeal: mjr__: http://couchcamp2010.eventbrite.com/ [18:29] mjr__: Yeah, I want to go. [18:29] mikeal: then come :) [18:29] mikeal: bring half your company, get em some couchdb lernins :) [18:29] bradleymeck: hmmm my solution was to make a contructor func that returned a handler, those going way of the dino? [18:32] steadicat has joined the channel [18:33] markwubben has joined the channel [18:33] marshall_law: creationix: any other low hanging fruit in the core? [18:33] kjeldahl: creationix: Re grabbing connect. I've tried both; from npm and from git (with the proper require statement and path). Same result. [18:34] marshall_law: creationix: is there a bug / feature request list somewhere? [18:34] creationix: tjholowaychuk: can you help kjeldahl, it looks like a bug in rest [18:34] industrial has joined the channel [18:34] tjholowaychuk: kjeldahl [18:34] tjholowaychuk: ; [18:34] tjholowaychuk: shit [18:34] tjholowaychuk: whats up bu [18:34] tjholowaychuk: d [18:35] tjholowaychuk: haha god damnit [18:35] tmpvar: drunk at the keyboard [18:35] tmpvar: haha [18:35] tjholowaychuk: not even thats the sad part [18:35] creationix: marshall_law: not sure [18:35] creationix: I can't find one [18:35] tjholowaychuk: kjeldahl: whats the issue your having? [18:35] creationix: marshall_law: ryah would know [18:36] creationix: I know he was wanting the ability to change the process's name (so it looks different in ps) [18:36] kjeldahl: tjholowaychuk: See http://pastebin.com/YauiZYts . Weird stuff. [18:36] tjholowaychuk: one sec ill check it out in a minute [18:37] marshall_law: creationix: ahh.. that's a little more tricky.. [18:38] creationix: kjeldahl: oh, it's router, not rest, my bad [18:38] creationix: that is strange [18:38] creationix: addRoute is clearly defined above [18:38] tjholowaychuk: there, now rest handles regexps, we can turf router whenever [18:38] V1: Is anyone here aware of issues with the 204 ( No content header ) [18:39] tjholowaychuk: kjeldahl, creationix: hes using router not rest i guess. cant help you there [18:39] V1: nvm -_- [18:39] V1: I was still sending content in my response.end() -_-" [18:39] creationix: yeah tjholowaychuk sorry about that [18:39] creationix: kjeldahl: hmm [18:40] creationix: since we're merging router and rest anyway, could you just try moving to rest [18:40] kjeldahl: I'm the only one having the issue (and only on my new machine)? [18:40] kjeldahl: creationix: Will do. Thanks. [18:40] stevendavie has joined the channel [18:40] tjholowaychuk: should we deprecate router or just rip it out [18:41] tjholowaychuk: ACTION wants syntax highlighting in mah man pages [18:42] bradleymeck: add it? [18:42] creationix: kjeldahl: http://github.com/extjs/Connect/blob/master/docs/rest.md [18:42] creationix: up to date docs for the rest module [18:43] creationix: tjholowaychuk: as awesome as that would be, I don't think man supports it [18:43] kjeldahl: creationix: Working from the rest example assuming that is up to date. [18:45] creationix: tjholowaychuk: you can deprecate router for now [18:45] creationix: but when the closure branch lands it will force a rewrite of all modules anyway, so at that point we can just remove it [18:46] tjholowaychuk: sounds good [18:46] creationix: I don't want to spend more than a day or two on the closure refactor [18:47] mattly has joined the channel [18:48] bradleymeck: so yes, handlers are going away? [18:49] creationix: bradleymeck: handlers? [18:50] bradleymeck: it looks like the {handle:func...} syntax is just becoming a func? [18:50] kjeldahl: creationix/tjholowaychuk: Using the rest handler instead of router seems to work just fine. Thanks. [18:50] tjholowaychuk: dope [18:50] creationix: kjeldahl: awesome! [18:51] creationix: bradleymeck: yes [18:51] creationix: and the module's themselves are just closures [18:51] creationix: bradleymeck: what do you think about that change? [18:52] bradleymeck: not sure i understand the modules are closures, seems like we can pass them closure scoped variables though [18:52] bradleymeck: i already did essentially that when making session support [18:52] creationix: bradleymeck: what I mean is that now modules are a function that returns the handle function [18:52] JAAulde has joined the channel [18:52] creationix: instead of an object with a setup prop and a handle prop [18:53] creationix: basically I'm nesting handle inside of setup and using the implicit closure to store config state [18:53] bradleymeck: ya, node-cookiejar.session does that, just have to take off the {} wrapper for its return, I prefer this as it lets more instance properties arise in a clearer sense [18:53] creationix: since before the state was stored in the module itself (which is a singleton in node) [18:53] jeffreyt has joined the channel [18:54] linuxsable has joined the channel [18:54] bradleymeck: plus this lets you do things like i have running where multiple sessions can be going at once (multiple module instances can mitigate tasks such as long or short sessions) [18:55] _announcer: Twitter: "I wonder when the first googlecl/node.js hacks will appear - or did I miss them already? #nodejs #googlecl http://bit.ly/dsAJXK" -- Rocco Georgi. http://twitter.com/GeeROC/status/16791135407 [18:55] creationix: exactely [18:55] tjholowaychuk: we had the Layer instance [18:55] tjholowaychuk: but like you said that was super unclear [18:56] creationix: yeah, I didn't even realize it was there ;) [18:56] _announcer: Twitter: "Perhaps you've all seen this. Node.js explanation http://bit.ly/cP4Esj" -- Jamie. http://twitter.com/jamiebikies/status/16791222964 [18:56] creationix: but also making the layers be just functions instead of objects really simplifies the simple cases [18:56] kodisha_ has joined the channel [18:57] creationix: the node hello world example now is a valid connect stack [18:57] creationix: tjholowaychuk: next I want to tackle dynamically building the stack, but that's a seperate issue, I want to finish the closure change first [18:58] mape: creationix: yeah [18:58] tjholowaychuk: for sure [18:58] tjholowaychuk: its just really anti-config right now [18:58] creationix: tjholowaychuk: I think that won't matter once we add dynamically building the stack [18:58] bradleymeck: the one thing i want to try to adapt connect to is not just a server middleware but a client middleware /drool [18:58] tjholowaychuk: creationix: ya that should be fine [18:59] creationix: bradleymeck: that would be cool, haven't thought much on it though [18:59] bradleymeck: i have but cant figure out a way to mix the request/response thing and have it use the same apis for both, but then again idk if it should, meh [19:01] mape: creationix: you be callin? [19:01] creationix: yes, [19:02] creationix: mape: though I don't remember what for [19:03] creationix: either someone had a question about the node api page or I wanted to talk to you about my api change for connect [19:03] creationix: mape: you already saw my gist for the proposed syntax right? [19:03] creationix: http://gist.github.com/448085 [19:03] mape: Yeah this mornin [19:04] kersny has joined the channel [19:04] mape: Any idea when you will have it in? [19:04] creationix: mape: a day or two [19:04] creationix: we need to update all the tests, docs, and implementations of the connect middlewares [19:05] mape: Ah k [19:05] creationix: but I think it will be worth it [19:05] kjeldahl: Ok, it seems connect isn't happy about being installed and used from npm either. Symlinking into src from github works fine, using require("connect") from npm install does not. [19:05] creationix: kjeldahl: that's strange [19:05] creationix: I always just symlink from git using nvm [19:05] creationix: so I wouldn't know [19:06] tjholowaychuk: kjeldahl: require('connect') from npm doesnt work? wtf.. [19:06] bjartek has joined the channel [19:06] rednul has joined the channel [19:06] kjeldahl: Ok, I haven't tested symlinking WITH npm. I though the idea was to avoid those things by using a package manager. [19:07] saikat has joined the channel [19:07] agnat has joined the channel [19:07] creationix: well, what nvm does is symlinks the node library into your system library repo [19:07] kjeldahl: So even after installing with npm, I have to symlink the connect lib dir into my own source? [19:07] creationix: not into your local code base [19:07] creationix: no, npm should do it for you [19:07] kjeldahl: npm/nvm. I use the former; have no idea about the latter. [19:08] creationix: nvm is quite different [19:08] creationix: it's a bash script with some utilities for installing versions of node and linking libraries into that node version [19:08] agnat: hi [19:08] creationix: no package management at all [19:08] kjeldahl: Ok, then it seems "npm install connect" doesn't work with just a simple require("connect"). [19:08] creationix: kjeldahl: yeah, that's the strange part, it should [19:09] creationix: but since I never do it that way, I really wouldn't know if it broke [19:09] kjeldahl: I get another weird message (to me anyway): throw new Error('rest provider requires a "routes" object'); [19:09] kjeldahl: (when running from the npm installed version) [19:09] tjholowaychuk: npm rm connect [19:09] tjholowaychuk: that is old [19:09] creationix: sounds like you got version problems [19:09] tjholowaychuk: 0.0.5 has an older version of the rest api [19:10] tjholowaychuk: that accepts the object [19:10] tjholowaychuk: ill release later today so that is up to date [19:10] kjeldahl: I installed using npm just hours ago... [19:10] tjholowaychuk: yeah but that release is old [19:10] tjholowaychuk: the rest api is different now [19:10] kjeldahl: Ok, that explains a lot. [19:10] tjholowaychuk: however require('connect') should be fine [19:11] kjeldahl: I'd be happy to give it a try if you update the npm registry or whatever. But if changes are still moving this fast, I may suggest removing "npm install connect" as a recommended installation method.. ;-) [19:13] javajunky has joined the channel [19:14] tlrobinson has joined the channel [19:15] kuya: iv got a situation where i want to emit events but id like to be able for any of the handlers to be able to stop the rest of the listeners from running. would it be a terrible idea to throw an exception inside an event handler as some sort of StopProcessingNow signal? [19:16] kuya: i guess id change/subclass EventEmitter.emit to handle the exception properly [19:18] kuya: the only other thing i can think of is to change EventEmitter.emit to examine the return value of each handler [19:20] creationix: tjholowaychuk: we loose the route functionality when switching to the function based stack [19:21] _announcer: Twitter: "looking into node.js and web sockets.. exciting stuff </geek voice>" -- Joe Lanman. http://twitter.com/joelanman/status/16792623145 [19:21] creationix: maybe that can be addresses in the dynamic building of the stack too [19:21] tjholowaychuk: ah, right right [19:23] ollym has joined the channel [19:23] tjholowaychuk: createServer().use('/', middleware) makes the most sense to me [19:23] creationix: yeah, something like that [19:23] stepheneb has joined the channel [19:23] ollym: morning [19:23] ollym: tjholowaychuk, did you create socket.io ? [19:23] tjholowaychuk: ollym: nope [19:23] ollym: you're visionmedia [19:24] tjholowaychuk: yup [19:24] creationix: tjholowaychuk: back when I designed the rest and router modules, I had different goals for them, rest has become what I hoped router would be [19:24] creationix: I wanted rest to be something resource oriented, not route oriented [19:24] _announcer: Twitter: "@cpojer Me too, I just don't see Go as "new." More like, lovingly inspired by C. Did you see Fab for nodejs? http://github.com/jed/fab" -- Thomas Reynolds. http://twitter.com/tdreyno/status/16792815896 [19:24] ollym: i love your work btw [19:25] tjholowaychuk: creationix: yeah i was thinking we could almost rename it to router, i dont know. rest is fine i guess [19:25] tjholowaychuk: ollym: thanks man! [19:25] ollym: i have a general question, how does one create an HTTP server in node.js to listen on ports other than 80 [19:25] tjholowaychuk: creationix: resource / mvc stuff is a better fit for larger frameworks i think. like.. ours lol [19:25] ollym: as if i were connecting to a page at: www.mysite.com/some/page:8080 in my browser [19:26] creationix: tjholowaychuk: sounds good, lets just rename it to router then [19:26] creationix: rest seems like a higher-level abstraction [19:26] creationix: groups of routes [19:26] cloudhead has joined the channel [19:26] creationix: ollym: just listen on another port [19:26] tjholowaychuk: rest makes sense to though, doesnt really matter to me. less doc changes this way though haha [19:27] tjholowaychuk: our api is RESTful.. so rest is alright [19:27] bradleymeck: ollym, the example on http://nodejs.org/ has it, its an argument to listen(...) [19:27] creationix: tjholowaychuk: it's not really RESTful unless you structure your routes along the ideas of REST [19:27] creationix: it's more HTTPful [19:27] ollym: haha, how stupid of me [19:27] ollym: ty all [19:27] creationix: it makes it easy to write RESTful apis, but doesn't enforce it or structure it in any way [19:28] tjholowaychuk: hmmmm [19:28] tjholowaychuk: damn well yeah im alright with that [19:28] tjholowaychuk: quite a bit of shit to change even for that [19:29] ollym: Why doesnt node use an API like: new Server.Tcp(port, host).listen(); ? [19:29] creationix: ollym: not entirely sure, but it really works out great for connect [19:29] creationix: you can create an entire server that't not bound to any port [19:30] creationix: and in another file, load the module and decide where to bind it [19:30] tjholowaychuk: ya its pretty slick [19:30] ollym: ok [19:34] ollym: does anyone here use Socket.IO? [19:34] tjholowaychuk: ACTION wishes js had ||= &&= [19:36] tjholowaychuk: creationix: ill branch off and rename rest to router and all the docs n whatnot [19:36] creationix: ok [19:39] ryah: tjholowaychuk: me too [19:39] tjholowaychuk: would be nice [19:42] Validatorian has joined the channel [19:45] stepheneb has joined the channel [19:46] Astro: awww, npm is driving me crazy: [19:47] Astro: /home/stephan/programs/npm/npm.js:58 [19:47] Astro: , config = Object.create(ini.config) [19:47] Astro: ^ [19:47] Astro: TypeError: Object prototype may only be an Object or null [19:47] ewdafa has joined the channel [19:47] Astro: is this known to any of you? [19:47] bradleymeck: what is ini.config? [19:47] creationix: Astro: looks like ini.config is undefined [19:47] bradleymeck: sounds like you gave it an undefined [19:47] kjeldahl: Yes, we've noticed you're crazy. ;-) [19:47] Astro: I just ran it... :/ [19:48] mape: ini.config? config.ini? [19:48] bradleymeck: ran what? [19:48] Astro: oh excuse me, I ran the wrong .js :) [19:48] creationix: guys, the error is in npm, not his code [19:48] Astro: thanks for the words though [19:49] creationix: Astro: just out of curiosity which js file did you run? [19:49] Astro: npm.js instead of cli.js [19:49] bmizerany has joined the channel [19:49] Astro: both are +x [19:49] mape: npm.js? [19:50] mape: Why not do a make install and use npm? [19:50] Astro: I'm still toying with it [19:50] Astro: and I don't like /usr/local, so I usually wait until it's in Debian [19:51] mjr_: I just started using node.js on this tiny little fit-PC2. It works pretty well. http://www.flickr.com/photos/mranney/4724806115/ [19:51] creationix: mjr_: is that a router? [19:52] mjr_: It runs ubuntu, dual core Atom 1.6. [19:52] mjr_: It's just a tiny, tiny little box. [19:52] creationix: wow, that's not bad for a box that small [19:52] mape: similar to the asrock stuff? [19:52] mjr_: But it also has two gig-e and one wifi. [19:53] mjr_: I don't know what asrock is. [19:53] mape: http://www.newegg.com/Product/Product.aspx?Item=N82E16856158007 [19:54] mape: mjr_: cost? [19:54] creationix: mjr_: so it's the perfect way to tap an ethernet stream ;) [19:54] mjr_: It's the perfect way to tap a wifi stream, which is why I got it. [19:54] mape: Hmm that is cheap [19:54] mape: The nics any good? [19:54] mjr_: mape: I think I paid like $280 for it, plus the solid state drive was extra. [19:54] mape: Ie can you get any good throughput? if you were to run it as a router? [19:55] mjr_: I dunno, I assume so. [19:55] creationix: atom is way more power than most routers [19:55] mjr_: That ought to be plenty of CPU for a router. [19:55] creationix: as long as the hardware does some of the work [19:55] creationix: (like wireless decryption) [19:55] mape: Yeah, wondering what brand of nice it is [19:56] mape: Prefer having intel ones, rather then realtek/random noname [19:56] mjr_: eth0: RTL8168c/8111c at 0xf8268000, 00:01:c0:06:02:26, XID 1c4000c0 IRQ 24 [19:56] mjr_: realtek [19:56] creationix: mjr_: which linux are you using? [19:56] mjr_: Yeah, the Intel ones are clearly a win since they are friendly to the Linux driver community and also do lots of hardware offload. [19:56] mape: Yeah, same with freebsd [19:57] mjr_: This one has Ubuntu 10.04 on it. I've accumulated about 1.5 hours of usage so far, so I'm sure I'll know more as time goes by. [19:57] mape: The server version of ubuntu? [19:58] mjr_: I can't remember. I don't think this is server. [19:58] creationix: ubuntu server is nice if you don't want/need a desktop [19:58] mape: Might want to look at using debian instead [19:58] creationix: arch is pretty nice too [19:58] creationix: I'd use ubuntu server over debian, but that's just me [19:59] jarsen has joined the channel [19:59] ryah: arch is the cool new stuff? [20:00] ryah: er - is that what the cool kids are using? [20:00] pgriess: ry: just sent you a patch for exec path on darwin. node is doa w/o it [20:00] creationix: ryah: don't think so, but it is cool [20:00] tmpvar: creationix, I really like how minimal debian is [20:00] mape: Less cruft [20:00] creationix: arch is really clean [20:00] tmpvar: arch is cool though [20:00] tmpvar: but you have to build everything? [20:00] creationix: who knows how new arch is? [20:00] creationix: I heard about it a few years back [20:01] creationix: arch has binary packages [20:01] creationix: it's like a modern gentoo [20:01] Tim_Smart has joined the channel [20:03] Tim_Smart1 has joined the channel [20:03] mjr_: what is arch? And why would someone name something that is un-googlable? [20:04] creationix: http://www.archlinux.org/ [20:05] Tim_Smart: creationix: Hey. Have you settled on a module format yet? [20:05] creationix: Tim_Smart: I tihnk so [20:05] creationix: I'll know for sure after rewriting all my code [20:05] creationix: Tim_Smart: http://gist.github.com/448085 [20:05] zomgbie has joined the channel [20:06] LOLWUT_: mjr_: yet another linux distro. nothin special. [20:06] apalyan has joined the channel [20:06] creationix: and next() expects (err, req, res) [20:06] apalyan has left the channel [20:07] Tim_Smart: creationix: Hmm. Interesting. Considering request and response are persistent [20:07] creationix: persistent? [20:07] linuxsable has joined the channel [20:07] Tim_Smart: They are passed by reference [20:08] _announcer: Twitter: "just opensourced #js URI Type for browsers + v8/node.js resolves references etc http://bit.ly/94oOQL as per rfc3986, #cc0 license, git" -- nathan. http://twitter.com/webr3/status/16795302220 [20:08] creationix: Tim_Smart: yes, but you can replace them with new ones [20:08] creationix: incase you want to modify the stream [20:09] tjholowaychuk: easier said than done though. creating an new IncomingMessage just to alter is pretty heavy duty [20:09] Tim_Smart: Exactly [20:09] tjholowaychuk: would be ideal i suppose [20:09] tjholowaychuk: but [20:09] tjholowaychuk: quite the PITA [20:09] javajunky: +1 arch [20:09] Tim_Smart: maybe next(err), req and res optional [20:09] javajunky: it was for some time the best for 64bit stuff, not so much now [20:10] tjholowaychuk: Tim_Smart: that is how it is right now [20:10] tjholowaychuk: you cant pass next(err, req, res) anymore (removed it a little while ago, but easy to add back in if it actually ends up making sense) [20:11] creationix: my thinking is that I want stream modifications to work at the level of the stream interface [20:11] creationix: not wrapping the calls to write and end [20:11] Tim_Smart: tjholowaychuk: Definitely, btw me and creationix are trying to keep the modules for biggie-router ( http://github.com/biggie/biggie-router ) interchangable [20:13] tjholowaychuk: creationix: for sure, but if you have say UppercaseStream(req) that kinda proxies its a huge hack because then you lose the the properties, and extending IncomingMessage / passing that on is not trivial really [20:14] Tim_Smart: creationix: My only thing against function that return functions: http://gist.github.com/449000 [20:15] jarsen has joined the channel [20:16] creationix: tjholowaychuk: well, there is nothing stopping you from just proxying the call to write like we do now [20:16] tjholowaychuk: Tim_Smart: i dont get what your doing :s a lot of the source looks like it was straight from connect [20:16] creationix: I just want the ability to replace the stream too [20:16] tjholowaychuk: for sure, im not against that, just wish it was easier for people to do [20:17] creationix: Tim_Smart: I don't understand your question [20:17] Tim_Smart: tjholowaychuk: Funnily enough, I didn't even look at connects source til after [20:17] tjholowaychuk: Tim_Smart: crazy lol [20:17] jstewart has joined the channel [20:18] creationix: it's a feature of the new design that you can just drop in a function instead of loading an entire module [20:18] Tim_Smart: creationix: In other words, I want to differentiate between directly inserting the handle function, and a function that return a function [20:19] JimBastard has joined the channel [20:19] creationix: Tim_Smart: yes, that part is hard [20:19] Tim_Smart: Two types of modules, but both functions [20:19] JimBastard: hey inimino , you might know this. does JSLINT not support the comma first style? it seems to hate it [20:19] JimBastard: maybe its a setting [20:19] creationix: Tim_Smart: but with my version, the burden is on the user [20:19] creationix: the framework ALWAYS expects the raw handle function [20:20] creationix: the user had to require the module and call it once to get at the handle function [20:20] creationix: or the user could just provide a plain function [20:20] javajunky: awesome, time to forward X11 over SSH to install Cygwin onto Wine on Linux to build Node …. wow I *know* how to party. [20:20] Tim_Smart: Right, My architecture is quite a bit different [20:21] creationix: Tim_Smart: well, then I don't know how you will tell the difference between a function and a function [20:21] creationix: just assume one over the other [20:21] creationix: and assume all modules are callback generators [20:21] Tim_Smart: yeah [20:21] CIA-76: node: 03Ryan Dahl 07master * r1b5ec70 10/ src/platform_darwin.cc : [20:21] CIA-76: node: Don't use NULL in realpath() on darwin, doesn't work in older versions [20:21] CIA-76: node: Thanks to Peter Griess for the bug report. - http://bit.ly/b3IOzW [20:21] Tim_Smart: That would be the comprimise [20:22] hoodow has joined the channel [20:22] creationix: technically mine will accept anything as modules as long as the end result is a handle function, but I'll make the convention be to make all modules be callback generators [20:22] isaacs has joined the channel [20:23] Tim_Smart: creationix: Haha I could check the function.length, and see if it is 3, but that is just unreliable [20:23] inimino: JimBastard: it doesn't support it, though there is a "sloppy whitespace" option which will cause it not to totally choke [20:23] creationix: Tim_Smart: don't do that [20:23] creationix: I'm not specifying the number of args on either handle or the setup function [20:23] blowery: jimbastard: try javascriptlint instead. it's less annoying. [20:23] isaacs: hey, what's this about a meetup in Santa Clara? [20:23] creationix: isaacs: at the velocity conference [20:23] CIA-76: node: 03Ryan Dahl 07master * r20905d9 10/ AUTHORS : Fix names in AUTHORS file - http://bit.ly/97yVc5 [20:24] blowery: JimBastard: http://www.javascriptlint.com/ [20:24] isaacs: creationix: when is that? [20:24] creationix: runs today till thursday [20:24] isaacs: oh, neat [20:24] creationix: isaacs: someone on the mailing list wanted to meet up [20:24] isaacs: i mean, specifically, though, is there some time when noders might be meeting? [20:24] isaacs: if so, and it's here in my hood, i'm so down. [20:24] ryah: oh what, velocity is down there? [20:24] isaacs: been super busy with work, kinda slipping with node stuff. [20:24] JimBastard: inimino: i just realized something [20:24] creationix: ryah: santa clara [20:24] JimBastard: who needs comma first when you gonna LINT it anyway [20:24] ryah: :/ [20:25] JimBastard: LINT will catch your missing commas [20:25] ryah: is it free? [20:25] phiggins has joined the channel [20:25] creationix: ryah: no the conf is sold out, but someone from there wanted to meet over lunch [20:25] jxson has joined the channel [20:25] isaacs: ACTION is in santa clara RIGHT NOW OMG [20:25] mikeal: the meetup will be free [20:25] isaacs: mikeal: no, you'll have to pay me. [20:25] creationix: ACTION digs through emails [20:25] isaacs: mikeal: i'm not going if it's free. [20:25] blowery: you have to sign a CLA to get in the door [20:25] ryah: mikeal: are you going to the meet up? [20:25] mikeal: dammit [20:25] ryah: blowery: ;) [20:25] mikeal: i don't feel like driving to santa clara today [20:26] creationix: ahh, it was pquerna [20:26] mikeal: Argentina is too f'ing good at football [20:26] blowery: that man loves his meetups [20:26] mikeal: this is insane [20:26] Tim_Smart: creationix: OK I'm going to make all modules functions that return function now :) [20:26] mikeal: they didn't even really try [20:26] creationix: Tim_Smart: cool, me too [20:27] isaacs: i'm gonna be up in the city this weekend if any of you feel like grabbing a drink or something. [20:27] isaacs: (the city = sf) [20:27] mikeal: we know what the city is dude :) [20:27] mikeal: i'll get a drink [20:27] joshbuddy has joined the channel [20:27] mikeal: by then i'll have a working phone [20:27] mikeal: just txt me [20:27] mikeal: there is football this weekend so i might already be drinking at noon [20:28] ryah: tjholowaychuk: what's the status with kiwi? [20:28] mikeal: proper football [20:28] ryah: tjholowaychuk: is that still in progress? [20:28] mikeal: world cup FTW! [20:28] tjholowaychuk: ryah: I have not touched it in months, its just sitting there [20:28] ryah: tjholowaychuk: are you going to abandon it officially? [20:28] ryah: tjholowaychuk: because that would probably be helpful to people wandering around [20:28] tjholowaychuk: ryah: eventually, npm is still bugging out a bit on me lately, but i plan on it [20:28] ryah: ok [20:29] javajunky: is… I can hardly hold my breath… are we finally going to sort out package management ;) [20:29] tjholowaychuk: I think it would be nice to leave it for a bit, but maybe document the move to npm [20:29] ryah: tjholowaychuk: sure [20:31] kodisha: yaaay, added load chart [20:31] kodisha: http://kodisha.net:8000/ [20:32] kschzt: that's nice [20:32] isaacs: mikeal: there are some nyc noders [20:32] mikeal: in town for the weekend? [20:32] isaacs: "the city" = nyc if you're east of Sacramento [20:32] mikeal: haha, good call [20:33] zomgbie has joined the channel [20:33] isaacs: if you're in nyc, then "the city" = manhattan [20:33] isaacs: thus, bronxers can "go into the city" [20:33] kschzt: kodisha, what's that? :) [20:33] bradleymeck: atx is lonely for noders lol [20:33] mikeal: yeah, i live in the Bay Area's Brooklyn :P [20:33] ryah: kodisha: looks sweet [20:34] isaacs: tjholowaychuk: yeah, i've seen some of the issues come up wtih express, express plugins, and connect. [20:34] teemow has joined the channel [20:34] isaacs: tjholowaychuk: it's on my todo list [20:34] isaacs: just been busy [20:34] tjholowaychuk: isaacs: no worries. seemed fine for me at least when i published them [20:34] Tim_Smart: isaacs: I have a working version of that router I showed you the other day :p [20:35] mape: isaacs: Hey, I rewrote some stuff on the npm page so it should just do 1 jsoncall for all the repo info stuff, that means I have to cache it on my end though, and as it sits now it updates every 5min [20:35] isaacs: gah! [20:35] isaacs: hi, everybody! [20:35] mape: Is that ok or does that add more load then it helps? [20:35] mape: :P [20:35] stepheneb has joined the channel [20:35] Tim_Smart: Everyone loves isaacs right now [20:35] isaacs: mape: yeah, that's fine, it shouldn't be enough load to matter, but caching rather than claling every req is a Good Idea. [20:36] mape: isaacs: Yeah so now there are like 80req every 5min instead [20:36] mape: kodisha: Doing munin but real time? :) [20:36] isaacs: mape: yikes. [20:36] blowery: isaacs: you in nyc normally? [20:36] isaacs: blowery: no, i'm in silicon valley [20:36] bradleymeck: hisaacs! [20:37] mape: isaacs: So I guess that is worse? :P Before you got 80req every single page load [20:37] blowery: isaacs: ah. :( [20:37] kodisha: mape: yup :D [20:37] blowery: i'm in upstate ny, looking for some regional node fans [20:37] mape: kodisha: moving to websockets and higher refreshrate as well? [20:37] Tim_Smart: socket.io would be a perfect fit there [20:37] isaacs: mape: hrm. can you cache it for longer? or maybe only update the child pages when the mtime changes? [20:38] mape: isaacs: I guess, just figured if it wasen't an issue it wouldn't be now since there should be less requests (unless the traffic is really low) [20:38] kschzt: kodisha, Hummingbird.. RRD.. real time [20:39] kschzt: kodisha, what's being used there for RRD? [20:39] kodisha: mape: well, i will see about higher refresh rate, if you have 10-20 charts higher refresh rate can cill browser [20:39] kodisha: kschzt: in memory circular buffer structure [20:40] quirkey_ has joined the channel [20:40] mape: Yeah I guess [20:40] isaacs: ACTION heads back to Jira hell. if you settle on a meetup date and time, plz post to the list, i'll be there. [20:40] kodisha: kschzt: http://github.com/kodi/nodius/blob/master/lib/CircularBuffer.js [20:41] BrianTheCoder: creationix: any idea why this blows up after a couple requests? it also significantly slows down after the first http://github.com/BrianTheCoder/proxy-js/blob/master/fair_balancer.js [20:41] kodisha: and http://github.com/kodi/nodius/blob/master/examples/circularBufferExample.js [20:41] kodisha: and i do snapshots of this structures to hdd [20:41] kschzt: neat [20:41] kodisha: but this is like few days old project, i just need to add snmp wrapper and stuff [20:41] mikeal has joined the channel [20:42] kodisha: and i'm working alone on FE and BE, so it's going kind of slow :) [20:43] admc has joined the channel [20:43] creationix: BrianTheCoder: not sure what's wrong, but using child processes sharing the same port is much faster [20:43] creationix: and the OS does the balancing for you then [20:43] unomi: kodisha: I am curious, what is the reason for the way you do the classes? [20:43] BrianTheCoder: ok, cool, I'll try that a shot tonight [20:43] unomi: NODIUS.Util fx [20:44] BrianTheCoder: creationix: any code exampes that I could look at for inspiration? [20:44] creationix: BrianTheCoder: it's built into the "connect" executable [20:44] creationix: just create a module that exports an instance of http.Server [20:44] creationix: call it app.js [20:44] kodisha: unomi: habit from working in bunch of FE projects [20:44] creationix: BrianTheCoder: and execute `connect -n 4` [20:44] creationix: (once you have connect installed of course) [20:45] unomi: whats the upside? [20:45] BrianTheCoder: and that will just use select underneath? [20:45] creationix: BrianTheCoder: http://github.com/extjs/Connect/blob/master/bin/connect [20:45] creationix: yes, more or less [20:45] kodisha: unomi: http://www.yuiblog.com/blog/2007/06/12/module-pattern/  [20:45] creationix: it will use libev's abstraction of select as the low level [20:45] kodisha: unomi: there might be no upside on server side [20:46] kodisha: unomi: since you don't have global visibility [20:46] kschzt: kodisha, way cool, gave me lots of ideas for Analytics ;) [20:46] BrianTheCoder: creationix: well this seems to do something a little different than what I was, cause I was actually trying to use it to load balance a collection of non-node servers [20:47] unomi: kodisha: well, it looks nice, I was just wondering since it didn't seem like you had many private vars [20:47] kodisha: why git wont submit empty dirs? [20:47] unomi: there might have been some nuance I wasn't catching [20:47] creationix: BrianTheCoder: yes, that's a different problem [20:47] tjholowaychuk: kodisha: it doesnt want to :p you can chuck a .gitignore in there i think [20:47] creationix: BrianTheCoder: I've gone down that road and was never able to beat nginx at it's own game there [20:48] tjholowaychuk: kodisha: just > .gitignore that dir [20:48] BrianTheCoder: creationix: well my big problems is nginx uses a round robin algorithm and the fair nginx module is way out of date [20:48] BrianTheCoder: plus this was a project I came up with to learn node [20:48] creationix: haproxy maybe? [20:49] kriszyp has joined the channel [20:49] creationix: good luck, but I was never able to make a node version that worked well [20:49] creationix: pgriess: made one I believe [20:49] BrianTheCoder: creationix: any idea why the code blows up after a few requests? it tells me the stream is no longer writable [20:49] slaskis has joined the channel [20:49] BrianTheCoder: but it works fine for tcp connects [20:50] creationix: it looks like you're closing the stream for http mode [20:50] bpot has joined the channel [20:50] creationix: not 100% sure what all the code does though [20:50] BrianTheCoder: well cause otherwise the request won't complete [20:50] BrianTheCoder: k, let me add some comments [20:51] creationix: BrianTheCoder: why use tcp instead of http [20:51] creationix: you want to proxy both? [20:51] BrianTheCoder: yeah [20:52] creationix: ok, one problem is you're using utf8 encoding instead of buffers [20:52] creationix: that will not scale well [20:52] BrianTheCoder: cool, how do I switch to buffers? [20:52] creationix: just don't set the encoding [20:53] ryah: kodisha: would be nice if Nodius scrolled smoothly [20:53] ryah: maybe by adding the new data behind a div [20:53] ryah: and then animating it [20:53] kodisha: unomi: i am aware that i have bunch of junk in code atm, but i need to build as much as i can as fast as i can (while i'm still hyped :D ), and after that i'll do some refactoring and cleanup. also this changes by the hour, so i need stuff i can easy access, that's why i write like NODIUS.moduleName .. once i finish this, all of those will be in separate files [20:54] kodisha: also i need to adjust my writing habits to node and server side :) [20:55] mape: Hmm think I'm finally grasping how to use git [20:55] mape: Took a while [20:55] kschzt: i think that CircularBuffer is fine, next() is a bit crazy [20:55] kschzt: but yeah work in progress :) interesting project [20:55] kodisha: next is for while(next() .... [20:55] kodisha: type of iteration [20:56] kodisha: and i need to detect empty element and stop iterating [20:56] BrianTheCoder: creationix: removed the encoding and added comments [20:57] richcollins has joined the channel [20:57] creationix: BrianTheCoder: it looks like you're assuming that "data" will only fire once [20:57] creationix: I don't think that's a safe assumption [20:58] unomi: kodisha: no, I think it looks nice [20:58] unomi: i was just curious is all [20:58] Tim_Smart: creationix: OK transition made, the little test that I have are passing [20:58] Tim_Smart: *tests [20:58] creationix: Tim_Smart: that was fast [20:58] creationix: :) [20:58] BrianTheCoder: creationix: well this is mode of a test right now, I'll add more error handling and robustness later [20:59] creationix: well, I'm pretty sure that http streams will almost always have more than once data event [21:00] DracoBlue has joined the channel [21:01] Tim_Smart: creationix: Can you always pass 'env' to the module as the last argument [21:02] creationix: Tim_Smart: not really, why? [21:02] Tim_Smart: creationix: OK. I will just pass reference to the router as the first argument then [21:03] kschzt: kodisha, where is your Storage defined there? can I not use MySQL? ;) [21:03] creationix: Tim_Smart: well with my architecture I can't pass anything to each middleware, the user would have to do it for me [21:03] creationix: I could pass it to the handle callback though [21:04] Tim_Smart: OK, so the modules parent function doesn't have any default args? [21:04] kodisha: kschzt: [21:04] kodisha: right now i save on disk [21:04] kschzt: ok [21:04] devinus has left the channel [21:04] jarsen has joined the channel [21:04] creationix: Tim_Smart: right, in mine the module/function is just a generator with no conventions for it's arguments [21:05] Tim_Smart: good :) [21:05] creationix: and the user has to always call it explicitly [21:05] kodisha: saving in mysql in table like id (varchar) | value (text/blob) would be easy, but it would just bring overhead [21:05] kschzt: kodisha, just saw the mysql.js and mysql folder in there [21:05] Tim_Smart: creationix: In biggie they call it with: .module('name', arg1, arg2 ...); [21:06] kodisha: kschzt: i will add monitoring of mysq [21:06] kschzt: ah right [21:06] kodisha: i need that to shoot queries [21:07] kodisha: also, at some point i might ditch json conf file (it might grow too big) to mysql config [21:07] kschzt: please don't :) [21:07] kodisha: yup [21:08] kodisha: i'm agains it as well [21:08] kodisha: but how to handle xx hosts with xxx params and properties [21:08] kodisha: look at the size for one host [21:08] kodisha: http://github.com/kodi/nodius/blob/master/config/devices.json [21:08] jstewart has left the channel [21:09] kodisha: this is gonna grow like crazy :) [21:10] kschzt: yeah, the Nagios files I used to tend to were pretty huge too :) [21:10] tjholowaychuk: ACTION damn js... ([^]+?) [21:10] bradleymeck: mmm 1 or more but fewest ^s [21:11] tjholowaychuk: its just silly [21:11] bradleymeck: you can also escape inside of []s [21:11] kodisha: kschzt: hmmm i might look at the nagios config files for some inspiration [21:11] tjholowaychuk: bradleymeck: no i know, but there is no dotall [21:11] tjholowaychuk: so [^] is basically "not nothing" haha [21:12] bradleymeck: (?:.|\n)+? [21:12] kschzt: kodisha, yeah you can always include and group stuff [21:12] bradleymeck: . caps all but \n in jsland~ [21:12] Tim_Smart: I always remove newlines if I need to find something in a large body of text [21:13] bradleymeck: what are you trying to match tj? i can rip up something gross for ya [21:13] tjholowaychuk: bradleymeck: mine works fine, i was just complaining lol thats all [21:13] Tim_Smart: developers, always complaining about something. [21:14] bradleymeck: yea, i really wanna make a 2nd regex engine but that would take a while w/ capture groups [21:14] kschzt: kodisha, it's not that the JSON becomes too huge but too hard to manage, and it's not too hard to make an UI to edit a JSON structure [21:15] kodisha: kschzt: and what about concurrent edits to the config file, and/or validation [21:15] romainhuet has joined the channel [21:15] BrianTheCoder: creationix: I just remembered why I used the tcp server instead of the http server, with the http server, I'd have to some additional processing of the request, I can't just write the raw response to the server [21:15] kodisha: kschzt: (when using UI) [21:15] kschzt: kodisha, if it doesn't parse as JSON, throw; lock editor with timeout :) [21:16] kschzt: besides with a UI it probably will parse and how many concurrent edits are you going to get on a config file? [21:16] creationix: BrianTheCoder: that's fine, but TCP is a lot harder to deal with, you have to manage a lot more by hand [21:16] BrianTheCoder: hrmm, ok [21:16] creationix: I'm really not an expert on TCP, just got burned a few times by it [21:17] creationix: someone who's been a C coder would be more help [21:17] kodisha: this is *the* only thing i cant't get my head on how to implement - multiple users editing one json file , there must be a best practice [21:17] kodisha: (excluding live edit :D) [21:17] creationix: kodisha: 3-way diff [21:17] creationix: and a gatekeeper [21:18] visnup has joined the channel [21:19] kodisha: (ok, this is now more general talk) but what to do when user leaves his browser open for too long [21:19] kodisha: implement timeout on lock? [21:19] creationix: kodisha: you only do short term locks [21:19] creationix: and diff in between [21:19] Tim_Smart: kodisha: Timeout + send something on beforeunload [21:20] creationix: in fact if the server is a single node process there isn't even a need for locks [21:20] BrianTheCoder: is there a crc32 implementation in node? [21:20] BrianTheCoder: creationix: is there a way to just write the response to the http server without setting headers? [21:21] creationix: not in the http module [21:21] mikeal: there is a generic javascript crc32 somewhere [21:21] creationix: BrianTheCoder: not that I know of least [21:22] kschzt: creationix, about node-git. I'm thinking about writing just this type of config-json-tree editor and versioning it [21:22] tjholowaychuk: BrianTheCoder: just do res.writeHead(200, {}); res.end('...') [21:23] tjholowaychuk: would be nice if it defaulted to {} for testing purposes there are lots of times I dont send headers [21:23] tjholowaychuk: but its not very realistic [21:23] creationix: kschzt: node-git currently just wraps reading the git repo [21:23] BrianTheCoder: tjholowaychuk: well but the response might not be a 200 [21:23] tjholowaychuk: BrianTheCoder: well you need A response code, whatever it may be [21:23] kschzt: creationix, no commit/pushing? [21:23] creationix: kschzt: nope, just reading a local repo [21:24] creationix: and it just wraps the "git" command [21:24] tjholowaychuk: just pass whatever status code you want, or have a little helper that lets you respond seemingly without headers [21:24] BrianTheCoder: tjholowaychuk: yeah, that's why I'm using the tcp server to avoid handling that [21:24] kschzt: ok [21:24] kschzt: way too scared of reinventing http://eagain.net/articles/git-for-computer-scientists/ [21:24] kschzt: but that's basically what I'll need :) [21:24] creationix: ask inimino about reimplementing git [21:25] konobi: what are the restrictions on who can enter node knockout? [21:25] liucougar has joined the channel [21:25] visnup: konobi: in what way? [21:26] konobi: can people who work for sponsors enter? [21:26] visnup: oh [21:26] visnup: yes [21:26] sveisvei has joined the channel [21:26] visnup: good question; I should make sure to get that into the rules [21:26] kschzt: inimino: what about reimplementing git? [21:27] creationix: inimino, if I remember right, made his own version control system in node [21:27] _announcer: Twitter: "Google Groups are borked? Redirecting ad nauseum for me. http://groups.google.com/group/nodejs" -- Daniel Shaw. http://twitter.com/dshaw/status/16799781814 [21:27] stagas has joined the channel [21:28] konobi: also... is it purely web stuff? [21:28] _announcer: Twitter: ""accounting for assholes" as a system design principle http://j.mp/9ZmcuL /via the #nodejs mailing list." -- Scott Trudeau. http://twitter.com/sstrudeau/status/16799838058 [21:29] visnup: konobi: doesn't have to be, but know that the general public will also be voting, so if they can't use it then they might ding you [21:29] visnup: but then again, if you have some really awesome telnet/ncurses app some people will likely vote it up too [21:29] BrianTheCoder: node knockout? [21:30] visnup: BrianTheCoder: nodeknockout.com [21:30] BrianTheCoder: ooooooh [21:31] gerad has joined the channel [21:31] kodisha: time for location change, work time over, bbl [21:31] kodisha: :) [21:34] jxson has joined the channel [21:37] Validatorian: anybody have a gist/blog/tutorial/etc that shows how to use nginx and/or varnish with node? [21:40] inimino: kschzt: I didn't reimplement much of git, it's actually much simpler, just a dumb store that accepts PUT and never loses anything you give it [21:42] sixthgear has joined the channel [21:48] Aikar: hmm, does node support this mongodb? [21:49] kschzt: inimino, would it apply to version controlling a json document? [21:49] javajunky: Aikar: yes [21:50] kschzt: I think I'm going to have to build a version control system for json docs [21:50] Aikar: man js is going to take over lol [21:51] tjholowaychuk: damn github inbox [21:51] ewdafa has joined the channel [21:51] tjholowaychuk: just deleted one by accident [21:51] inimino: kschzt: it's a totally opaque store, it just handles bags of bits [21:52] inimino: kschzt: and the only way you can query it is to find out how many revisions there are and when each was created, and to get the resource as it existed at a particular time [21:52] kschzt: :) [21:53] inimino: kschzt: so if you need something that actually does something with JSON you'd probably want to use CouchDB or something... [21:54] derbumi has joined the channel [21:54] kschzt: yeah, I'm using MongoDB for now [21:58] kschzt: we need to keep a rather huge constantly edited tree of json in various versions/branches [21:59] kschzt: a lot of branching and merging [21:59] inimino: ah, ok [21:59] mscdex has joined the channel [21:59] inimino: are you doing all the branching and merging on the client? [21:59] inimino: can you just store diffs on the server? [21:59] _announcer: Twitter: "Woo hoo, it's ALIVE!! Plumbing proof-of-concept done for a new #sideproject (victory lap of house with shirt over head) #nodejs" -- Tim Hastings. http://twitter.com/timhastings/status/16801506383 [22:00] kschzt: a chain of diffs could be possible [22:00] inimino: I tend to like the dumb-server, smart-client approach [22:00] mikeal has joined the channel [22:00] inimino: it scales well [22:01] kschzt: the server could just store the root, and the diffs for each change [22:01] inimino: yeah [22:02] kschzt: snapshotting at intervals [22:02] inimino: yes [22:02] markwubben has joined the channel [22:02] quirkey has joined the channel [22:03] Aikar: is node-mongodb better than node-mongodb-native or vice versa? [22:03] kschzt: inimino, very Greg Young. great point. [22:03] kodisha has joined the channel [22:04] rauchg: Aikar: -native is much more tested and has more features [22:07] kschzt: it's still a hard problem, just for a pretty simple service [22:07] kschzt: inimino, thanks, that was very valuable :) [22:09] linuxsable has joined the channel [22:14] mikeal: ryah, mjr_, mde: time for another Open Source BBQ! http://www.mikealrogers.com/archives/778 [22:14] mjr_: Sounds good, but I'll be in Michigan until July 5. [22:14] mjr_: Quite literally working from my parents' basement. [22:15] mikeal: you going there for inspiration :) [22:16] gwoo: play forkmaster! [22:16] mjr_: Ha. I took last week off and sat by the beach. Now for the next couple of weeks, my kids get to see their grandparents. [22:17] gwoo: mikeal: http://forkmaster.com felixge is also an avid player [22:17] JimBastard has joined the channel [22:17] mjr_: Lake Michigan beaches are actually awesome. Clean, warm, and freshwater. [22:18] mjr_: Not a lot of JavaScript or non-blocking IO though. [22:18] JimBastard: I heard JimBastard actually hurt JSlint's feelings. #bastardfacts [22:19] jstewart1 has joined the channel [22:21] stepheneb has joined the channel [22:22] bradleymeck: when is connects Layer hammering closure change hitting [22:22] bradleymeck: hurting jslint's feelings is easy, comma first it up [22:26] sechrist: so is it like pretty much standard procedure to put try catch around JSON.parse() when dealing with stream objects? [22:26] sechrist: I've seen it done in a few projects [22:27] sechrist: and I get random exceptions in mah app [22:28] ryah: mikeal: i'll be at my parent's house in san diego too [22:30] mikeal: weak! [22:30] mikeal: hehe [22:30] _announcer: Twitter: "@germdisco I think I'll test JS UI with Selenium; but I need something for Hudson to run Rhino/Node.js tests. Expresso is ok." -- kschzt. http://twitter.com/kschzt/status/16803243939 [22:31] ryah: mikeal: yeah, bummer [22:31] mikeal: wow, Redis meetup tomorrow [22:32] bradleymeck: sechrist, if you cant confirm it to be 100% json, yes, try catch the sucker [22:32] sechrist: it's from the twitter api -- i'm supposed to assume it is [22:33] mjr_: sechrist: sometimes the twitter API doesn't even serve up valid HTTP, so you have to assume it won't always serve up valid JSON. [22:33] sechrist: so the only thing I can do is catch [22:33] mikeal: my library handles that [22:33] mikeal: tweetstream [22:33] sechrist: i'm not using the streaming api [22:33] sechrist: i'm using oauth and rest api [22:33] mikeal: http://github.com/mikeal/tweetstream [22:34] mikeal: hrm..... [22:34] mikeal: i've never gotten invalid JSON out of the rest api [22:34] mape: oh yeah when does twitter kill oath? [22:34] mape: *u [22:34] mjr_: The "REST" API is notoriously non-conforming. [22:34] sechrist: the oauthcalypse is august [22:34] mikeal: that sucks [22:34] sechrist: I think it's awesome [22:34] sechrist: I also hope they force a password reset for every user [22:34] chilts: mape: it's killing basic auth, not oauth [22:35] mape: chilts: oh yeah right [22:35] chilts: :) [22:35] mde: They're pushing back the deadline for killing basic. [22:35] mde: By a month or so. [22:35] sechrist: Seriously they should force a password reset.. there's underground markets selling huge ass lists [22:35] chilts: they delayed it from this month ('coz of the World Cup) and then gonna phase it out slowly instead of killing it [22:35] sechrist: phished or stolen from legit basic auth apps [22:35] sechrist: it's nuts [22:35] mape: But yeah, the twitter api is fun, serving http failwhale pages when requesting json api data [22:36] chilts: heh, awesome [22:36] sechrist: that's probably the caching heir-achy misconfigured [22:36] sechrist: I have that happen with facebook sometimes [22:36] agnat has joined the channel [22:36] sechrist: akamai will cache a failure [22:36] sechrist: it's great [22:37] gerad has joined the channel [22:37] k23z: sechrist: does socket.io works ok with normal ajax requests ? [22:38] k23z: sechrist: I'm about to port my code to it [22:38] sechrist: what do you mean [22:38] sechrist: it abstracts it's own into socket.io code [22:38] sechrist: so yes on a low level it does [22:38] kodisha: i created this few weeks ago, it tour out to be really useful, you subscribe to watch, and once a day you get email notif [22:38] sechrist: but it's not meant for you to use it like that [22:38] visnup has joined the channel [22:38] kodisha: http://paper.li/tag/nodejs [22:38] mape: Hmm I found the socket.io docks to be so so [22:38] sechrist: docks? [22:39] mape: *docs [22:39] sechrist: oh yeah I just dove into it [22:39] sechrist: I understand everything it does now since I made a fork and started fscking with it [22:39] sechrist: I'm probably going to gut it's websockets and use miksagos [22:39] mape: That would be nice [22:40] sechrist: guille is pretty behind on his issues list [22:40] mape: Would be nice as well with the bare bone get it working kinda deal [22:40] mape: ports that needs to be open for flash to work, how it is setup and whatnot [22:40] sechrist: also I find it shocking how many people can't run the chat demo [22:40] sechrist: yeah exactly [22:40] sechrist: there's no documentation that normal XHR is not cross domain on some browsers, and that 843 is required for flash ACLs [22:41] sechrist: by cross domain I mean cross port [22:42] ceej: creationix: hey, i see you've been messing around with router/rest middleware, looks like rest has been merged into routers....is that right? [22:42] mape: fork it, merge with micheils stuff and get a good readme going :) [22:43] tjholowaychuk: ceej: yup [22:43] tjholowaychuk: ceej: "router" is the new name. but it combines the callback of router, and the routing paths of rest [22:43] ajpiano has joined the channel [22:43] tjholowaychuk: ceej: but accepts regexps as well [22:43] ceej: tjholowaychuk: nice, I like it :) [22:44] mscdex: cross-origin = different domain, different port, or both [22:45] _announcer: Twitter: "Connect 0.0.6 released http://bit.ly/9Ddjcy #nodejs - more examples, more powerful router middleware, etc" -- TJ Holowaychuk. http://twitter.com/tjholowaychuk/status/16804086986 [22:46] namelessjon: If I'm using a repl, is there a way to still get 'clean' output (via sys.puts or similar) rather than it being indented all over the place? [22:47] tjholowaychuk: namelessjon: what do you mean? [22:47] tjholowaychuk: whats the output like? it should be formatted by inspect() [22:48] namelessjon: Oh, the output from running a command directly in the repl looks great. [22:48] namelessjon: But if I have something in the background printing to stdout, it ends up all over the screen. [22:48] tjholowaychuk: ohhh i gotcha [22:52] punytan has joined the channel [22:52] mitkok has joined the channel [22:54] Validatorian: anyone know the long-hand version for ejs's <%= data %>? I want to print some data that is already within a <% block [22:56] zomgbie has joined the channel [22:56] _announcer: Twitter: "@ichverstehe yeah, maybe we should start the vertex IRC channel again - the node.js version has gotten a lot more attention" -- Steve Dekorte. http://twitter.com/stevedekorte/status/16804700340 [22:57] nefD has joined the channel [22:59] mape: vertex? [22:59] siculars has joined the channel [22:59] freshtonic has joined the channel [23:00] k23z: sechrist: is it lame to broadcast a message if I just have 2 chess players ? [23:00] sechrist: k23z: uh well a broadcast looks at every client [23:00] sechrist: if you ever have multiple matches [23:00] sechrist: that will fail [23:01] sechrist: you only want one match at a time? [23:01] sechrist: no rooms/partitioning? [23:01] k23z: what do you mean multiple matches? [23:02] sechrist: I would abstract your players into ChessPlayer objects or something and keep state in that object, but still expose the socket.io client [23:02] sechrist: k23z like multiple chess matches going on at the same time on the same node server [23:02] sechrist: like yahoo pool for example [23:02] k23z: sechrist: yea [23:02] k23z: sechrist: but the problem is they will all be connected to the same server [23:03] sechrist: is that a problem? [23:03] k23z: sechrist: and I can broadcast ... but only one of the multiple players at the same time should receive the move and use it [23:03] sechrist: you're not following me [23:03] sechrist: are you wanting like people to observe the match? [23:03] sechrist: or just 1 vs 1 matches [23:03] k23z: sechrist: I already have a ChessTable object on the server and I have an array with ChessTable s [23:04] k23z: sechrist: and players when they enter they are given an id [23:04] sechrist: but if you broadcast -- everybody connected will get the message [23:04] k23z: sechrist: like just 1 vs 1 for now [23:04] sechrist: if you have multiple chess sessions going on that won't work [23:04] k23z: sechrist: so how do I send it to some specific dude ? [23:04] k23z: sechrist: as an alternative to broadcast how do I send it to some specific dude ? [23:04] sechrist: client.send(json({event: 'blahblah', data: 'blahblah')) [23:04] sechrist: keep track of the opponent [23:05] k23z: is that method from socket.io ? [23:05] sechrist: have you never used socket.io? [23:05] sanderjd has left the channel [23:05] sechrist: hehe [23:05] sechrist: yeah client.send() is how you send a message to a specific client [23:05] k23z: sechrist: reading the example that comes with it, you're right [23:05] sechrist: client.broadcast ends it to every other player [23:06] sechrist: and listener.broadcast sends it to everybody [23:06] k23z: so in onClientConnect I should put the client in like ... a pool of players [23:06] k23z: and sit him at a table [23:06] sechrist: yeah when you match two players [23:06] sechrist: store a reference to each other in each [23:06] sechrist: or something [23:06] k23z: yea [23:06] k23z: sechrist: so basically I need to loose the standard AJAX calls that I have so far [23:06] k23z: sechrist: and replace all of them with socket.io [23:07] k23z: sechrist: socket.io looks much more efficient [23:07] sechrist: dur [23:07] k23z: dur = ? [23:07] sechrist: you should exclusively use socket.io to send messages [23:07] sechrist: having some other XHR call or something is counter intuitive [23:09] rob___ has joined the channel [23:09] SteveDekorte has joined the channel [23:11] _announcer: Twitter: "Node.js is great. Redis is great. Websockets is great. But ... there is something in the work of Web developers who will always disgusted me." [bg] -- Михаил Минков. http://twitter.com/_x10/status/16805568192 [23:12] mape: hehe [23:14] Tim_Smart: Anyone here familiar with vows? [23:14] sechrist: marriage vows? [23:15] Tim_Smart: vows testing framework [23:15] sechrist: :) [23:19] JimBastard: Tim_Smart: yeah [23:20] JimBastard: im using vows for a couple of projects [23:20] JimBastard: i dont know too much outside of the basics, but the basics are pretty good [23:20] Tim_Smart: For some reason the 'this.callback' in the topic is getting called twice [23:21] JimBastard: yeah Tim_Smart , I think I've seen that issue [23:21] JimBastard: you might be calling the script wrong [23:21] JimBastard: fuck i cant remember how to fix that [23:21] JimBastard: i was working on javascript-fu the other night and my friend hit the same problem [23:21] JimBastard: its either a bug, or you are running the tests wrong. i cant remember [23:21] hassox has joined the channel [23:22] JimBastard: i'd open up an issue on the github, cloudhead is pretty good about answering [23:22] Tim_Smart: I'll gist the gist of it [23:24] stepheneb has joined the channel [23:24] Tim_Smart: JimBastard: http://gist.github.com/449260 [23:25] JimBastard: ill make sure to ping alexis as soon as i see him and get an answer. i wanna know too [23:25] JimBastard: sorry i couldnt help ya now [23:25] tjholowaychuk: omGGggGg using break labels!! [23:26] Tim_Smart: JimBastard: I'll open a ticket [23:26] JimBastard: even better [23:26] JimBastard: ill make sure he reads it! :-D [23:26] JimBastard: ACTION yellsources [23:27] JimBastard: more like politely, persistently, asksources.....but thats just not as funny [23:27] Tim_Smart: http://github.com/cloudhead/vows/issues/issue/3 [23:28] pandark_ has left the channel [23:30] sudoer has joined the channel [23:31] [[zz]] has joined the channel [23:38] zomgbie has joined the channel [23:39] kersny has joined the channel [23:40] Tim_Smart: creationix: Looking at connects cache module, what happens when you have workers? [23:43] mape: cache it separatly? [23:44] Tim_Smart: mape: Atm it creates a cache for each worker by the looks of things [23:44] mape: yeah [23:44] mape: since they are different processes [23:45] Tim_Smart: mape: You aware of the new module format we proposed? [23:45] mape: the one creationix pasted earlier? [23:45] Tim_Smart: mape: Yeah, the whole function returning a function [23:45] mape: Yeah [23:46] Tim_Smart: If you haven't already, I'll try converting your asset module to the new format, and see if it works with biggie [23:47] mape: Sure, shouldn't be much of a change [23:47] Tim_Smart: Where is the source again? [23:48] mape: Note though that there is still a lot of stuff that I feel I need to fix before I throw it up to github [23:48] mape: Mostly error handling [23:48] mape: so it is very brittle now [23:48] Tim_Smart: Yeah sure, I just want to see if module will be interchangable [23:48] Tim_Smart: *modules [23:48] shajith has joined the channel [23:49] mape: http://mape.me:8081/assetsManager.js [23:50] Tim_Smart: From first glance they look interchangable [23:50] mape: Yeah it isn't very complex [23:50] visnup: I just ordered comcast internet [23:50] visnup: at the end they threw me into a live chat with a sajad [23:51] visnup: to confirm my order.. now I'm asking him if he likes world cup [23:51] Tim_Smart: mape: You aware I made a google-closure and yui-compress library on npm? [23:51] creationix: Tim_Smart: they have individual caches [23:51] mape: Tim_Smart: Yeah.. I don't like the java dependencies [23:52] Tim_Smart: mape: Ya. Thats why I made my asset packager act like a static site compiler [23:52] mape: although I lost the cssmin.js file.. And googling for it is a pain [23:53] mape: right now it is just a dummy that passes right through [23:53] Tim_Smart: creationix: Hmm. Might need to address that sometime [23:53] creationix: Tim_Smart: why, it's a cache [23:53] creationix: the overhead of ipc isn't worth it [23:53] creationix: they could share a memcache instance if wanted [23:53] mape: Actually not fixing it is good [23:53] mape: That way you are forced to code so it will scale [23:53] Tim_Smart: creationix: If you cache large files, on say 4 workers, that is x 4 memory [23:54] mape: Tim_Smart: Then you use memcache,redis [23:54] creationix: Tim_Smart: true, but processors cost more than ram [23:54] gf3 has joined the channel [23:54] pgriess has left the channel [23:54] Tim_Smart: mape: Yeah. Leave it up to the developer I guess. [23:55] creationix: I still have yet to see a valid need for workers in a real app [23:55] mape: Like I said, the nice part is that if you get it working like it is now you can just add more and more and it will scale [23:55] creationix: node is so fast that one proc is usually plenty [23:55] JimBastard: i think i almost understand fab [23:55] JimBastard: ahaha [23:55] Tim_Smart: creationix: If you have more than one network interface, one per interface is good [23:56] creationix: I don't think node can bind to interfaces yet [23:56] creationix: just ports and IPs [23:56] creationix: but yeah, that would be neat if it was supported [23:56] mde: creationix: If you need precise per-request error-handling with callbacks, you might need multiple processes. [23:56] mde: I can't figure out a good way to find out what request a callback error goes with. [23:57] mape: Tim_Smart: You haven't seen the javascript port of YUIcompress of css? [23:57] mde: So so far it looks like it's best just to queue the requests. [23:57] creationix: my plan is to catch errors at every level instead of depending on uncaughtException [23:57] Tim_Smart: mape: Nope [23:57] mde: Which makes workers really necessary. [23:57] Tim_Smart: mape: Java is fine for how I'm using it [23:57] mikeal has joined the channel [23:58] creationix: mde: doesn't that go against the architecture of ndoe [23:58] mde: creationix: If you have control of the entire app, that works well. [23:58] creationix: yes, but one process/request isn't going to scale well [23:58] mde: But you can't expect unsophisticated end-user devs to get that right. [23:58] creationix: it's a lot easier to get right with tools like Step [23:59] tilgovi has joined the channel [23:59] mde: I'm more interested in Node as a JS platform than specifically how fast it is. [23:59] creationix: and for when they screw up anyway, it's not that bad [23:59] mape: HaH! http://github.com/stoyan/yuicompressor/blob/master/ports/js/cssmin.js [23:59] mde: If they screw up, there's no way to know what request caused an error, from what I can figure out. [23:59] Tim_Smart: *self plug* and http://github.com/Tim-Smart/node-parallel */self plug* [23:59] creationix: mde: but if you're not interested in the parallel nature of node, then there are much easier platforms to work with