[00:03] _announcer: Twitter: "Very interesting and helpful article: Writing a Redis client library for Node.js http://bit.ly/aqhpJ5 #nodejs #redis #javascript" -- George Stagas. http://twitter.com/stagas/status/18313629420 [00:06] siedrix: @darkf http://wiki.github.com/ry/node/building-node-on-windowscygwin [00:06] stagas has joined the channel [00:06] Alystair: hmm guess it compiles but still not neat to see errors for things that can't possibly exist under the infrastructure it's being made in [00:07] benburkert has joined the channel [00:07] Alystair: http://gist.github.com/471960 that's normal to fail? [00:07] satori: I believe thats a bug [00:07] khug has joined the channel [00:08] satori: Someone posted about it last night. It just a test though [00:09] Alystair: ok [00:09] Alystair: cool [00:11] bradleymeck has joined the channel [00:13] athenot has joined the channel [00:18] Yuffster has joined the channel [00:20] [[zzz]] has joined the channel [00:31] jsilver has joined the channel [00:32] malkomalko has joined the channel [00:38] khug has joined the channel [00:40] _announcer: Twitter: "Me too interesting articles found in .. Looking to find a server named WebSocket node.js was aware of Server Side Script. If you're familiar with JavaScript syntax, 10,000 are likely to be challenging. http://bit.ly/dsBTf6" [ko] -- 허욱. http://twitter.com/1004lucifer/status/18315676432 [00:45] mklappstuhl has joined the channel [00:48] _announcer: Twitter: "Turns out JavaScript isn't really designed for binary stuff. Writing a lot of bit twiddling functions so I can get on with Node.js stuff" -- Tom. http://twitter.com/sh1mmer/status/18316067175 [00:49] keyvan has joined the channel [00:51] mscdex: i wonder if sh1mmer knows about Buffers? [00:51] admc_ has joined the channel [00:51] admc has joined the channel [00:51] mscdex: :S [00:52] Aria: Buffers have no bit twiddling functions [00:52] satori: heh. he does [00:52] sh1mmer has joined the channel [00:53] mscdex: huhu [00:55] aheckmann has joined the channel [00:56] pkrumins: Aria: but js has. [00:56] mikeal1 has joined the channel [00:56] Aria: Oh? (How would you xor a buffer with another? ... it ain't pretty) [00:58] sh1mmer: heh [00:58] sh1mmer: binary in JS is hard [00:58] sh1mmer: s/hard/annoying/ [00:58] satori: even harder without buffers :) [00:58] sh1mmer: satori: well, yes. that is certainly true [00:59] sh1mmer: satori: but it just feels weird to be using dec to hold binary data and have to chop and change it to use it [01:00] satori: yeah. js was never designed for it i guess. [01:00] sh1mmer: satori: once I've done a bit more I'll turn this into a bittwiddling library, so I'd love some feedback [01:00] sh1mmer: I want to get enough of the dns server done and then I'll abstract it [01:01] satori: Can anyone help me with c/c++ macros? I need to take a string arg from js and somehow turn it into `new CCCFactory` in c++ [01:01] sh1mmer: so far I think my favourite device is just using an array as an 8bit register, and then anything large dealing with as full bytes [01:01] sh1mmer: larger [01:02] Validatorian: sitepoint is giving away free copies of 'jQuery, Novice to Ninja' ebook, for those interested: (usually around 30 bucks): http://sale.sitepoint.com/ [01:03] wattz: evening honeypots [01:04] mscdex: we're not trying to trap spammers! [01:04] sh1mmer: we're not? [01:04] sh1mmer: but I _like_ viagra [01:05] mscdex: then don't set up a viagra honeypot [01:05] mscdex: i use to run a honeypot, but didn't really catch much of anything [01:05] mscdex: heh [01:05] mscdex: couple of foreign spammers was about it [01:06] sh1mmer: I used to run a honeypot but now I use Macs [01:06] sh1mmer: ;) [01:06] mscdex: i mean project honeypot [01:06] mscdex: ;-) [01:07] sh1mmer: I know. I'm just arsing around [01:07] mscdex: heh [01:07] sh1mmer: infosec is fun [01:07] sh1mmer: brb [01:07] benburkert has joined the channel [01:07] mscdex: lol @ Copyright � 2004�10, Unspam Technologies, Inc. [01:08] mscdex: Unspam [01:08] wattz: Hey, once i get my 50% of the 20million Im going to hold from my friend who is a nigerian prince, im hooking all you guys up [01:09] steadicat has joined the channel [01:16] everton has joined the channel [01:17] everton has left the channel [01:19] JimBastard has joined the channel [01:22] tilgovi has joined the channel [01:29] mape: micheil: There? [01:30] amuck has joined the channel [01:31] mape: Anyone here know how to solve exceptions with "illegal access"? [01:31] jedschmidt has joined the channel [01:32] wattz: what you guys use with node to interact with mongo? [01:32] wattz: native, mongoose..? [01:32] mklappstuhl has joined the channel [01:33] phiggins has joined the channel [01:35] wattz: phiggles! [01:41] derferman has joined the channel [01:41] liucougar_ has joined the channel [01:43] bpot has joined the channel [01:43] aho has joined the channel [01:45] cataska has joined the channel [01:52] markwubben has joined the channel [01:52] steadicat has joined the channel [01:53] mscdex: mape: what do you mean? [01:53] mape: mscdex: I get that error throw, and no stack trace [01:54] bpot has joined the channel [01:56] reid has joined the channel [01:56] mscdex: mape: using any C++ bindings? [01:57] mape: mscdex: no, think it has to do with the websockets though, when doing conn.write [01:57] mscdex: hmm [01:57] mscdex: this is on client or server end? [01:57] mape: server [02:00] jedschmidt has joined the channel [02:03] mape: can't find anything on it in the websocket-server source [02:04] isaacs has joined the channel [02:04] mjr_ has joined the channel [02:05] mau2 has joined the channel [02:06] jsilver: yo guys [02:06] jsilver: I just converted miksago's websocket server to coffee [02:06] jsilver: but it doesn't run (!) [02:06] jsilver: and then i noticed the original doesn't run for me either [02:06] jsilver: (lol) [02:07] jsilver: damn :( [02:11] mscdex: aw man, even the name "belvedere" is in use on github :-( [02:13] mscdex: uh wow wtf... http://github.com/kaesinee/Blocked-Toilet---Here-s-How-You-Can-Easily-Deal-With-It [02:13] mscdex: :S [02:13] mscdex: spam repos? lol [02:14] mscdex: yup looks like it [02:14] mscdex: :\ [02:16] ditesh has joined the channel [02:20] pavan_ has joined the channel [02:21] mklappst1hl has joined the channel [02:22] SamuraiJack has joined the channel [02:28] khug has joined the channel [02:31] Validatorian: is ciaranj active in this channel much? [02:32] steadicat has joined the channel [02:32] _announcer: Twitter: "In any nodejs developers Vic? # Yyj" [fil] -- TJ Holowaychuk. http://twitter.com/tjholowaychuk/status/18322210667 [02:34] siedrix: How can i add a listener to an specific function? [02:37] mape: siedrix: Check the EventEmitter [02:39] jedschmidt: heh, _announcer thinks TJ is tweeting in filipino. [02:41] mape: Hehe [02:41] mape: mscdex: So yeah, guess I shouldn't be coding at 04:40 but the illegal access was using JSON.parse instead of JSON.stringify [02:42] mscdex: ah [02:45] mscdex: that sounds about right [02:49] khug: just curious: any toronto node peeps? (I know jherdman & kaptainkrispy are) [02:52] jherdman: khug: i'm looking to start a JS group that's a bit more serious than the current one [02:52] khug: rad [02:52] khug: count me in! [02:53] jherdman: excellent! [02:53] khug: idn't even know there was a current one... [02:53] jherdman: well... i'm counting the Ajax one as JavaScript. [02:54] khug: OH [02:54] khug: yeah… apn never really hit critical mass [02:54] jherdman: yeah. it's down to just me and Brent right now [02:54] jherdman: rebrand/reorganize... i think it'll pick up steam [02:54] jsilver has joined the channel [02:55] khug: the rhino belongs to rpn [02:55] jherdman: absolutely [02:55] khug: where are you, btw? [02:55] jherdman: bloor/sherbourne [02:56] khug: right - I did know that [02:56] jherdman: i think you're in kensington, right? [02:56] liucougar__ has joined the channel [02:56] khug: krispy works near queen & spadina [02:56] jherdman: yeah. just three buildings north of me (i work on queen/spadina) [02:56] khug: I'm @ cityplace now - just moved from annex/rosedale [02:56] khug: where are you working? [02:57] jherdman: Celect.org. good company. not enough focus on agile though [02:59] khug: you guys in 174? [02:59] Alystair: khug: you there? I'm Torontonian :D [03:00] Alystair: khug: are you one of the lucky people that get 100mbit internet [03:00] Alystair: cityplace name is familiar [03:00] jherdman: Alystair: right on! another Torontorian! [03:01] khug: Alystair: yep - that's why I moved there :-) [03:01] Alystair: st.clair & bathrust area here, a bit north but easy transit :) [03:01] Alystair: khug: can I move in with you? or at least my server can move in with you~~~ [03:01] khug: getting 9+ megabYtes a sec almost makes up for my richmond st neighbours [03:02] khug: lol [03:02] mikecampo: wooo Toronto! I just moved to Waterloo from Yonge and Finch :) [03:02] Alystair: what about your upload speed? [03:02] khug: lemme check, it's good [03:03] Alystair: so wait, what's going on? you guys are making a group of some kind? [03:03] donspaulding has joined the channel [03:03] khug: upload seems to be about 10mbit [03:04] Alystair: jebus [03:04] jherdman: Alystair: yeah. i've got the ball rolling here http://www.meetup.com/torontojs/ [03:04] khug: just informal [03:04] jherdman: once i get a bit more free time i'm going to be pushing it a little harder [03:04] Alystair: ugh anything but meetup :/ [03:04] jherdman: recommendations? [03:04] Alystair: none what so ever [03:04] Alystair: they used to be pretty bad [03:05] jherdman: heh well, it's nice to have something to act as a hub for this sort of thing [03:05] khug: where are you working these days, Alystair? [03:06] jsilver: sup guys [03:06] victorstan has joined the channel [03:06] jsilver: anyone got any good javascript/node.js videos ? [03:06] jsilver: anything new [03:07] Alystair: khug: finally broke and got a debian machine in VM, windows only goes so far, even with msysgit and cygwin [03:08] satori: I got a c++ problem... I need to get a string supplied by user to create a factory template class ie: new Factory. [03:08] satori: How would one go about that in c++ [03:08] satori: ? [03:08] Alystair: there's a css group in toronto, wtf. [03:09] jherdman: there's a group for everything [03:10] mape: so beer meetups or show things and discuss meetups? [03:10] mklappstuhl has joined the channel [03:10] jherdman: i'd like to do the latter with a little of the former [03:11] Alystair: khug: online document signing website, online manga viewer and... most importantly... trying to figure out a site for bringing the local govt. people under one roof for citizens to make better voting decisions. [03:11] Alystair: ACTION really needs to get a laptop [03:12] khug: Alystair: macbook [03:12] Alystair: I had a top of the line MBP15" for 4 months, something about it infuriated me [03:12] khug: jherdman: need to find a quiet pub or something [03:12] mape: how great it was? [03:12] Aria: Too large. [03:12] khug: lol [03:12] jherdman: khug: yeah. that seems to be the challenge [03:13] Alystair: uhm you guys know there are local "labs" that we can take over for a night [03:13] khug: yeah, like hacklabto [03:13] Alystair: ACTION goes to that [03:13] khug: no beer [03:13] jherdman: or food [03:13] Alystair: or rather, open tuesdays [03:13] _announcer: Twitter: "Very tempted to learn node.js... about time? http://nodeknockout.com/" -- Sebastian Senf. http://twitter.com/mustardamus/status/18324697559 [03:13] khug: indeed [03:13] Alystair: but there is a place down the road from there on spadina that might be open to this kinda thing [03:14] jherdman: what's it called? [03:14] Alystair: trying to remember, it's more design oriented tho' [03:16] khug: is that where rails project night was? [03:16] khug: post-tsot-explosion [03:16] KaptianKrispy: no rails nite is at the Rhino [03:17] jherdman: ACTION waves hi to Kripsy [03:17] KaptianKrispy: Ajax pub nite is tomorrow at the rhono [03:17] khug: hey krispy [03:17] KaptianKrispy: hey [03:17] jherdman: god damn... spelling [03:17] KaptianKrispy: lol [03:17] KaptianKrispy: my own personal fail [03:17] khug: I meant project night [03:17] khug: not "pub nite" [sic] [03:17] khug: rich media institute? [03:17] KaptianKrispy: no one is doing any project nights - Corina and I were talking about starting it back up [03:18] KaptianKrispy: maybe we need to do a NodeJS project night [03:18] KaptianKrispy: ? [03:18] Alystair: ajax pub nite? [03:18] Alystair: it's no longer ruby eh? [03:18] khug: what about linuxcaffe? [03:18] jherdman: def. i just want to get together and talk about this stuff. i'm still learning and could use a hand now and then [03:18] KaptianKrispy: Ruby Pub Night is next week [03:18] jherdman: Linux Cafe could work [03:18] khug: ruby is tomorrow, ajax in next monday i think [03:18] KaptianKrispy: nope [03:18] khug: whoops [03:18] KaptianKrispy: ajax always comes first [03:18] KaptianKrispy: ruby pub night is the 3rd monday [03:19] khug: right you are [03:19] KaptianKrispy: did any of you read my 101 for node noobs on my blog? [03:19] jherdman: yup! [03:19] khug: not yet - link? [03:19] jherdman: well... glimpsed. [03:19] KaptianKrispy: http://soldierofcode.com/blog/ [03:20] KaptianKrispy: its the most recent one [03:20] KaptianKrispy: I have another coming soon [03:20] KaptianKrispy: on Connect, HAMLjs and the file system [03:20] KaptianKrispy: I'm a slow writter.... [03:20] KaptianKrispy: all that darn'd spelling stuff [03:20] Alystair: bars never really work for me [03:20] Alystair: to be honest [03:20] jherdman: why's that? [03:20] Alystair: I want to think, not drink :[ [03:21] jherdman: can't do both? [03:21] Alystair: yeah but it's subversive [03:21] KaptianKrispy: Rhino has wifi, the right ppl show up and its dark in the back [03:21] KaptianKrispy: none of the "normals" bother us either [03:21] khug: lol - at the bottom of your post is "Long Live Java" [03:21] jherdman: and tables. it's a pretty supreme location [03:22] KaptianKrispy: khug: read the post - its a dear john (or was that my other blog?... need to go check now) [03:23] KaptianKrispy: oh ya, its a video [03:24] KaptianKrispy: quick poll: how many ppl on here are in Toronto? [03:25] jherdman: ACTION raises hand [03:25] khug: hi [03:25] KaptianKrispy: KaptianKrispy: raises hand [03:25] Alystair: yo [03:26] KaptianKrispy: so 4 out of 225 aparently [03:26] jherdman: not bad [03:26] KaptianKrispy: true [03:26] bpot has joined the channel [03:26] khug: you can probably count kbranigan as well, though he's still in Mexico [03:26] KaptianKrispy: I kept bumping into Josh here and Kirean [03:27] KaptianKrispy: he's back isnt' he? [03:27] khug: josh? [03:27] KaptianKrispy: Josh Buddy [03:27] stepheneb has joined the channel [03:27] stepheneb has joined the channel [03:27] khug: never met him I don't think [03:27] khug: not sure when he gets back… maybe tonight [03:27] khug: dunno [03:27] KaptianKrispy: course he's leaving T.O. for San Fran (twitter recruited him) [03:27] _announcer: Twitter: "DNode... Crazy (#nodejs RMI) awesome. @simonw reliably finds the good stuff: http://is.gd/doxsD" -- Jeff Waugh. http://twitter.com/jdub/status/18325551352 [03:27] jherdman: wow. nice [03:28] mape: KaptianKrispy: http://github.com/mape/connect-assetmanager might be handy if you havent seen, if you are using connect [03:28] KaptianKrispy: looking now... [03:28] stepheneb has joined the channel [03:28] stepheneb has joined the channel [03:28] KaptianKrispy: mape: nice, thanks [03:29] boaz has joined the channel [03:29] mape: if you end up using it be sure to let me know if you have any issues/find bugs [03:29] khug: eek... [03:29] SubStack: \o/ @ that last tweet [03:30] jherdman: khug: ??? [03:30] khug: bundling assets feels really dirty [03:31] jherdman: tis a hack per the HTTP connection # problem [03:31] mape: khug: why dirty? [03:32] KaptianKrispy: DNode has a flaw I think... asyn data transfer without transactions is... well, wrong [03:33] tyfighter has joined the channel [03:33] SubStack: KaptianKrispy: explain? [03:33] isaacs: grrrrrrrr nginx [03:33] khug: I've always split up my js & css into behavioural groups, and don't send the firehose with each template [03:33] stepheneb has joined the channel [03:34] stepheneb has joined the channel [03:34] _announcer: Twitter: "@jncoward Yep, installed Kiwi and Jasmine through Kiwi. When running "node spec.js" I get an error about describe() being undefined (iirc)." -- Victor Sollerhed. http://twitter.com/MPV3/status/18325939528 [03:34] SubStack: KaptianKrispy: you could always build some sort of action queue on top of it [03:34] KaptianKrispy: well, lets say you set this up and have bi-directional data going back and forth with these function passers [03:34] khug: that way one change doesn't send the whole lot down the pipe [03:34] jherdman: khug: i generally bundle my assets into behavioural bundles and send them as required [03:34] khug: isn't that what conditional gets / etags are for? [03:34] KaptianKrispy: SubStack: yes you could I suppose, I'm not complaining about DNode just thinking about potential gotchas [03:35] sh1mmer has joined the channel [03:35] jherdman: khug: dunno to be honest. that's a blindspot in my knowledge. [03:35] khug: not hating on asset bundling [03:35] SubStack: KaptianKrispy: roger, I'll keep that in mind [03:35] sh1mmer: phiggins: xxx [03:35] khug: just don't use it [03:36] phiggins: xxx sh1mmer [03:36] mape: well I guess it depends on the situation, if it means faster load on empty cache that is good [03:36] mape: if people come back they are less likely to leave so no big issue to push redundant data if something changed [03:37] khug: feels like a slippery slope towards sending pdfs ;-) [03:37] mape: hehe nah [03:37] khug: i jest [03:38] mape: and with my asset manager you can do neat things like merge tons of small icon images into inline base64 [03:38] mape: so instead of 60 requests for icon images you get 1 request [03:38] khug: that's nice [03:38] mape: without the hassle of managing a sprite [03:38] khug: less ass-pain than the sliding door approach [03:39] jherdman: mape: that's neat. how does the weight of the resultant CSS file compare to the many sprites + a traditional CSS file [03:39] mape: jherdman: well the base64 does add more size then the original [03:39] khug: base64 adds about 66% iirc [03:39] mape: but it is more or less the same after gzip [03:40] khug: what's the min version of ff & ie that support inline images [03:40] jherdman: ah okay! [03:40] khug: ? [03:40] mape: Base64-encoded data URIs are 1/3 larger in size than their binary equivalent. This overhead is reduced to 2-3% if the HTTP server compresses the response using HTTP's Content-Encoding header. [03:40] SubStack: KaptianKrispy: maybe a general-purpose transaction system would have some utility separate from dnode? [03:40] jesusabdullah has joined the channel [03:40] khug: that's better than I thought [03:41] KaptianKrispy: SubStack: ya but then you might be losing something from DNode [03:41] KaptianKrispy: To me it seems like it might not be a fit [03:41] mape: khug: IE8 is suppose to support it, and more or less all FF do it, but my assetmanager allows you to server different packs based on the user agent, so you can have one link in the template and it will serve a css without base64data to ie7 and worse [03:41] mape: and an optimzed one for everyone else [03:42] liucougar has joined the channel [03:42] inimino: js> 256/64 [03:42] gbot2: inimino: 4 [03:42] KaptianKrispy: SubStack: think about this, if you start passing closues around and they are async, and A closure arives after B closure and both do the same thing but B assumes A got there first, how would you sync? [03:42] khug: wishing browsers would just up the concurrency default [03:42] mape: And yeah, user agent sniffing isn't the best in the world but in this case it doesn't matter since all that happens is that the person spoofing the user agent won't get the optimal one [03:42] inimino: mape ⋱ 4 times largen than their binary equivalent, then, no? [03:43] mape: khug: Hehe yeah, good luck on that one ;) [03:43] mape: inimino: huh? [03:43] khug: we'll have to hold beltzer hostage until he agrees [03:44] sh1mmer: mape: did you see souder's post on gmaps? [03:44] inimino: mape ⋱ base64 data served as UTF-8 has 64 distinct values per byte, instead of 256 [03:44] mape: sh1mmer: hmm don't think I did [03:45] SubStack: KaptianKrispy: I see what you mean. Presumably you'd nest them so that that kind of race condition couldn't happen, but that nesting can get pretty deep. [03:45] khug: DNode looks interesting [03:45] SubStack: khug: :) [03:45] mape: SubStack: Didn't we talk about that a couple of days ago? [03:45] sh1mmer: mape: also you should look at the spdy stuff on delta based transfer [03:45] mape: folding@home ish? [03:45] khug: you just passing the function.toString to the server? [03:45] SubStack: mape: yep, I just now blogged about it [03:45] sh1mmer: mape: also they have custom dictionaries in spdy too which is pretty interesting [03:46] isaacs: SubStack, KaptianKrispy: why can't A and B just both decrement a counter? it's not rocket surgery, that one. [03:46] SubStack: khug: nope, that wouldn't work reliably [03:46] mape: How is spdy going along? [03:46] sh1mmer: you can improve lz77/78 a fair amount if you can make assumptions about the data [03:46] SubStack: khug: simonw explains the trick better than I can on http://simonwillison.net/ [03:46] khug: cool [03:46] KaptianKrispy: SubStack: nesting becomes the transaction at the cost of holding the whole stack in memory - remember it needs to be unwound after the transaction finishes - if DNode has long running comms then this could crap out without warning [03:47] victorstan: what's up with npm? [03:47] SubStack: isaacs: true, but maintaining external state to sort out the dependency analysis seems like it could be abstracted away somehow [03:47] mape: what is up with npm? [03:47] victorstan: ! Error: npm@0.1.19 not compatible with node@0.1.100+ [03:47] sh1mmer: isaacs what is up with npm, eh? [03:47] mape: 1.1? [03:47] isaacs: victorstan: um.... it works for me with 0.1.100? [03:47] isaacs: victorstan: what are you trying to do exactly? [03:47] SubStack: KaptianKrispy: I hadn't thought about that, good insight. [03:47] sh1mmer: victorstan: works for me with .100 too [03:48] victorstan: so what is up?! [03:48] sh1mmer: victorstan: when I ran isaacs's install script it worked [03:48] sh1mmer: victorstan: doing it via cloing the repo off github myself didn't work [03:48] Alystair: so what are some projects people are toying with, on nodejs? [03:48] victorstan: the scripts/install.sh thing? [03:48] sh1mmer: not sure why [03:48] mape: sh1mmer: oh you mean the google people doing diffs to only push smaller parts? [03:48] isaacs: victorstan: if you're doing "npm install npm", or running make, it might fail. use the curl | sh thing on the readme [03:48] sh1mmer: mape: yes [03:48] isaacs: victorstan: depending on which version you're updating from [03:48] victorstan: clean install [03:49] isaacs: mape: speaking of, can you turn off your npm.mape.me request cron for an hour or two? [03:49] KaptianKrispy: SubStack: check this out for some deep water on the issue http://www.computer.org/portal/web/tkde/ [03:49] mape: sh1mmer: Ah yeah, didn't feel that would be beneficial for me considering the time and effort it would take to implement something like that, easier to just pack it good and invalidate it on changes [03:49] khug: alystair: planning to rewrite myttc.ca in node once I've finished this framework [03:49] isaacs: mape: i'm trying to figure out why nginx hates me,and getting log dumps every 5 minutes [03:49] mape: isaacs: ah k sure [03:49] sh1mmer: mape: it only make sense for browsers [03:49] mape: isaacs: there [03:49] mape: should be off now [03:50] isaacs: victorstan: can you please gist the log? [03:50] isaacs: mape: thanks. [03:50] mape: it still fetches if someone uses the page though [03:50] jherdman: khug: are you writing one from scratch? [03:50] mape: I believe [03:50] khug: yes-ish [03:50] victorstan: just ran curl http://npmjs.org/install.sh | sh [03:50] victorstan: same error [03:50] jherdman: neat! [03:50] isaacs: victorstan: giiiiiiiisssssttttttt!!!! [03:51] sh1mmer: mape: also if you are playing with that stuff you should look at dean edwards stuff [03:51] khug: will send a github link when I'm happy with the direction [03:51] KaptianKrispy: ok, gota go - night all [03:51] jherdman: sleep well! [03:51] sh1mmer: mape: there is someone who did a javascript lz77 implementation but I could never find the source [03:51] khug: night krispy [03:52] mape: sh1mmer: is that really needed when you gzip it? [03:52] khug: substack: love the robot [03:52] SubStack: ^_^ [03:52] mklappst1hl has joined the channel [03:53] isaacs: victorstan: oh, i see, you posted an issue, that works, too [03:53] isaacs: victorstan: what's node -v say? [03:53] victorstan: 0.1.100+ [03:53] mikeal1 has joined the channel [03:54] mape: sh1mmer: http://demo.java2script.org/lz77js/ ? [03:54] sh1mmer: mape: it's not really necessary [03:54] isaacs: victorstan: where's that + coming from? [03:54] isaacs: "0.1.100+ [03:54] isaacs: " [03:54] isaacs: that's not a valid version. [03:54] victorstan: well... [03:54] victorstan: that's what it said! [03:54] sh1mmer: mape: the server/browser should really do it [03:55] satori: + is added when it's not built from a git repo I think [03:55] isaacs: satori: nope. i'm using the distribution from nodejs.org (via nave) and it's just "0.1.100" [03:55] victorstan: you can come by and check ;) [03:55] isaacs: victorstan: how'd you install node? [03:55] sh1mmer: mape: and yes that's the implementation I've seen but I couldn't find the javascript source [03:56] mape: looks like he is running stuff server side [03:56] satori: issacs: actual_version=VERSION+'+' [03:56] satori: from wscript [03:56] mape: which doesnt work [03:56] sh1mmer: mape: I was digging around a bit and it sort of seemed like it might actually be a server implementation in java which got ajax'd across [03:56] isaacs: the one from the git repo is v0.1.100-11-g85ba67c [03:56] isaacs: satori: um.... whut? [03:56] satori: That is in my node wscript [03:57] isaacs: oh, i se... [03:57] satori: starts with; if os.path.exists(join(cwd, ".git")): [03:57] isaacs: this happens if you have the git repo, but git describe fails. [03:57] satori: yeah [03:57] isaacs: victorstan: what do you see when you do "git describe" in the git repo? [03:58] victorstan: 1s [03:59] victorstan: fatal: No names found, cannot describe anything. [03:59] satori: tags are missing? [04:00] victorstan: is there a difference between git pull and git clone? [04:00] isaacs: victorstan: git pull --tags ry master [04:00] Aria: pull is for updates, clone is initial [04:01] victorstan: does not like ry [04:01] Aria: try origin rather than ry [04:01] satori: ^ origin is more common [04:02] isaacs: ah, yeah, i have ry set up as a remote pointing to ryah's repo [04:02] isaacs: git pull --tags git://github.com/ry/node.git master [04:03] victorstan: thanks that seemed to work but sais already up to date [04:04] satori: do describe again. [04:04] victorstan: v0.1.100-9-gb1901cd [04:04] victorstan: different [04:04] victorstan: shtanx [04:05] satori: tags were missing from ur repo for some reason. [04:05] victorstan: PS [04:05] victorstan: why kiwi dead? [04:05] isaacs: victorstan: so if you ./configure etc again, npm will work [04:06] isaacs: victorstan: re: kiwi dead [04:06] isaacs: i think tjholowaychuk got tired of dealing with a package manager. he's got other fish to fry :) [04:07] victorstan: but it worked! [04:07] victorstan: anyway [04:07] victorstan: this thing still doesnt work [04:07] victorstan: ! Error: npm@0.1.19 not compatible with node@0.1.100+ [04:07] victorstan: same thing [04:08] isaacs: victorstan: yeah, you didn't reinstall node after updating the code. [04:08] satori: make distclean && make && make install [04:08] isaacs: satori: it's the ./configure that does it [04:08] satori: ... and ./configure [04:08] victorstan: ah ok [04:09] victorstan: kiwi seemed so much easier ... all due respect to npm [04:09] mtodd has joined the channel [04:10] victorstan: make gave me errors [04:10] victorstan: so i did config [04:10] victorstan: but node -v is still the same... [04:10] satori: do node first. Uninstall distclean configure build install [04:10] satori: then try npm [04:12] victorstan: im not good with uninstalling node... [04:12] satori: make uninstall [04:13] satori: in node src dir [04:14] victorstan: ok thanks [04:14] victorstan: worked [04:14] victorstan: ls [04:14] victorstan: oops [04:15] JimBastard has joined the channel [04:16] victorstan: You guys are very helpful. I appreciate it! [04:17] victorstan: v0.1.100-9-gb1901cd [04:17] victorstan: onto npm [04:17] isaacs: victorstan: :) [04:18] isaacs: victorstan: fyi: if you try to publish something and it fails, add "--registry http://registry.npmjs.org/" to the command [04:18] everton has joined the channel [04:18] isaacs: ACTION is in a boxing match with nginx at the moment. The Russian is winning. [04:18] victorstan: it worked it said [04:19] isaacs: victorstan: i mean, if you package something anpmd publish it with n [04:19] victorstan: why what does that do? [04:19] isaacs: npm [04:19] isaacs: victorstan: it temporarily sets the config param, just for that one command. [04:19] victorstan: k one problem at a time... [04:21] stepheneb has joined the channel [04:21] isaacs: :) [04:21] isaacs: victorstan: good attitude [04:22] victorstan: yeah, tell me about it... npm install connect not ok... [04:22] victorstan: sigh [04:23] isaacs: victorstan: failed on the "make install-docs"? [04:23] victorstan: yeah it seems so [04:23] isaacs: victorstan: yeah, you should bug creationix and visionmedia about that, or you could "gem install ronn" and then try again [04:24] victorstan: wow, how tightly couple is nodejs to ruby? [04:24] satori: \o/ I finally grok SetInternalField() .... v8 needs better docs [04:25] isaacs: victorstan: not very. [04:26] isaacs: victorstan: it just happens that a lot of folks use ronn for docs, and connect has you build the docs, rather than building them and including them in the package, like npm and node do [04:26] sh1mmer: victorstan: not at all [04:26] victorstan: is see [04:26] sh1mmer: victorstan: a few people use some Ruby tools for build or testing harnesses [04:26] victorstan: thats silly [04:26] sh1mmer: other people use C or Python tools [04:27] victorstan: its all good, ruby is fun [04:27] sh1mmer: and then isaacs is helping bootstrap the 100% javascript stack [04:28] isaacs: javascript ftw! [04:28] mjr_: I wish we had a better tool than ronn. Not only is it brittle, but I think it's holding us back from a more readable API doc. [04:29] _announcer: Twitter: "Each user space that was formed Node.JS each run httpd. Nde that the httpd is nginx proxy." [ja] -- KOBA789. http://twitter.com/koba789/status/18329195738 [04:29] sh1mmer: ronn? [04:30] amuck has joined the channel [04:31] pzich has joined the channel [04:31] victorstan: i have cp: /usr/local/share/man/man1/connect.1: Permission denied [04:31] victorstan: am i supposed to install stuff in sudo? [04:32] victorstan: when i try to do npm install connect [04:32] victorstan: i already installed ronn [04:32] victorstan: with rvm [04:32] isaacs: victorstan: sudo? [04:33] victorstan: elevate npm's permissions? [04:33] benburkert has joined the channel [04:34] isaacs: victorstan: oh, i was suggesting trying to instlal it with sudo [04:34] everton has joined the channel [04:34] isaacs: victorstan: you only need sudo if you have npm configured to do things in a folder that's not user-writable, or if the package itself does stuff like that. [04:36] jsilver: am I using node's Require wrong? [04:36] jsilver: require('./parser') [04:36] jsilver: doesn't load my file [04:36] jsilver: parser variable still undefined [04:37] victorstan: ok i sudo npm install connect and it stopped complaining [04:38] isaacs: jsilver: var parser = require("./parser") [04:38] isaacs: jsilver: that'll set "parser" to the "exports" var from parser.js [04:38] jsilver: thanks [04:38] isaacs: jsilver: it doesn't do the standard browser-style global-dump [04:38] isaacs: !api modules [04:38] _api: isaacs: Buffers, EventEmitter, Readable Stream, Writable Stream, Global Objects, process, sys, Timers, Child Processes, Script, File System, fs.ReadStream, fs.WriteStream, http.Server, http.ServerRequest, http.ServerResponse, http.Client, http.ClientRequest, http.ClientResponse, net.Server, net.Stream, Crypto, DNS, Assert, Path, URL, Query String, REPL [04:38] jsilver: in parser.js I have parser = (function(){ [04:38] jsilver: that changes to exports.parser? [04:38] isaacs: jsilver: that should be exports.parser = ... [04:38] isaacs: yeah [04:39] jsilver: tyvm [04:39] _announcer: Twitter: "node.js is impressive. Serve everything however you want. Building a minimal HTML/LESS/JS scaffold right now :)" -- Sebastian Senf. http://twitter.com/mustardamus/status/18329728088 [04:39] jsilver: rolleyes @ that post [04:39] jsilver: :D [04:39] jsilver: super mega rolleyes @ that tweet [04:40] jsilver: i'm using coffeescript btw [04:40] jsilver: i'm making a js2cs compiler in coffee. [04:40] jsilver: that's the LD (low down and dirty) [04:40] mklappstuhl has joined the channel [04:41] jsilver: i'm getting this weird parsing error still [04:42] jsilver: basically [04:42] jsilver: the parser works on the site... [04:42] jsilver: but not inside node or coffee [04:42] jsilver: Error: Parse error on line 1: Unexpected 's' [04:43] jsilver: the first symbol in the test string i'm using is s... [04:44] jsilver: ok wait nvm [04:44] jsilver: i made it require [04:44] jsilver: node> parser [04:44] jsilver: { parser: [04:44] jsilver: { parse: [Function] [04:44] jsilver: , toSource: [Function] [04:44] jsilver: , SyntaxError: [Function] [04:44] jsilver: } [04:44] jsilver: } [04:45] jsilver: parser.parse doesn't work tho [04:46] SubStack: parser.parser.parse [04:46] jsilver: Ahaha [04:46] SubStack: var parser = require('parser').parser probably [04:46] SubStack: then you can just do parser.parse [04:47] jsilver: ohh [04:47] jsilver: i changed one to "pegjs" [04:47] jsilver: so it's pegjs.parser.parse [04:48] jsilver: actually [04:48] jsilver: i did what you said [04:48] jsilver: : [04:48] jsilver: :) [04:49] pzich_ has joined the channel [04:50] jsilver: got it working inside node [04:51] softdrink has joined the channel [04:51] jsilver: the parser doesn't work inside of coffee [04:51] jsilver: lol [04:52] jsilver: i guess i will write the converter in JS [04:52] jsilver: and then use it to convert itself [04:52] jsilver: :P [04:53] isaacs: jsilver: a js->cs compiler? [04:53] isaacs: jsilver: interesting. [04:54] jsilver: yes [04:54] jsilver: :) [04:54] jsilver: i'm using JS instead of CS though right now [04:54] ceej has joined the channel [04:55] jsilver: yep [04:56] dgathright has joined the channel [04:57] jsilver: what's argv[0] in node? [04:58] SubStack: process.argv[1] I think [04:58] jsilver: found it [04:58] jsilver: yeah [04:58] sh1mmer has joined the channel [05:00] jsilver: got it [05:04] sh1mmer has joined the channel [05:07] dnolen has joined the channel [05:09] jedschmidt has joined the channel [05:10] _announcer: Twitter: "Node.js is getting cool, cool & cool, i hope i have time to test it deeper :) #js" -- Ariel. http://twitter.com/chazzuka/status/18331384536 [05:11] jsilver: cool, cool & cool? [05:11] jsilver: lol... [05:11] satori: thats 2 better than just 'cool' [05:14] jsilver: ya i guess lol [05:20] atmos has joined the channel [05:23] hoodow has joined the channel [05:25] paulwe has joined the channel [05:25] SubStack has joined the channel [05:32] mklappstuhl has joined the channel [05:37] admc_ has joined the channel [05:37] admc has joined the channel [05:38] satori: Wrapping pre existing obj ptrs with v8 is more difficult than i thought it would be [05:40] jsilver: hmm [05:41] jsilver: looks like the way node loads text is crashing the parser [05:41] jsilver: the string encoding is wrong or something [05:43] satori: jsilver: what r u working on? [05:43] jsilver: js to cs converter [05:43] satori: c#?? [05:43] jsilver: no coffeescript [05:43] satori: ahh [05:44] jsilver: using a PEG.js parser for javascript [05:44] jsilver: playing with it right now [05:44] jsilver: trying to iterate the AST and generate coffee [05:44] jsilver: could be seen as smushing too [05:45] satori: I haven't ever used coffeescript. [05:45] satori: What r advantages over regular js? [05:46] Aria: Much more succinct syntax [05:46] JimBastard: satori: if you are a ruby developer you'll love CF [05:47] satori: heh. I came from c# and VB... as far as im concerned js *is* succint. [05:47] jsilver: i'm not trying to sell coffeescript [05:47] jsilver: i'm just trying to have fun and a learning experience [05:48] jsilver: some dont like coffee [05:48] jsilver: i think it provides a lot [05:48] jsilver: some nice features [05:49] jsilver: you can try it at www.coffeescript.com :) [05:49] SubStack: teascript [05:49] satori: yeah, reading about it now [05:49] jsilver: here's a program i converted by hand [05:50] jsilver: http://github.com/jsilver/node-websocket-server/blob/master/lib/ws.coffee [05:50] jsilver: i noticed it cleans node programs up a bit too [05:50] Validatorian: anybody have a working example of using web-based auth in node? (individual accounts, access permissions, etc) [05:50] _announcer: Twitter: "nodejs asynchronous message passing, need to take a look at dnode http://bit.ly/cCKRue" -- Bruno Fernandez-Ruiz. http://twitter.com/olympum/status/18333342570 [05:50] SubStack: wooo more tweets [05:50] satori: :) [05:51] SubStack: these tweets only encourage me, you know! [05:51] Validatorian: there's got to be some open-source node apps that have user accounts :-/ [05:53] malkomalko_ has joined the channel [05:53] jsilver: yay [05:53] jsilver: i have the PEG.js parser running with node readFileSync [05:54] jsilver: it's fragile tho [05:54] malkomalko__ has joined the channel [05:56] satori: SubStack: What sort of apps where you envisaging when you designed and built dnode? [05:57] satori: Anything specific? [05:58] jsilver has joined the channel [06:00] jsilver: ok [06:00] jsilver: was in a netsplitted #node.js [06:00] jsilver: i have it parsing JS files... in JS [06:00] jsilver: now to do something based on that AST tre.. [06:00] SubStack: satori: a virtual machine manager and vnc viewer combined with lots of backend plumbing for my startup, stackvm [06:01] SubStack: browser-based on the first two [06:02] satori: k. cool. I am v close to having a working version of UDT. I will trying dnode over UDT connections. Being able to do remoting with adhoc peers is v interesting [06:02] SubStack: routing messages on top of plain socket.io was getting really complicated and I didn't find any nice async rpc libs for the backend stuff [06:02] JimBastard: Validatorian: i was talking about that today with cloudhead [06:02] JimBastard: Validatorian: Roles [06:03] SubStack: satori: what's UDT? [06:03] JimBastard: i need roles really soon [06:03] JimBastard: group management [06:03] Validatorian: JimBastard: yea, me too [06:03] JimBastard: we should totally make a library [06:03] satori: udt.sourceforge.net High perf reliable UDP streams [06:03] JimBastard: i have all the other pieces, ORM and router [06:03] JimBastard: it should be able to be standalone [06:03] satori: They can work thru firewalls and NAT [06:03] mikeal1: has anyone else looked at the ECMA harmony modules proposal? [06:04] Validatorian: JimBastard: I will beta test for ya, but if you recall from last time, my node-fu is quite weak indeed [06:04] satori: UDT can also do client<->client connections without listening servers. [06:04] JimBastard: mikeal1: talk to kangax [06:04] SubStack: satori: ah cool! [06:04] mikeal1: i'm really unhappy [06:04] JimBastard: Validatorian: yeah roles management is pretty easy, if you know how to do it [06:04] JimBastard: if you do it wrong its real bad epic fail [06:04] mikeal1: why is it adding new syntax? [06:05] mikeal1: haven't we already kinda proven that you can implement securable modules without new syntax? [06:05] jedschmidt has joined the channel [06:06] Validatorian: JimBastard: I have no idea, myself. closes I've found is: http://github.com/ciaranj/express-auth which is a plugin for expressjs, and I can't seem to figure out how to tame it to my needs (using a web-based form exclusively, not having the native username/password prompt come up) [06:06] JimBastard: im thinking i would want my roles manager to just be a stupid json in json out thing [06:07] JimBastard: and not have it do sessions at all [06:07] JimBastard: just have it be an API [06:07] Validatorian: serverside, though, right? [06:07] JimBastard: dual-sided [06:07] JimBastard: no reason to couple it , but it would ship with a server demo for sure [06:07] Validatorian: well, would you need JS enabled in your browser to use it? [06:07] JimBastard: huhcakes [06:08] JimBastard: client-side roles would just be for UI stuff [06:08] Validatorian: k, just making sure :) [06:08] JimBastard: you'd have to run the session stuff server side [06:08] JimBastard: the point is, not to couple or restrict it at all [06:08] JimBastard: is there a RFC on roles or something [06:10] JimBastard: im gonna see if i can roll something [06:10] JimBastard: Validatorian: when do you need it by? [06:10] Validatorian: JimBastard: I have tons to do still, it can technically wait, but I was hoping to implement that this week [06:10] JimBastard: you are using express? [06:11] JimBastard: im pretty sure i can make something you can plug into that [06:11] Validatorian: yes [06:11] Validatorian: that would be pretty awesome. [06:11] JimBastard: ill see if i can get a standalone demo working by thursday or so [06:11] JimBastard: maybe proof of concept tonight [06:11] JimBastard: you'll have to do routing and sessions though [06:11] JimBastard: this would just be a generic roles module [06:12] JimBastard: im not sure where ill store the data yet either [06:12] Validatorian: then it will probably be a bid pile of fail, but I'll give it a shot [06:12] JimBastard: im using the resourcer ORM [06:12] JimBastard: maybe ill just have to be in memory and pluggable [06:12] JimBastard: so you can specify your own DB api [06:12] JimBastard: or ORM [06:13] Validatorian: yea, that would be cool. I'm going to be using redis myself [06:13] JimBastard: yeah that makes sense [06:13] JimBastard: totally [06:13] JimBastard: what module are you using ? [06:13] Validatorian: for redis? fictorial's redis-node-client [06:13] _announcer: Twitter: "Looking into more modules for node.js." -- JR Liwag. http://twitter.com/JR_Liwag/status/18334425686 [06:14] JimBastard: damn _utility is down [06:14] zomgbie has joined the channel [06:15] Validatorian: so I just started using kiwi... today... and just found out it was deprecated... today [06:15] sveimac has joined the channel [06:15] Validatorian: fun times [06:15] derferman has joined the channel [06:17] JimBastard: Validatorian: npm is pretty good [06:17] JimBastard: lots of new features coming [06:18] Validatorian: yea, I agree -- I just used kiwi because that's what the example was using, and I didn't want to spend the time dealing with any issues that would come from me using npm instead [06:19] jsilver: how do I get what properties are available on an object and print it? [06:19] satori: I should really learn npm now too, but I'm running out of headspace to learn new things atm. [06:20] JimBastard: Validatorian: its pretty much exactly the same [06:20] JimBastard: satori: its just one line really [06:20] JimBastard: you install it once [06:20] jsilver: lol [06:20] JimBastard: and then you do npm install packagename [06:20] jsilver: this parser generator works [06:20] JimBastard: sudo [06:20] jsilver: but I dunno what to do exactly with the AST object it outputs [06:20] JimBastard: im gonna go do this roles management [06:20] satori: thats it? [06:21] jsilver: i made it parse files [06:21] JimBastard: satori: yeah, the docs are kinda weaksauce right now [06:21] JimBastard: ill try to fix it [06:21] satori: I mean't as a pkg dev [06:21] JimBastard: http://npm.mape.me/new.html [06:21] JimBastard: sneak peak [06:22] Validatorian: wow, very nice [06:22] jesusabdullah: JimBastard: Awesome [06:25] JimBastard: its all mape really, he does wonderful work [06:25] JimBastard: but thanks, there is much more to come [06:25] JimBastard: like npm deploy myapp mysite.nodejitsu.com [06:25] JimBastard: :-) [06:26] jsilver: damn [06:26] jsilver: the PEGjs parser doesnt work on complicated stuff [06:26] jsilver: crashes [06:27] jsilver: works on easy stuff [06:27] jsilver: i'm making a loop that iterates the AST now [06:27] jsilver: and does... stuff?? [06:27] jsilver: lol [06:28] jsilver: i need a simple, non-trollish javascript file that uses (nearly) every feature of JS that matters [06:28] jsilver: maybe my converter can also find ways to do things "the coffee way" [06:28] markwubben has joined the channel [06:28] jsilver: (this is still node.js relevant btw because i'm using node) [06:31] jsilver: ooh nice [06:32] jsilver: i catch the exception and print out the ex message now [06:34] [[zzzz]] has joined the channel [06:35] mscdex: lattescript! [06:35] jsilver: yeah [06:35] jsilver: i'm learning [06:35] jsilver: node, coffee AND javascript [06:36] jsilver: so i'm a happy camper [06:36] jsilver: i came from ruby [06:36] jsilver: :) [06:36] mscdex: i came from qbasic [06:36] mscdex: just kidding, that was a long time ago [06:36] SubStack: node AND javascript? CRAZY [06:37] victorstan: im going to sleep... it will be a non-blocking sleep... [06:37] mscdex: asynchronous dreams ftw [06:37] victorstan: thanks y'all for your help today/yesterday (timezone dependent) [06:37] jsilver: LOL [06:37] SubStack: Do asynchronous dreams stop when a dreamer awakens? [06:38] Alystair: aguhh I forgot to check this window [06:38] jsilver: u jokesters [06:38] victorstan: only is a callback function makes them [06:38] Alystair: ACTION now needs to read 3 hours of buffer [06:38] victorstan: *if [06:38] rgl has joined the channel [06:40] mscdex: this.emit('dream', {subject: 'lolcats', happinessIndex: 10}); [06:41] jsilver: ahaha [06:41] jsilver: i just told peg.js to parse jquery [06:41] jsilver: now chrome is all "WTF" [06:41] jsilver: clicked wait [06:41] _announcer: Twitter: "@sh1mmer cant you use the buffer functionality of node.js for binary data handling?" -- Arnout Kazemier. http://twitter.com/3rdEden/status/18335643943 [06:41] mscdex: lol @ that tweet [06:41] satori: heh. late to the party [06:42] jsilver: ... that's what the buffer object is, isn't it? [06:42] satori: uhuh [06:42] sh1mmer: mscdex: people should be in IRC [06:43] sh1mmer: also, it would be nice if announcer used username as well as real names [06:43] satori: I hadn't used irc for a decade before I joined this channel [06:44] sh1mmer: I have a bunch of channels but this is the most active by a magnitude [06:44] mscdex: same here satori [06:44] mscdex: if you don't count using bitlbee several years back [06:45] mtodd has joined the channel [06:45] satori: I think I was using 56K dialup last time i used irc regularly [06:45] dgathright has joined the channel [06:45] jsilver: nice [06:46] sh1mmer: hey derek [06:46] jsilver: i catch and print exceptions properlyu [06:46] jsilver: 11 Jul 23:45:24 - SyntaxError on line 79 at column 20: Expected "!=", "!==", "%", "%=", "&", "&&", "&=", "(", "*", "*=", "+", "++", "+=", ",", "-", "--", "-=", ".", "/", "/*", "/=", ";", "<", "<<", "<<=", "<=", "=", "==", "===", ">", ">=", ">>", ">>=", ">>>", ">>>=", "?", "[", "^", "^=", "in", "instanceof", "|", "|=", "||", comment, end of line or whitespace but "{" found. [06:46] satori: heh. looks like perl [06:46] jsilver: lul [06:47] jsilver: the parser seems to work [06:47] jsilver: if i feed it pseudo code [06:47] jsilver: but chokes on any real library [06:47] jsilver: might need to semi-minify it [06:47] jsilver: to get something more edible for the parser [06:47] jsilver: i think the parser is very fragile [06:48] satori: ACTION is still bashing head against v8 InstanceTemplate's and internal fields [06:48] sh1mmer: I really need to dust off my c [06:49] satori: If it was straight c I'd probably be ok, but v8 is c++ and it's all new to me. v8 and c++ [06:49] sh1mmer: either way, I haven't done anything much with c or c++ in 5 years [06:50] sh1mmer: Node is the first project that has me even a little bit inspired to pick it up again [06:50] satori: :) thats exactly why I'm doing it [06:51] satori: node has pretty much been the catalyst for me to seruously study linux/c++/git/posix etc [06:51] _announcer: Twitter: "Mayflower Munich invites you to a talk on "node.js" - 07/15 6pm, Mannhardtstraße 6,#php #js, http://bit.ly/a1RJlq" -- Mayflower. http://twitter.com/mayflowerphp/status/18336078210 [06:53] tyfighter has joined the channel [06:54] SubStack: zomgbie jesus! [06:54] _announcer: Twitter: "DNode: Asynchronous Remote Method Invocation for Node.js and the Browser :: The Universe of Discord: http://bit.ly/cIid6C" -- Francesco Strappini. http://twitter.com/fstraps/status/18336178307 [06:54] SubStack: s/^/sweet / [06:55] satori: You are a mover and shaker now with peeps tweetin' about u :P [06:55] brainproxy: :) I saw it on hacker news earlier today SubStack [06:55] SubStack: it's crazy! [06:55] SubStack: brainproxy: :D [06:55] qFox has joined the channel [06:55] sh1mmer: dnode was on hacker news [06:55] sh1mmer: that's pretty shaking [06:55] SubStack: for a few hours [06:55] SubStack: bufferlist had about the same run [06:55] SubStack: dnode is getting lots of twitter love [06:55] sh1mmer: making frontpage is good [06:56] sh1mmer: anyway HN is a bunch of clojure loving node haters :P [06:56] sh1mmer: j/k [06:56] satori: What are saying? You can't retire with three houses and a yacht now? [06:57] jsilver: damn it [06:57] jsilver: parser.parse works unreliably [06:57] jsilver: inside node [06:57] mjr_: Seems like hn has a node story almost every day in the top 10. [06:58] sh1mmer: http://www.slideshare.net/sh1mmer/txjs-4424188/16 http://www.slideshare.net/sh1mmer/txjs-4424188/17 [06:58] sh1mmer: this is my summary slide on SSJS (aka Node) [06:59] admc_ has joined the channel [06:59] admc has joined the channel [07:02] sh1mmer: wow. apparently you are all rendered speechless by my photoshop skills [07:03] jsilver: hmm [07:03] jsilver: this sucks [07:03] jesusabdullah: you have no idea [07:03] jesusabdullah: re: speechlessness [07:03] jesusabdullah: ACTION actually looks [07:03] markwubben_ has joined the channel [07:03] jesusabdullah: oh that poor narwhal [07:04] jsilver: yo guys [07:04] jsilver: here's what I got [07:04] jsilver: http://gist.github.com/472200 [07:04] jsilver: this crashes on most JS documents [07:05] jsilver: but the same documents can be parsed with the online version and the javascript.pegjs grammar [07:05] jsilver: it inspects the AST for you on the online thing [07:05] jsilver: :| [07:06] sh1mmer: jsilver: can you gist an exception [07:06] jsilver: yes [07:06] [[zzzz]] has joined the channel [07:06] mscdex: photoshop ftw! [07:06] mscdex: sh1mmer: http://i27.tinypic.com/2yzn2u8.jpg [07:06] jsilver: my code pretty prints them [07:06] SubStack: ACTION <3 gimp + inkscape [07:06] jsilver: like so [07:06] jsilver: 11 Jul 23:54:48 - SyntaxError on line 43 at column 25: Expected "!=", "!==", "%", "%=", "&", "&&", "&=", "(", "*", "*=", "+", "++", "+=", ",", "-", "--", "-=", ".", "/", "/*", "/=", ";", "<", "<<", "<<=", "<=", "=", "==", "===", ">", ">=", ">>", ">>=", ">>>", ">>>=", "?", "[", "^", "^=", "in", "instanceof", "|", "|=", "||", comment, end of line or whitespace but "{" found. [07:06] sh1mmer: mscdex: haha awesome [07:07] sh1mmer: I'll have to show him that [07:07] jsilver: but this code parses fine with the online version... [07:07] jsilver: only fails inside of node [07:07] jsilver: online version doesnt bug out on this same test document [07:08] mscdex: bah, found another error in the node api docs [07:08] jsilver: the parser generated by PEGjs seems very unstable in Node [07:08] sh1mmer: jsilver: can you gist that so I can read it ;) [07:08] jsilver: sure [07:09] jsilver: its 1 line [07:09] sh1mmer: mscdex: where? [07:09] jsilver: http://gist.github.com/472203 [07:09] jsilver: thats not easy for me to read... [07:09] jsilver: lol [07:09] mscdex: for this one... [07:09] sh1mmer: jsilver: my irc client mangles it [07:09] jsilver: i made that exception [07:09] jsilver: oh [07:09] jsilver: yeah [07:09] mscdex: !api close in net.stream [07:09] _api: mscdex: (net.Stream) event: close() -- Emitted once the stream is fully closed. The argument `had_error` is a boolean which says if the stream was closed due to a transmission error. [ http://nodejs.org/api.html#event-close-220 ] [07:09] sh1mmer: jsilver: kill the catch [07:09] mscdex: it's missing the had_error argument [07:10] sh1mmer: jsilver: let it trace, might help [07:10] jedschmidt has joined the channel [07:10] jsilver: k [07:11] jsilver: posted the trace [07:12] jsilver: looking at line 15115... [07:12] jsilver: it contains some comments [07:12] jsilver: talking about the parsing not successfully parsing.. [07:12] jsilver: hehe [07:12] oberhamsi has joined the channel [07:12] jsilver: it seems real [07:12] jsilver: it seems like that i am feeding the parser wrong [07:13] sh1mmer: :) [07:13] mscdex: try doing the helicopter method of feeding [07:13] mscdex: :-D [07:13] mscdex: ok, time to continue working [07:13] mscdex: /afk [07:15] jsilver: i dunno how to continue [07:15] jsilver: lol [07:15] sh1mmer: what are the comments? [07:15] jsilver: i posted them [07:15] mjr_: That works for my son all the time. [07:15] jsilver: in the git [07:15] jsilver: they are saying about states of the parser [07:15] jsilver: it throws that exception if and only if the parsing failed [07:16] jsilver: http://gist.github.com/472203#comments [07:16] sh1mmer: jsilver: can you throw some of the code at jslint? [07:17] sh1mmer: see what it sez? [07:17] jsilver: sure [07:18] jsilver: some errors [07:19] jsilver: pasted the output of errors for jslint [07:22] jsilver: ok [07:22] jsilver: it's just crazy javascript trips it up [07:22] jsilver: some stuff it doesn't like [07:22] jsilver: especially a lot of symbols [07:22] jsilver: it runs on itself and some test code i wrote [07:22] jsilver: i know it specifically works [07:22] jsilver: but it doesn't like when it runs into comments with code inside them [07:23] jsilver: i think [07:25] jsilver: yeah [07:25] jsilver: it works when I run it on the code I wrote [07:25] jsilver: insteresting lol [07:28] sveimac_ has joined the channel [07:31] sh1mmer: can you get a full stack trace programmatically from an exception [07:33] jsilver: it is a full stact trace [07:35] sh1mmer: I mean if you catch it [07:35] sh1mmer: can you get the full stack trace [07:36] jsilver: oh [07:36] sh1mmer: according to ecmascript an error object just has a message [07:36] jsilver: no it just tells you some items about where it tripped [07:36] jsilver: nah [07:36] jsilver: it attaches more i guess [07:36] jsilver: it's syntaxerror [07:36] jsilver: not just e [07:37] jsilver: it's own thing i guess [07:37] jsilver: i dunno i came from ruby [07:37] jsilver: just tryin to make something cool [07:37] jsilver: hehe [07:37] sh1mmer: sure [07:37] jsilver: check this out [07:38] jsilver: http://gist.github.com/472220 [07:38] jsilver: it can analyze itself [07:38] jsilver: without crashing [07:39] jsilver: it returns an array [07:39] jsilver: of elements [07:39] jsilver: each one contains information on the basic objects of the AST (statements) [07:40] jsilver: name, type, etc [07:43] christkv has joined the channel [07:43] jakehow has joined the channel [07:43] micheil has joined the channel [07:43] adinardi has joined the channel [07:43] meder has joined the channel [07:43] Aaaarg has joined the channel [07:43] adamholt has joined the channel [07:49] bradleymeck has joined the channel [07:49] Dmitry1 has joined the channel [07:49] Rik` has joined the channel [07:49] mde has joined the channel [07:49] ryah has joined the channel [07:49] chapel has joined the channel [07:49] Sutto has joined the channel [07:49] joshthecoder has joined the channel [07:49] dgathright has joined the channel [07:50] sh1mmer: night [07:50] kuya: hello, im trying to read a post request body but I cant get it to work. Im using Connect if that matters - i dont think it should... http://gist.github.com/472227 [07:51] kuya: i never see either of the listeners being called [07:53] micheil: mape: no [07:54] mape: micheil: k [07:57] jsilver: micheil HEY [07:57] micheil: hi. [07:57] jsilver: i am making a javascript TO coffeescript converter [07:57] jsilver: lul [07:57] jsilver: it's fucking up hard [07:59] micheil: I wouldn't bother.. javascript's perfect for me. [07:59] jsilver: it's for fun [07:59] jsilver: and learning [08:00] satori: That's my reason for all coding these days. Will have to do it for money again soon though. [08:00] micheil: why'd the octopus have to pick right? I wanted netherlands. [08:00] jsilver: i code for money too [08:00] jsilver: but not very much money... [08:00] satori: I just don't wanna go back to a .NET + MSSQL job [08:00] satori: :( [08:01] jsilver: dont worry [08:01] jsilver: u dont hav to [08:01] satori: I am not working at all atm, I took a year off. [08:02] satori: a sabatical of sorts. [08:02] satori: I burnt out I guess. [08:02] satori: Kinda loathe to go and do it again. [08:02] jsilver: i am surviving [08:02] jsilver: on ruby on rails [08:02] jsilver: lol [08:03] satori: I spent the last year sailing up and down the east coast of Aus, but I'm out of cash now [08:03] satori: gotta get a job again [08:03] jsilver: better get crackin [08:04] listentorick has left the channel [08:04] satori: :( [08:05] jsilver: hehe [08:05] mscdex: get crackin' on node :-D [08:05] satori: No-one hiring in Sydney for node (yet) [08:05] romainhuet has joined the channel [08:06] dgathright has joined the channel [08:06] satori: All I have done for the last 7 or 8 years is c#,VB,IIS,MSSQL etc. Haven't been passionate about that like I am about node for a long time [08:07] satori: Same boring problems. Same boring meetings. Same boring solutions. [08:07] ollie has joined the channel [08:08] mscdex: yeah, i did mostly vb, c/c++, c# stuff before i started really getting heavily into web stuff [08:08] kuya: does anyone use Connect? [08:08] aubergine has joined the channel [08:08] jsilver: dont wait til someone is hiring [08:08] jsilver: master it [08:08] mscdex: but now i think web development is more fun than desktop [08:08] jsilver: and then make something that owns [08:08] satori: jsilver: I'm trying! [08:08] satori: well still in the learning stage actually [08:08] jsilver: yeah [08:09] mscdex: you got the crockford files boxed set right? [08:09] satori: mscdex: Yeah, I stayed well away from browsers for years. More boring problems than intersting ones. Not the case now [08:09] zomgbie has joined the channel [08:10] SubStack: I must be lucky, since I'm pretty good at ignoring boring technologies. [08:10] mscdex: like anything microshaft related [08:10] mscdex: :P [08:10] SubStack: probably also why I don't have any money right now [08:10] satori: Browser quirks = extreme boring (before jquery etc) [08:11] SubStack: but dumpsters are full of food so I'll be fine [08:11] _announcer: Twitter: "# Nodejs in the absence of soybean grown to 0.1.100. Let's see how much progress have # dwarffortress:)" [ru] -- Serge Shirokov. http://twitter.com/kurokikaze/status/18339289734 [08:11] Rik` has joined the channel [08:11] mscdex: soybeans?! [08:11] SubStack: what [08:11] mscdex: node.js v0.1.100 lacks soy [08:11] SubStack: that tweet reads like a markov chain [08:11] mscdex: :-( [08:13] satori: Soybeans are synchronous. node can't use them anyway. [08:13] SubStack: but how will I eat my sushi now? [08:13] SubStack: surely not synchronously [08:13] satori: You will have to block [08:14] satori: or spawn a sushi worker [08:15] _announcer: Twitter: "node.js seems really promising. Some users delighted in the corner?" [fr] -- Nicolas Froidure. http://twitter.com/nfroidure/status/18339436545 [08:15] SubStack: How much does a good sushi worker cost per hour these days? [08:16] satori: some users are delighted in the corners because there are not enough chairs. [08:16] satori: re: sushi. Dunno. I hate the stuff [08:18] cce_ has joined the channel [08:18] teemow has joined the channel [08:20] _announcer: Twitter: "Contemplating how I'd go about distributing a nodejs app as a static executable" -- David Goodlad. http://twitter.com/dgoodlad/status/18339658783 [08:23] trochala has joined the channel [08:24] jsilver: sh1mmer: the grammar is broken [08:25] jsilver: im testing it [08:25] jsilver: broken on any if statement right now [08:31] MattJ has joined the channel [08:32] jsilver: found the problem [08:33] jsilver: it wants a line end after the IfStatement ExpressionStatement [08:33] jsilver: or whatever [08:33] jsilver: instead of if (crap) { [08:33] jsilver: it wants [08:33] jsilver: if (crap) [08:33] jsilver: { [08:33] jsilver: found [08:33] jsilver: the fucking [08:33] jsilver: problem [08:33] jsilver: lol [08:33] jsilver: that's sinister [08:33] rictic has joined the channel [08:34] N` has joined the channel [08:36] jedschmidt has joined the channel [08:38] stagas has joined the channel [08:39] malkomalko_ has joined the channel [08:42] dgathright has joined the channel [08:46] TomY has joined the channel [08:47] malkomalko has joined the channel [08:49] jsilver: okay [08:50] jsilver: i mostly got it [08:50] jsilver: it bitches if anything breaks ECMA doc [08:50] jsilver: thats about it [08:50] jsilver: and it hates if { [08:50] _announcer: Twitter: "Web development node.js - http://www.it-wars.com/?article162/developpement-web-avec-node-js" [fr] -- mrBinR. http://twitter.com/mrBinR/status/18340813906 [08:51] jedschmidt has joined the channel [08:52] JimBastard has joined the channel [08:53] JimBastard: hey Validatorian [08:53] Validatorian: JimBastard: what's up? [08:54] JimBastard: hey [08:54] JimBastard: one sec, let me make public [08:54] virtuo has joined the channel [08:54] JimBastard: http://github.com/Marak/roles.js [08:54] SubStack: I like roles. [08:55] JimBastard: the basic stuff is pretty much working, ill see if i can polish and release this week [08:55] JimBastard: SubStack: the main features are : no session support, no database support, no route support, no orm support, no requirements [08:55] SubStack: oh that is not the roles I am thinking of [08:55] SubStack: ACTION was thinking of OO roles like perl6 has [08:55] JimBastard: this is roles for users and groups [08:55] SubStack: roger [08:58] JimBastard: Validatorian ^^^ [08:58] Validatorian: JimBastard: looking through it now, so far, looks great and exactly what i am looking for :-D [08:58] JimBastard: i'm going to need a few more days for sure [08:59] JimBastard: but ill have all the basics working with example code [08:59] JimBastard: maybe you can figure out how to hook it into express [08:59] JimBastard: i might have to add callbacks [08:59] Validatorian: at least partially -- I still need to figure out logged in/logged out [08:59] JimBastard: yeah [08:59] JimBastard: you need session support [08:59] JimBastard: and auth [09:00] Validatorian: yep [09:01] Rik`: is there an asynchronous sqlite module ? [09:01] Validatorian: like I mentioned before, that express-auth plugin seems to support 'basic' and 'http' auth, but I can't seem to figure out how I would override the native 'username/password' prompt that the browser throws up for auth -- I want it to be 100% website based (login form, like any modern site) [09:02] Validatorian: I'm probably just stupid and missing something obvious though [09:04] aubergine has joined the channel [09:11] hojberg has joined the channel [09:12] maushu has joined the channel [09:15] jsilver: yeah [09:15] jsilver: i got it working now [09:15] jsilver: i'm writing my converter [09:15] stagas: if I route to node using apache htaccess will it have apache's overhead on each connection? [09:16] jsilver: it's looking like it might compile itself too... [09:16] jsilver: or transform... rather... [09:17] aubergine has joined the channel [09:19] mscdex: stagas: if you're fowarding to node from apache, yes. [09:19] mscdex: afaik anyway [09:20] _announcer: Twitter: "Everyone check out @SubStack 's new node.js module "DNode" http://bit.ly/c7yOxW Best node.js module ever written. #nodejs" -- Peteris Krumins. http://twitter.com/pkrumins/status/18341999861 [09:20] pkrumins: :D [09:20] SubStack: :) [09:20] mscdex: stagas: that's why i use haproxy in front to divert traffic to either apache or node [09:21] mscdex: haproxy is evented [09:21] mscdex: single process [09:22] stagas: hm can it install on a vps [09:22] ryan[WIN]: hm [09:22] stagas: the problem is I have other sites running apache on a vps [09:23] _announcer: Twitter: "My laptop is now a slave to @dylanrw. A nodeJS script is configured to watch a dropbox directory which rsync's on update our dev server." -- JB. http://twitter.com/barker_ja/status/18342137260 [09:24] stagas: but I want to run node in another port and forward some stuff there [09:24] stagas: but without using :port in the url [09:24] stagas: is it possible? [09:24] SubStack: might be able to do that with passenger [09:26] Dmitry1 has joined the channel [09:28] tisba has joined the channel [09:28] _announcer: Twitter: "Learning Server-Side JavaScript with Node.js | Nettuts+ http://ow.ly/18649M" -- Javascript News. http://twitter.com/del_javascript/status/18342322238 [09:28] hdon has joined the channel [09:31] mscdex: stagas: haproxy can route using various methods, including sniffing the requested URL [09:31] benob has joined the channel [09:31] mscdex: so you could check for a certain path or something [09:32] mscdex: or check for a certain HTTP header [09:32] mscdex: or whatever else haproxy supports [09:32] mscdex: :-) [09:32] stagas: I'm looking at it right now [09:33] mscdex: stagas: here's a sample haproxy config file: http://gist.github.com/461583 [09:33] benob: Hi. Is there a way to get a stack trace on "uncaughtException" when the error is not an instance of Error (does not have a .stack member)? [09:34] mscdex: benob: not that i'm aware of. why is it not throwing Error? [09:35] benob: on an "illegal access" error, I only get a string [09:36] mscdex: benob: are you using JSON.stringify instead of JSON.parse or vice-versa? [09:36] stagas: mscdex: so everything /node goes to 8009 internally and everything else 8008 [09:36] stagas: mscdex: so I would need to change apache to listen to 8008 for this to work right? [09:37] benob: mscdex: it does come from JSON.parse() [09:37] mscdex: stagas: yep to the first question. you can change the port to whatever you want apache to listen on [09:38] mscdex: benob: i would check what input you are feeding JSON.parse [09:38] benob: mscdex: I know my input is wrong. It's just that it should throw a better error, no? [09:39] mscdex: benob: it's a known problem, but it's coming straight from v8 and not from node, since the global JSON object is apart of v8 [09:39] benob: mscdex: okay. thanks for the help. [09:39] mscdex: np [09:43] aubergine has joined the channel [09:44] listentorick has joined the channel [09:45] listentorick: anybody familiar with ruby here? [09:47] SubStack: presumably lots of people [09:48] SubStack: but the burden shouldn't be on them to answer, it should be on you to ask a question [09:48] listentorick: I'm porting some code and I'm struggling finding the meaning of a particualr ruby symbol [09:48] listentorick:   "#{test}" [09:48] SubStack: that's just string interpolation [09:49] listentorick: ah [09:49] jsilver: ok [09:49] jsilver: I made it recursive [09:49] jsilver: by design [09:49] SubStack: also #ruby-lang [09:49] jsilver: listentorick: i can tell you [09:49] jsilver: string interpolation [09:49] listentorick: many thanks substack [09:49] jsilver: the contents will replaced with the value of variable test [09:49] mscdex: it's string interpolation [09:49] jsilver: btw [09:49] mscdex: (i couldn't reisist) [09:49] mscdex: :P [09:49] jsilver: my js to cs converter is coming nicely [09:50] jsilver: i just made it recursive [09:50] jsilver: it's eating JS fine [09:50] mscdex: jsilver: but what happens when the stack gets too big? [09:50] mscdex: :O [09:50] jsilver: it blows up i'm sure [09:50] jsilver: :) [09:50] jsilver: it's very picky [09:50] jsilver: too [09:50] jsilver: finicky [09:51] jsilver: no { after if [09:51] jsilver: on same line [09:51] jsilver: lol [09:51] jsilver: try{ is fine but not try { [09:51] jsilver: catch (e) is not fine (whitespace sensitive) [09:51] mscdex: ouch [09:51] jsilver: all kinds of stuff [09:51] jsilver: but when it does parse it works fine [09:52] mscdex: what about comma-first code? ;-) [09:52] jsilver: gist some [09:52] jsilver: i can test anything now [09:52] jsilver: i made my own test.js file [09:52] mscdex: i would but i don't use comma-first :-D [09:52] jsilver: and stopped using real libraries [09:52] jsilver: to test it [09:52] jsilver: i'm just feeding it tidbits [09:52] jsilver: and coding what i think that should transform to [09:52] jsilver: i realized i had to make it recursive though [09:53] jsilver: it's not async or anything crazy like that [09:53] mscdex: [09:53] mscdex: kidding ;-) [09:54] mscdex: man, i got to stop staying up until the next morning [09:54] mscdex: but node.js beckons me! [09:54] jsilver: yeah [09:54] jsilver: same [09:54] satori: It's because we are smart; http://www.psychologytoday.com/articles/200911/intelligence-the-evolution-night-owls [09:55] jsilver: i'm making something cool [09:55] jsilver: so i'm interested enough [09:55] jsilver: to keep going [09:55] jsilver: i guess [10:00] jsilver: yay [10:00] jsilver: refactored a little better [10:01] adulteratedjedi has joined the channel [10:03] derferman has joined the channel [10:08] SubStack: mscdex: at my latitude there is basically no difference between day and night this time of year [10:08] SubStack: gets a little cooler and dimmer at "night" I guess [10:08] mscdex: heh [10:09] SubStack: but it completely destroys what little circadian rhythm I had going before summer [10:09] adulteratedjedi has joined the channel [10:09] aubergine has joined the channel [10:10] mscdex: yeah [10:13] blorean has joined the channel [10:17] spot|2 has joined the channel [10:17] _announcer: Twitter: "no easy way of daemonize a #nodejs or connect program. that sucks." -- Francisco T. http://twitter.com/frank06/status/18344311703 [10:20] mscdex: no easy way? [10:21] mscdex: upstart is too difficult? :S [10:26] maushu: mscdex: Extremely. [10:27] maushu: I mean, to make announcer run I have to type "start nodeirc", truly bothersome. ...and let's not talk about when I want to restart it. [10:27] mscdex: huhu [10:27] jetienne: upstart is availble crossplateform ? [10:28] mscdex: linux only [10:28] mscdex: upstart uses some things specific to linux [10:28] maushu: Windows has daemons? [10:28] maushu: Oh wait, services. [10:29] maushu: Hmm, there should be something similar to upstart. [10:29] mscdex: i'm sure *BSD and/or OSX have their own alternative to upstart [10:29] jetienne: so that launchd + win services + upstart + init.d :) [10:30] jetienne: launchd is macos version but it was there and opensource before upstart [10:31] mscdex: ok, so OSX has launchd, linux has upstart, and *BSD has whatever (plain init.d at the least) [10:31] mscdex: and windows has services [10:31] mscdex: heh [10:31] jetienne: collaboration all over :) [10:32] SubStack: upstart eh? [10:32] SubStack: ACTION makes a mental note [10:32] mscdex: and apparently launchd can work on freebsd [10:32] mscdex: http://wiki.freebsd.org/launchd [10:32] jetienne: and on linux too [10:33] jetienne: http://en.wikipedia.org/wiki/Launchd#Use_outside_Mac_OS_X <- the funny part of upstart creation :) [10:33] mscdex: so, if you're already familiar with launchd and you need cross platform abilities, then you're set for *nix [10:35] jetienne: only if you are willing to admin launchd yourself [10:35] jetienne: i think, this is why ruby and all got their own daemon stuff, to be crossplateform [10:35] jetienne: ruby one deosnt work well tho :) [10:35] fermion has joined the channel [10:38] _announcer: Twitter: "@ Kurokikaze most importantly, # node.js under cygwin learned to work round the clock, not the departure and is separate from and not stupid." [ru] -- ramainen. http://twitter.com/ramainen/status/18345175351 [10:40] listentorick has left the channel [10:41] _announcer: Twitter: "@ Ramainen O, # nodejs under cygwin I also wanted to try. Well, so do WH40K beauty. Screenshots have shown?" [ru] -- Serge Shirokov. http://twitter.com/kurokikaze/status/18345292272 [10:42] stagas: mscdex: where does haproxy log [10:42] satori: Anyone with v8 knowledge here atm? [10:43] satori: I need help with object wrapping. Works fine from the js side with new keyword... [10:43] satori: c++ instance is created and wrapped... but I need to wrap existing instance ptrs. [10:44] satori: not new ones [10:44] mscdex: stagas: you have to add some settings to the haproxy config file to tell it what to log and where [10:45] satori: My wrapped object are being exposed to js with no attributes at all if I wrap existing ptrs using Handle [10:45] mscdex: stagas: here's an example that such settings: http://www.lastengine.com/99/installing-haproxy-load-balancing-for-http-and-https/ [10:45] stagas: ok thanks [10:45] mscdex: *includes [10:46] stagas: first attempt getting it to work failed miserably :P [10:46] mscdex: ah [10:51] satori: ACTION slaps forehead. [10:52] satori: contructor templates are not instance template. duh. [10:57] mscdex: sanity check: listeners are executed in order (according to time added) at the end of the event loop right? [10:57] mscdex: no matter what the event is? [10:57] satori: no idea [10:57] satori: seems reasonable [10:58] mscdex: hrm [11:02] c4milo has joined the channel [11:02] malkomalko has joined the channel [11:04] stagas: mscdex: got it to work but it needs to have the external IP address... 0.0.0.0 and 127.0.0.1 don't work [11:05] mscdex: stagas: hmm... [11:06] stagas: shouldn't it figure it out from the request [11:07] mscdex: which part had to have the external IP specified? [11:07] stagas: now it needs to set up a route for every IP [11:07] stagas: backend apaches [11:07] unomi has joined the channel [11:08] deanlandolt_home has joined the channel [11:08] deanlandolt_home has left the channel [11:09] stagas: I use multiple ips in apache so I guess it needs a route for each one [11:10] stagas: to match the virtualhosts [11:11] mscdex: ah i see now [11:11] olegp has joined the channel [11:11] stagas: asterisk doesn't work too, what I'd like it to do is server apache1 :80 ... [11:11] mscdex: you use ip-based virtualhosts? [11:11] stagas: yes [11:12] mscdex: well wouldn't make sense though [11:12] _announcer: Twitter: "@miksago Updated node.js to 0.1.100. Still hangs. New connections after 1050ish don't get any answer, nor error, neither disconnected." -- Mr.doob. http://twitter.com/mrdoob/status/18346648106 [11:12] mscdex: it's not listening on that address, it's forwarding to that address [11:12] stagas: you're right [11:14] mscdex: but, i mean as far as apache is concerned, there shouldn't be a problem with matching the virtualhost [11:14] mscdex: it just looks at the Host: header [11:14] mscdex: i don't think haproxy changes it.... [11:14] everton has joined the channel [11:14] stagas: so it needs a backend and a frontend for every ip. so it should be bind xx.xx.xx.xx:80 and on the server name xx:xx:xx:xx:80 [11:15] stagas: it lands on the defaultwebpage.cgi [11:15] stagas: if I don't use the exact ip [11:16] stagas: ip address changed, server misconfiguration, site moved warnings [11:16] stagas: it's not that it doesn't actually reach apache [11:16] stagas: I guess [11:17] mscdex: i still don't understand the problem. you shouldn't have to change the server ip in the haproxy config to anything besides 127.0.0.1 unless it's located outside of the same box [11:18] mscdex: apache should be getting everything that haproxy does [11:18] mscdex: headers and all [11:18] mscdex: and apache selects the vhost based on that info [11:18] mklappst1hl has joined the channel [11:20] blaines has joined the channel [11:20] stagas: heh I crashed haproxy [11:20] stagas: used server localhost:80 [11:20] stagas: and it crashed :P [11:21] stagas: maybe it's a vps thing and they're doing routing of their own in there [11:21] stagas: I don't know [11:21] blaines: anyone using heroku? [11:22] mscdex: stagas: yeah i'm not sure either, i've used it in a VM without any problems like you're experiencing [11:23] mscdex: it should be: "server name localhost:80" right? [11:23] blaines: can someone explain to me what fu is... http://github.com/ry/node_chat/blob/master/fu.js [11:23] stagas: yes [11:24] blaines: is it a webserver? socket-server? [11:24] thorat has joined the channel [11:24] stagas: that's what crashed it [11:24] stagas: it started, but crashed when I tried to connect [11:25] blaines: hello? [11:27] blaines: hello? [11:27] blaines: hmm [11:28] _announcer: Twitter: "Evented I/O with server-side JavaScript - http://nodejs.org/ - NodeJS" -- Umar. http://twitter.com/umaar/status/18347372971 [11:28] mscdex: blaines: looks like it's just plain old http [11:28] blaines: oh okay thanks mscdex wasn't sure if anyone could see me [11:29] mscdex: blaines: the first line of fu.js gives it away ;-) [11:29] blaines: mscdex: yea trying to figure out this error http://pastie.org/1040747 [11:30] blaines: searching through source code... [11:30] hassox has joined the channel [11:30] mscdex: blaines: does it happen when someone connects or immediately? [11:30] blaines: immediately [11:31] blaines: mscdex: apparently my app is trying to write to a read-only filesystem, just not sure where the app is trying to write [11:31] listentorick1 has joined the channel [11:31] listentorick1: hi guys [11:32] listentorick1: has naybody tried using libxmljs with node? [11:32] jsilver: yay [11:32] mscdex: listentorick1: yep, many times [11:32] jsilver: my thingy is coming along [11:33] mscdex: blaines: i'd try inserting some debug statements in fu.staticHandler maybe [11:33] listentorick1: I'm getting a memory tag error whenever I "require" the library [11:33] mscdex: jsilver: that's what.... he said? [11:33] listentorick1: (i've added the issue here : http://github.com/polotek/libxmljs/issues/issue/16) [11:33] blaines: mscdex: thanks for the tip [11:33] listentorick1: anybody had this problem? [11:33] mscdex: listentorick1: it's a known issue: http://github.com/polotek/libxmljs/issues#issue/13 [11:34] blaines: jsilver: what ya makin'? [11:34] jsilver: a JS to CoffeeScript converter [11:34] jsilver: using PEG.js [11:34] mscdex: jsilver: oh haha, i thought you mean c# when you said cs earlier [11:34] mscdex: *meant [11:34] jsilver: it recursively walks the AST basically [11:34] listentorick1: and thats why I should read more carefully [11:35] jsilver: it's in JavaScript [11:35] jsilver: but it tries to build coffee [11:35] mscdex: s/build/brew [11:35] listentorick1: my app seems to actually die however [11:35] mscdex: :-D [11:35] jsilver: yeah [11:35] listentorick1: i.e. it stops running [11:35] listentorick1: actually [11:35] listentorick1: I am a knob [11:36] mscdex: :S [11:36] listentorick1: ignore my comments while I back away slowly [11:36] mscdex: heh [11:36] cloudhead has joined the channel [11:36] listentorick1: I shouldnt be allowed near computers [11:36] blaines: mscdex: do you know what " at node.js:164:9" refers to? [11:37] mscdex: blaines: line 164 column 9 in the node.js file [11:37] blaines: where is that? not in /lib [11:37] mscdex: blaines: usually that line in the stack trace is useless though [11:37] blaines: oh [11:37] mscdex: blaines: along with any stack trace mentions of the libs [11:37] blaines: haha [11:37] blaines: yay [11:38] mscdex: so, if it doesn't mention any of your files in the stack trace, there's something funky going on [11:38] blaines: apparently, according to the pastie my app is dying at " this._writeQueue = [];" [11:38] mscdex: or there's some sort of internal problem, which can cause the stack trace to not be useful [11:41] mscdex: blaines: i've never tried to setup node_chat, so i'm not of much help. what version of node are you running? [11:41] tmedema has joined the channel [11:41] blaines: mscdex: haha I"m not sure :) [11:41] mscdex: node -v [11:42] blaines: I wish it were that easy [11:42] mscdex: it is :-) [11:42] blaines: Is there a way to check in node what version it is? [11:43] mscdex: process.version [11:43] Lazesharp has joined the channel [11:44] Lazesharp: hi guys [11:44] mscdex: hola [11:44] Lazesharp: is it possible to use sys.inherits() to inherit from multiple parent objects? (multiple inheritance, of sorts) [11:44] blaines: mscdex: Node Version v0.1.92 [11:45] mscdex: blaines: upgrading *might* help. the latest version is 0.1.100 [11:45] mscdex: Lazesharp: like calling inherits() multiple times? [11:45] blaines: mscdex: i cant upgrade :| [11:45] mscdex: Lazesharp: not sure [11:46] mscdex: blaines: why? [11:46] Lazesharp: mscdex: yeah, I'd like to inherit from both Array and events.EventEmitter [11:46] blaines: mscdex: beta testing a system [11:46] mscdex: blaines: heroku? [11:46] blaines: mscdex: yes [11:46] mscdex: blaines: ah, tell them to get with the times ;-) [11:46] jsilver: wow [11:46] jsilver: this is cool [11:46] jsilver: i think i'm doing this right [11:46] jsilver: !! [11:46] jsilver: it's recursive [11:47] blaines: I'll send a signal asap [11:47] b_erb has joined the channel [11:48] mscdex: blaines: 0.1.92 was released on 4/23. that's a long time in node's universe [11:49] blaines: mscdex: I agree, but I think they're still working out the upgrade process/trying not to break existing apps [11:49] mscdex: blaines: you could setup a linux VM in virtualbox or similar and test node_chat that way [11:50] mscdex: blaines: that way you'd know if it's a node version problem or not [11:50] blaines: mscdex: It runs on my system, I'm pretty sure its because the app is trying to write to the fs [11:50] stagas has joined the channel [11:51] mscdex: blaines: i thought you said you were running this on heroku? :S [11:51] blaines: mscdex: I am, and I tested it locally [11:52] mscdex: so it works locally? [11:52] stagas: firefox scared me for no reason. I started haproxy and went back to my pages and got the defaultwebpage that I got when I had errors. it caches DNS, network.http.use-cache needs to go to false [11:52] ctp has joined the channel [11:53] stagas: everything works now mscdex thanks [11:53] blaines: mscdex: yes [11:53] mscdex: stagas: cool [11:53] mscdex: blaines: same version of node as heroku? [11:53] blaines: mscdex: no I'm not sure how I'd downgrade [11:54] mscdex: blaines: if you installed from source, do a 'make uninstall' then install the latest version [11:54] mscdex: er [11:54] mscdex: not the latest version but 0.1.92 or whatever [11:54] blaines: haha I have the latest ;) [11:54] blaines: yea [11:54] blaines: okay [11:55] blaines: I need a nvm - a node version manager [11:55] mscdex: nvm exists [11:55] mscdex: i've never had a need for it though [11:55] blaines: oh? [11:55] mscdex: yep [11:56] mscdex: blaines: http://github.com/creationix/nvm [11:57] mscdex: creationix frequents the channel here, so if you have any issues/feature requests you can bug him here ;-) [11:59] blaines: omg awesome! thanks mscdex [12:00] mscdex: np [12:00] jherdman has joined the channel [12:01] SubStack: is it reliable to look at __dirname + '/data/baz' for some raw data in an npm package's main? [12:04] satori: When I add prototype methods to a ctor template in v8 they don't show up with sys.inspect() but they are there and function ok. weird? [12:05] satori: or is that normal? [12:05] mscdex: satori: what about sys.inspect(foo, true)? [12:05] DRMacIver has left the channel [12:06] satori: Yeah. Invisible there too. Instance methods aer visible, not prototype ones. is that normal? i am tired :P [12:06] satori: but they work fine. I spent the last hour debugging why they were missing and they weren't. ouch. [12:07] mscdex: no idea, i spend most of my time in js land [12:07] satori: yeah. me too, but I'm getting insight into v8 and js from under the hood so to spk [12:08] satori: I really like how node is thin bindings on top of a js framework. Makes it easy to follow the code. [12:09] mscdex: yeah [12:10] c4milo: Anybody is working on a port for inotify ? [12:10] donspaulding has joined the channel [12:12] mscdex: a port? [12:13] mscdex: inotify is a linux thing [12:13] c4milo: yep [12:13] c4milo: I mean, to be used from nodejs [12:14] satori: c4milo: looks like it would trivial to expose in a node addon [12:14] mscdex: node (libev rather) selects the best mechanism available for the platform [12:14] satori: well the bindings would be anyway [12:15] satori: but yeah, if it involves watching fds, let node do its thing [12:16] c4milo: satori: yep, it's trivial [12:17] c4milo: satori: how can I do that with nodejs ? using watch ? [12:17] mscdex: watchFile [12:17] mscdex: !api watchfile [12:17] _api: mscdex: (File System) method: watchFile(filename, [options], listener) -- Watch for changes on `filename`. The callback `listener` will be called each time the file changes. The second argument is optional. The `options` if provided should be an object containing two members a boolean, `persistent`, and `interval`, a polling value in milliseconds. The default is `{persistent: true, interval: 0}`. The `listener` gets two argumen [12:17] mscdex: heh too long [12:18] c4milo: inotify watch directories as well [12:18] satori: remember too...persistent means if it will stop node from exiting [12:18] therealkerni has joined the channel [12:18] mscdex: c4milo: watchfile should work on directories too [12:19] satori: do filewatchers no work with dirs? [12:19] c4milo: ohh but it uses polling [12:19] c4milo: that's bad :) [12:19] satori: like mscdex said, node (libev) chooses the fastest method for the system. [12:20] mscdex: c4milo: well, if nobody has already written a watchFile that uses libev, then you'd have to write it yourself [12:20] mscdex: creater a node addon [12:20] c4milo: ok, I'll take a look at source code [12:20] mscdex: *create [12:20] satori: check out the io_watcher.cc file [12:21] satori: node_io_watcher.cc [12:22] c4milo: ok, thanks guys [12:25] c4milo: you are right mscdex, satori [12:26] c4milo: libev do that in a more portable way [12:27] mklappstuhl has joined the channel [12:27] jsilver: guys [12:27] jsilver: is anyone excited [12:27] jsilver: because I am [12:27] chrischris has joined the channel [12:27] jsilver: my converter can convert a really uber simple program [12:27] satori: really? its hard to tell. [12:27] jsilver: it maintains indent now [12:28] sveimac has joined the channel [12:28] blaines: mscdex: thanks for you're help, I'm catching on, nearly have it working [12:28] jsilver: it also gives you an option whether you want to actually convert the AST or just inspect it [12:29] jsilver: it knows ArrayLiteral too [12:29] jsilver: and Function [12:29] jsilver: hold on [12:30] ceej has joined the channel [12:31] jsilver: http://gist.github.com/472426 [12:35] phiggins has joined the channel [12:35] b_erb: just to be sure: http client does not dispatch more than one request at a time? is there an internal queue? [12:38] listentorick1: any libxmljs.node experts in the house? [12:40] SubStack: idea: start packaging client-side javascript with npm by doing require('somemodule/web').source() [12:40] satori: b_erb, i believe that is correct. you need multiple clients for paralell requests [12:40] SubStack: (actually the idea of pkrumins and I likes it) [12:41] b_erb: satori: thx [12:41] mscdex: listentorick1: more problems? :-) [12:44] ctp has joined the channel [12:47] listentorick1: :) indeed [12:47] listentorick1: I have created a doc (using parseXmlString [12:47] listentorick1: the string is [12:47] listentorick1: "" + [12:47] listentorick1: "" + [12:47] listentorick1: "" + [12:47] listentorick1: ""+ [12:47] listentorick1: ""; [12:48] ceej: listentorick1: whoa use a pastie http://pastie.textmate.org [12:48] mscdex: heh [12:48] mscdex: or a gist [12:48] listentorick1: apologies [12:48] listentorick1: I then am try to "find" the body element via this._doc.find("soap:Body"); [12:48] ceej: np :) [12:49] listentorick1: I get an "Undefined namespace prefix" error [12:49] _announcer: Twitter: "Got #PersistenceJS partly working in a #NodeJS environment with MySQL. Cool!" -- Zef Hemel. http://twitter.com/zef/status/18351695728 [12:49] listentorick1: yet in the doc I define soap as a prefix for the namespace [12:49] listentorick1: (well in the string) [12:50] listentorick1: any thoughts? [12:51] listentorick1: I'm trying to get a proxy generator working for node (you give it a wsdl and it generates the js you need) [12:57] bradleymeck_ has joined the channel [12:58] _utility has joined the channel [12:59] _frankie has joined the channel [12:59] victorstan has joined the channel [13:00] margle has joined the channel [13:01] listentorick1: so I've stuck the xml up here http://pastie.org/1040829 [13:02] listentorick1: I think I may need to register the namespace somehow so that I can reference the namespace in the xpath I pass to the find method? [13:05] davidsklar has joined the channel [13:06] TomY has joined the channel [13:06] hassox has joined the channel [13:07] _announcer: Twitter: "instead of giving us that android app creator, Google should rather switch from Java to #Javascript, #HTML5, #CSS3 and maybe #nodejs !" -- Christian Scholz. http://twitter.com/mrtopf/status/18352790376 [13:08] TomY has joined the channel [13:11] sechrist has joined the channel [13:16] mklappst1hl has joined the channel [13:16] _announcer: Twitter: "@ MrTopf Palm is there already happening: http://bit.ly/aSbfdy # node.js" [de] -- Peter. http://twitter.com/cainvommars/status/18353353972 [13:16] TomY has joined the channel [13:18] victorstan: hello [13:18] victorstan: Anyone know where npm download the modules? [13:19] SubStack: http://registry.npmjs.org/ [13:19] mape: victorstan: check your home dir [13:19] SubStack: oh hah, misinterpreted [13:19] mape: .node_libraries [13:19] victorstan: yes but some library i downloaded is missing from there... [13:19] SubStack: not on my install [13:19] SubStack: node> require.paths [13:20] SubStack: '/home/substack/prefix/lib/node/.npm' <-- this one [13:20] mscdex: listentorick1: file an issue: http://github.com/polotek/libxmljs/issues [13:20] maushu: listentorick1: Yes, pay attention to namespaces while handling xml. [13:21] victorstan: for me its /usr/local/lib/node [13:21] SubStack: ACTION loves his ~/prefix [13:21] listentorick1: It appears to be only an issue if you parse xml from a s tring or a file [13:21] victorstan: thanks [13:21] listentorick1: if you construct the structure using the doc.node("whatever") and you set a namesapce the xpath orks fine [13:22] mscdex: almost 9:30am, time for sleep :-) [13:22] SubStack: although admittedly it could be more awesome with a more sophisticated non-root package manager (currently on the back burner) [13:22] SubStack: mscdex: you go to bed so early! [13:23] SubStack: hopefully I'll be tired before noon [13:23] aubergine_ has joined the channel [13:23] donspaulding has joined the channel [13:23] satori: sleep is for the weak, real noders rest asynchronously. [13:24] victorstan: if the modules are stored here, do i still have to require() them? [13:24] mitkok has joined the channel [13:26] jetienne: b_erb: my guess would be no [13:26] sechrist_ has joined the channel [13:26] jetienne: euhh log bug. i m answering a question 2h late [13:26] b_erb: jetienne: don't mind, i'm still interested in the answer [13:27] jetienne: b_erb: well such serialisation would be against all in nodejs [13:27] jetienne: b_erb: additionnaly i got a stress client which is doing 30+ simultatenous client [13:27] jetienne: s [13:28] b_erb: jetienne: i encountered different situations [13:28] b_erb: when adding more clients, the throughput increased [13:28] Maizor has joined the channel [13:29] Maizor: Hey guys [13:29] jetienne: b_erb: seems normal to me [13:29] b_erb: i digged deeper a bit and found the info that the http client queues requests [13:30] b_erb: which does not mean that it waits until a request is finished, but you can't execute requests really in parallel [13:30] jetienne: b_erb: what make you think that ? do you have an url on the source ? [13:31] jetienne: beside dns resolution, this is trivial to code client socket [13:31] jetienne: so i would be surprised this is not in nodejs [13:31] b_erb: i think it was in the node-couchdb docs [13:31] b_erb: cite: "Each couchdb.Client uses an internal queue for its requests, just like http.Client. This guarantees ordering. " [13:32] bradleymeck_: yello all [13:32] kriszyp has joined the channel [13:33] bradleymeck_: mmm that cant be right i dl multiple things at once and they dont always come back in order with http.Client [13:34] micheil: mape: re that email, could you confirm by replying? thanks. [13:34] maushu: bradleymeck_: different connections? [13:34] b_erb: that's okay, because the order is meant for dispatching requests, not for retrieving responses [13:34] mape: micheil: Ah yeah sorry, to many things in my head [13:34] bradleymeck_: yes diff connections [13:35] bradleymeck_: oh idk about request queuing ill looks at src one sec [13:37] bradleymeck_: yep requests appear to be queued, odd [13:37] therealkerni has joined the channel [13:41] bradleymeck_: oh, i see a http.Client is only wrapping 1 socket, so it has to queue em, so makes sense to need more than one if you want mass throughput, wish i could edit the docs... [13:42] jbaron has joined the channel [13:42] xla has joined the channel [13:46] c4milo has joined the channel [13:48] margle_ has joined the channel [13:52] _announcer: Twitter: "Anyone want to try a Websocket + node.js + <canvas> demo ? http://ssh.alwaysdata.com:11800/" -- Anthony Ricaud. http://twitter.com/rik24d/status/18355631064 [13:52] Rik`: wow, I just pressed the Enter button and it was already here [13:53] bradleymeck_: i get a nogo from the browser [13:54] behmann has joined the channel [13:54] Rik`: yeah, it just crashed [13:54] Rik`: and my shell is not responding [13:54] victorstan has joined the channel [13:54] meder has joined the channel [13:56] micheil has joined the channel [13:56] Rik`: bradleymeck_: try it again [13:56] ryah: time for a day of massive patch merging [13:56] bradleymeck_: hehe [13:57] maushu: Rik`: Scalability, you lack it. [13:57] bradleymeck_: ryah, is there any way ppl could get doc editting access? [13:57] Rik`: maushu: well, it is a small demo [13:57] maushu: SCALE IT! FOR GREAT JUSTICE! [13:57] ryah: bradleymeck_: you can path [13:58] ryah: patch [13:58] bradleymeck_: ah [13:58] maushu: ryah: Almost forgot, anyone poked you regarding the ssl problem? [13:58] zapnap has joined the channel [13:58] maushu: ACTION pokes mscdex. [13:58] ryah: maushu: no, i've been out of service the last week [13:58] maushu: I know. [13:59] ryah: ssl problem = not surprising [13:59] maushu: This problem has been around for multiple versions, only that now I think we identified it. [13:59] maushu: mscdex has more info regarding it. [13:59] ryah: okay [13:59] ryah: going to the office, bbiab [13:59] maushu: bai [14:00] maushu: ACTION pokes mscdex repeatedly. [14:01] donspaulding has joined the channel [14:03] bradleymeck_: ACTION pokes maushu [14:04] kurokikaze_away has joined the channel [14:05] kurokikaze_away: hi2all [14:05] mindeavor has joined the channel [14:05] kurokikaze_away: what can you recommend for logging Node.js app? [14:06] bradleymeck_: are you using a specific framework? [14:06] kurokikaze_away: problem is, app consists of several node instances, and logs must be separated by instance [14:06] kurokikaze_away: Express [14:06] kurokikaze_away: I don't use Connect, but i'm looking at it [14:06] steadicat has joined the channel [14:07] paul____ has joined the channel [14:07] c4milo: ryah: do you have some roadmap of io_watcher ? [14:07] _announcer: Twitter: "V8 JavaScript Engine and Node.js: V8 Engine V8 is Google’s open source JavaScript engine. V8 is written in C++ an... http://bit.ly/97OwaU" -- molokoloco. http://twitter.com/molokoloco/status/18356664010 [14:08] bradleymeck_: idk enough about those to help ya, but if it has several instances you could use separate logs by instance. [14:09] bradleymeck_: would have to either have the instances communicate, a console argument, or separate out the code [14:09] kurokikaze_away: also it will be good to log some utility scripts, which are pure node.js [14:10] _announcer: Twitter: "ServerSide #JavaScript with #MooTools and #NodeJS: http://davidwalsh.name/mootools-nodejs" -- davidwalshblog. http://twitter.com/davidwalshblog/status/18356811726 [14:10] kurokikaze_away: yep, i need separate logs [14:10] kurokikaze_away: but are these some solutions for this? E.g. not just "dump all ib /var/log by file" [14:10] _announcer: Twitter: "imagining a polyglot programming future at @amexonrails ... couchdb, neo4j, rails, sinatra, node.js, coffeescript, obj-c...." -- Matthew Kane Parker. http://twitter.com/moonmaster9000/status/18356858881 [14:10] kurokikaze_away: Or I can write some logger myself, maybe using Redis or smthng like that [14:11] tswicegood has joined the channel [14:11] davidwalsh has joined the channel [14:13] _announcer: Twitter: "Trying to compile node.js, and of course it doesn't work on a PowerPC. Maybe time to get a new friggin computer." -- taylor shaw. http://twitter.com/taylorshaw/status/18357026331 [14:14] gf3 has joined the channel [14:16] _announcer: Twitter: "@ Labrador_kuro Oops. . . Thank you! node.js means getting back so if you wish to implement. . CouchDB is still a decent version of rails is the version chaos. ." [ja] -- Yohei Sasaki. http://twitter.com/yssk22/status/18357259983 [14:17] _announcer: Twitter: "Planning to create a goban app with @iancmcc using node.js and web sockets. It will be awesome." -- Nate Eagle. http://twitter.com/neagle/status/18357304807 [14:17] _announcer: Twitter: "ServerSide JavaScript with MooTools and NodeJS http://bit.ly/d3HOXb" -- Web Design News. http://twitter.com/allwebdesign/status/18357335791 [14:17] _announcer: Twitter: "ServerSide JavaScript with MooTools and NodeJS: This post was authored by Christoph Pojer. To learn more about Ch... http://bit.ly/bblzWk" -- Jean-Paul Bernadina. http://twitter.com/imjp/status/18357336755 [14:19] bradleymeck_: idk of any standardized solution that can do what you need, tj might be able to help more but he wont be on til much later [14:19] _announcer: Twitter: "@ Yssk22 Oh, node.js want it too I thought." [ja] -- takenori tanaka. http://twitter.com/labrador_kuro/status/18357463877 [14:20] x_or has joined the channel [14:20] _announcer: Twitter: "taking a look at node.js. Pretty cool so far." -- Rob Faraj. http://twitter.com/robfaraj/status/18357497334 [14:20] unomi has joined the channel [14:21] _announcer: Twitter: "My debut post on the famous davidwalshblog! http://davidwalsh.name/mootools-nodejs" -- Christoph Pojer. http://twitter.com/cpojer/status/18357598992 [14:22] jherdman: can someone explain to me why you'd want to use a client side library such as MooTools on the server side? [14:23] blowery: bragging rights [14:23] bradleymeck_: a. support non-js users b. templating c. easing development across multiple browser environments d. I hate mootools [14:24] antoinevg has left the channel [14:24] bradleymeck_: just be sure to serialize the output correctly if you need it. [14:24] kurokikaze: @jherdma Because it unlocks for you "JS Nerd" achievement [14:25] joshbuddy has joined the channel [14:26] creationix has joined the channel [14:28] jesusabdullah: Because there isn't a server-side equivalent? [14:31] bradleymeck_: yes, but largely people only think of js toolkits as things that make stuff purty [14:32] jesusabdullah: heh [14:32] jesusabdullah: fair nuff [14:35] jesusabdullah: Man, looking at mootools, though [14:35] jesusabdullah: suggests that it's a terrible fit for this sort of thing [14:35] x_or: Anyone here know how to run connect with DJs.js? I was hoping it would be something like this: node ~/node-lib/node-DJs/d.js lib/connect/bin/connect. But, that says: 'if(!list.length) throw new Error("No files in the playlist.");' [14:35] _announcer: Twitter: "reading about node.js evented IO while waiting for something to happen at jury duty." -- Matthew Kane Parker. http://twitter.com/moonmaster9000/status/18358528333 [14:36] jesusabdullah: ACTION never heard of DJs.js! Link? [14:36] jesusabdullah: x_or: On that note, I don't know :) [14:36] x_or: http://github.com/lrbabe/node-DJs. It reloads code for you upon changes without server restart. [14:36] x_or: Like running rails in debug mode. [14:36] x_or: Er, development mode... [14:36] jesusabdullah: maan [14:37] jesusabdullah: and here I thought it was music related [14:37] x_or: :) [14:37] jesusabdullah: hmm [14:38] jesusabdullah: Maybe you're doing it right, except you haven't put anything in the playlist--that is, you're not having DJs track anything [14:40] _announcer: Twitter: "Web development node.js http://bit.ly/9q8CFL in the line of nginx" [fr] -- Pierre. http://twitter.com/web_ae/status/18358902185 [14:41] _announcer: Twitter: "ServerSide JavaScript with MooTools and NodeJS: This blog post is intended to provide a starting ... http://bit.ly/cgcqTv #AJAX #JavaScript" -- AJAX.bz. http://twitter.com/AJAX_bz/status/18358968300 [14:42] TrisMcC has joined the channel [14:43] bradleymeck_: well you could make input validation easier i guess [14:44] Munter has joined the channel [14:46] softdrink has joined the channel [14:48] pgriess has joined the channel [14:55] dmcquay has joined the channel [14:55] Yuffster has joined the channel [14:55] [[zz]] has joined the channel [14:55] _announcer: Twitter: "soliMAP gonna use node.js and mongodb http://bit.ly/aX45aX" -- Olivier BONNAURE. http://twitter.com/olivierb/status/18359919647 [14:59] _announcer: Twitter: "noodling with node.js this morning and actually accomplishing quite a bit." -- Mel Gray. http://twitter.com/melgray/status/18360160885 [14:59] liwagr has joined the channel [14:59] bradleymeck_: hehe noodling [15:00] _announcer: Twitter: ""ServerSide JavaScript with MooTools and NodeJS" by @davidwalshblog #tech #javascript http://bit.ly/aGyzZ4" -- Elijah Manor. http://twitter.com/elijahmanor/status/18360206924 [15:00] creationix: x_or: what if you write your own runner for the connect app [15:00] creationix: ? [15:00] creationix: require('./app').listen(3000) [15:00] creationix: that's how I host connect apps on heroku, I just save the shim file as server.js [15:01] aubergine has joined the channel [15:01] tav has joined the channel [15:01] creationix: even better would be to have something like DJs or the other reloader libraries built-into the "connect" executable [15:02] x_or: creationix: Yeah, I'm doing a bit of reading on how this might work. [15:05] mtodd has joined the channel [15:05] x_or: Your answer was shorter than I expected, I thought the connect script did more than that. I'm not sure DJs will work, but giving it a try now. [15:05] listentorick1 has joined the channel [15:08] creationix: x_or: the connect script does a lot of stuff, but the interface between the app.js and the script is super simple [15:09] TrisMcC: I'm trying to figure out the best way to sanitize/filter different user inputs. [15:09] TrisMcC: thoughts? [15:10] bradleymeck_: http://github.com/felixge/node-formidable can be helpful [15:10] aubergine_ has joined the channel [15:10] bradleymeck_: also doing it clientside as well can save some bandwidth as well [15:11] TrisMcC: hmm [15:11] TrisMcC: interesting...thanks [15:12] x_or: creationix: At first glance it does not seem like it works, changes to the code are not reloaded. The module suggests dynamically loaded modules are not tracked, perhaps something there. [15:13] bradleymeck_: makes sense can override a require()'s require method, could emulate require() to allow that but doubt it does that [15:15] stepheneb has joined the channel [15:17] haxd has joined the channel [15:17] creationix: x_or: yep, in that case it won't work [15:18] creationix: since there is nothing changing in your server.js file [15:18] creationix: x_or: if all your logic is inline in the app.js file, then you can just call listen directly instead of exporting it [15:18] creationix: it won't be runnable using "connect" but should play nicer with the reloader [15:19] x_or: No, I have broken them into submodules inside separate files. [15:20] creationix: have you looked as isaac's reloader thing [15:21] creationix: maybe it supports required files [15:21] creationix: http://github.com/isaacs/node-supervisor [15:21] x_or: No, I will look at that. [15:22] _announcer: Twitter: "Anyone played with NodeJS? Done anything interesting with it?" -- rob hayward. http://twitter.com/robhayward/status/18361756960 [15:23] robinduckett: There needs to be an isaac fan club [15:23] bpot has joined the channel [15:24] jherdman has joined the channel [15:24] x_or: creationix: Oh, this is such a better approach. I guess this will mean my sessions will die when it gets reloaded, but I can handle that, perhaps a good excuse to make persistent sessions. [15:25] x_or: For some reason nothing that I install with npm is in my path. Where does npm store things it installs? I am on OSX and don't see a .npm directory, and nothing is in ~/Library. Does anyone know? [15:26] jesusabdullah: x_or: I found it by reading the output to npm install whatever [15:26] jesusabdullah: because it says where it's putting everything when you do that [15:26] x_or: Yes, you are right. Doh. [15:27] x_or: jesusabdullah: Did you have to adjust your path with each install? I am using nvm to manage node, so this is perhaps the problem. [15:27] _announcer: Twitter: "ServerSide #JavaScript with #MooTools and NodeJS | Script & Style http://ow.ly/2aemL" --  Danny. http://twitter.com/dm2studios/status/18362130773 [15:28] jesusabdullah: I can't say I've ever used nvm [15:28] jesusabdullah: I'm actually very new to node [15:28] jesusabdullah: Just started playing with it, like, yesterday or the day before [15:28] x_or: Ok. [15:28] creationix: nvm has local installs of node in hour home directory with custom $PREFIX settings [15:29] creationix: if npm is using $PREFIX then it's not shared between versions of node [15:29] creationix: but I think it still uses $HOME/.node_libraries [15:29] _announcer: Twitter: "Redis posted here yesterday for a client implementation node.JS, "Fiber as though" or brutal. . Oh but I think it's a great Hack." [ja] -- Kazki MATSUMOTO. http://twitter.com/KazkiMatz/status/18362259451 [15:29] creationix: which is shares between all node versions for a specific user [15:30] figital has joined the channel [15:30] jesusabdullah: Am I the only one that doesn't understand twitter's popularity? [15:31] bradleymeck_: a lot of us dont [15:31] x_or: creationix: Hmm, the issue is that supervisor is actually now named node-supervisor. And, it is in my path, isaacs just forgot to update the documentation. [15:31] x_or: Easy fix. :) [15:33] ryah: raise your hand if you're using 'on()' [15:34] jesusabdullah: idk what that is [15:34] jesusabdullah: :( [15:34] kurokikaze: what is `on()`? [15:34] x_or: does it replace addListenere? [15:34] ryah: yeah [15:35] x_or: I like that much better. [15:35] ryah: server.on('request', function (req, res) { ... }) [15:35] tjholowaychuk has joined the channel [15:35] _announcer: Twitter: "Thank you to @ ferrouzzz alwaysdata.com and for load test on Canvas, and node.js WebSocket! It was at 298 to draw together! @ Rik24d" [fr] -- Tristan Nitot. http://twitter.com/nitot/status/18362662445 [15:35] mjr_: ryah: ".on" is so much better [15:35] mjr_: I tried it out once, and then immediately search/replaced everything. [15:35] ryah: yeah [15:36] c4milo: ryah: +1 "on" is beautiful [15:36] ryah: it doesn't jive with "removeListener" but.. [15:36] ryah: who cares [15:36] mjr_: .off? [15:36] c4milo: ahahaha [15:36] mjr_: To be fair, only wimps remove event listeners. [15:36] kurokikaze: haha [15:37] x_or: How about .no() [15:37] mjr_: nice [15:37] ryah: x_or: :) [15:37] tjholowaychuk: on reads way better :D. I was going to ask actually, the only way to make a stream callback-ish is to remove the listener on callback correct? [15:37] tjholowaychuk: or is there a better idiom for this [15:37] c4milo: xon ? [15:37] jakehow has joined the channel [15:37] ryah: wow, you guys are so creative :) [15:37] ryah: xon :D [15:38] x_or: Don't like it, too close to my nick handle. [15:38] c4milo: ahaha :S [15:38] TrisMcC: jQuery's opposite of live() is die() [15:38] c4milo: I did not see your nick sorry about that x_or [15:39] TrisMcC: even though most people pronounce live() like a live performance. [15:39] ryah: http://four.livejournal.com/908341.html [15:39] x_or: c4milo: I have recovered from my anger. Don't worry. [15:39] ryah: ^-- mjr_ you might like that [15:39] ryah: or you might hate it [15:39] technoweenie has joined the channel [15:40] x_or: ryah: Do you have an opinion on the defer keyword discussed in this thread? http://gfxmonk.net/2010/07/04/defer-taming-asynchronous-javascript-with-coffeescript.html [15:40] mjr_: That's interesting. So why hasn't AIO taken over the world? [15:41] ryah: x_or: i'll be interested how people find it after having used it for a while [15:41] ryah: it's an interesting idea, and i think a really original one [15:41] ryah: i'm not sure how it will play out though... [15:41] _announcer: Twitter: "Thank you everyone for the test <canvas>, WebSocket, node.js. Thank you to http://www.alwaysdata.com/ for config test." [fr] -- Anthony Ricaud. http://twitter.com/rik24d/status/18363107354 [15:42] ryah: my livejournal from late 2008 is full of great links [15:43] ryah: http://four.livejournal.com/912751.html [15:43] ryah: http://four.livejournal.com/909444.html [15:43] ryah: http://four.livejournal.com/908076.html [15:44] Lazesharp: when using sys.inherits() how do you call the parent object's version of a method? [15:44] ryah: Lazesharp: Parent.prototype.method.apply(this, args) [15:45] Lazesharp: any way to do it dynamically? [15:45] Lazesharp: actually, nvm [15:45] ryah: http://four.livejournal.com/933698.html <--- [15:46] bradleymeck_: the only thing i have against continuation style programming is it often makes people not separate out code into logical bits and can lead to large blocks of code which makes for sad panda [15:47] ryah: bradleymeck_: http://www.youtube.com/watch?v=CHomKI4zCYY&feature=player_embedded [15:47] bradleymeck_: just wow... [15:48] Lazesharp: heh [15:49] Lazesharp: that feels just a little *too* expressive to me [15:50] kodisha has joined the channel [15:50] kodisha: hi guys :) [15:50] bradleymeck_: yo [15:51] x_or: bradleymeck_: Are you referring to the defer link I sent in that last comment? [15:51] bradleymeck_: yub [15:54] x_or: creationix: You wrote the haml-js module, right? And, then TJ rewrote a newer version? [15:54] pdelgallego has joined the channel [15:54] creationix: x_or: correct, and tjholowaychuk wrote an even new one called Jade since then [15:54] tjholowaychuk: x_or: yea jade is the latest, http://jade-lang.com [15:54] tjholowaychuk: might backport to haml [15:54] x_or: I did not see anything in the tests which supports partials or include files, is that correct? Not sure if this was a rails addition to haml. [15:55] x_or: Does jade support partials or includes? [15:55] tjholowaychuk: x_or: not out of the box no none of them do (unless tim's does?) [15:55] tjholowaychuk: I dont think any do though [15:55] creationix: haml doesn't support partials in ruby land either [15:55] creationix: it's part of the framework usually [15:56] x_or: Right, good point, just calling a method inside the haml. [15:56] tjholowaychuk: yup [15:56] creationix: x_or: I'm working on a spec for async enabled template language compilers [15:56] creationix: that will make including things like partial trivial using helpers [15:56] _announcer: Twitter: "I use @ DominiqueRabeuf node.js and http://bit.ly/alKbyJ. The code is very similar to the example echo-server.js" [fr] -- Anthony Ricaud. http://twitter.com/rik24d/status/18364080642 [15:56] creationix: x_or: http://gist.github.com/468889 [15:57] x_or: creationix, tjholowaychuk: Do you guys ever sleep? [15:57] creationix: x_or: nope [15:57] tjholowaychuk: i attempt to [15:57] tjholowaychuk: lol [15:57] creationix: plus we do node at our day jobs too now [15:57] tjholowaychuk: i dont code at night though anymore [15:57] gf3: tjholowaychuk: it's too nice outside right now [15:57] amerine has joined the channel [15:58] tjholowaychuk: gf3: not here! its all cloudy and nasty [15:58] N` has joined the channel [15:58] gf3: tjholowaychuk: fuck that, come hang out in Toronto! [15:58] technoweenie: its nice in soma [15:58] tjholowaychuk: gf3: maybe some day I have a few friends that moved there a while back [15:58] x_or: Beautiful day in Paris. I just saw Owen Wilson (Hansel from Zoolander) biking around, no one noticed him. [15:59] gf3: tjholowaychuk: cool, if you're ever in town, hit me up, I'll buy you a beer [15:59] maushu: ryah: So basically, if we don't eat that product a panda will kill us? Great. Tonight I will dream of rabid pandas. [15:59] tjholowaychuk: x_or: hahaha [15:59] x_or: Seriously, I saw him an hour ago, and posted on my Facebook, and then he biked by me again at this cafe an hour later, and then a minute later again. [15:59] qFox has joined the channel [15:59] x_or: If I die a weird death, you guys know who did it, he might be stalking me. [16:00] gf3: ahahaha [16:00] bradleymeck_: did that template engine w/ streams ever get done? i would like to compare it to mine [16:00] peburrows has joined the channel [16:01] tjholowaychuk: bradleymeck_: Mu ? [16:01] tjholowaychuk: its actually pretty slow [16:01] tjholowaychuk: from what I tried at least [16:02] steadicat has joined the channel [16:03] _announcer: Twitter: "Tutorial: JavaScript: ServerSide JavaScript with MooTools and NodeJS. http://bit.ly/bpT5Cc" -- Nicholas Patten. http://twitter.com/nicholaspatten/status/18364539303 [16:03] bradleymeck_: mmm interesting, id suspect it to be slower than a dump if you use a stream, but i wouldnt think that much slower [16:05] Validatorian has joined the channel [16:05] creationix: bradleymeck: my proposed one has streams [16:06] bradleymeck_: then again, prolly shouldnt use streams unless it requires a db lookup , sockets, etc. I have one too that uses streams i only really found the stream as the real overhead (4% :/) [16:06] tjholowaychuk: bradleymeck_: due to how jade buffers it is slower than haml.js, but haml.js was 2x faster with 1 million renders (than Mu) [16:06] maushu: Anyone has problems connecting with websockets at work? [16:06] tjholowaychuk: bradleymeck_: and jade is the same as Mu pretty much, which is kinda sad considering it does far more complex parsing than mustache [16:07] maushu: Ah wait, I think I found the problem. [16:07] [[zz]] has joined the channel [16:07] maushu: mape: Would it be possible to use port 80 instead of 50000 in your wargame without affecting any other webserver? [16:08] mape: maushu: Sadly no [16:08] maushu: Reason? I want to prevent the same problem I'm having. [16:08] maushu: Are you using another webserver on 80? [16:09] bradleymeck_: yea, wish i could figure out a good template style for pub/sub streaming, but meh [16:09] mape: maushu: yes [16:10] maushu: Ah, good thing I've decided to use node.js for everything. [16:11] maushu: Now that I think about it, not only will the main server have to serve users but also receive websocket connections and proxy sub-domains. Hmmm. [16:12] maushu: Well, the only alternative is getting another ip or another server. [16:13] maushu: mape: How about 8080? [16:13] stride: have you tried port 8080? [16:13] stride: damn :) [16:13] dgathright has joined the channel [16:13] mape: would that help? [16:13] maushu: NINJA'd. [16:13] mjr_: Sounds like it's time for somebody to write a general purpose, node-based, WebSocket compatible reverse proxy. [16:13] maushu: mape: Most companies unblock 8080 for services. [16:13] rauchg_ has joined the channel [16:14] maushu: It's probably the most unblocked port besides 80 and 21. [16:14] maushu: And 443. [16:14] tyfighter has joined the channel [16:14] maushu: Well, besides the most used without actually being useful for the most part. [16:14] kurokikaze: Hey @tjholowaychuck [16:14] kurokikaze: @tjholowaychuk [16:14] tjholowaychuk: kurokikaze: whats up [16:15] kurokikaze: What can you suggest for logging multiple instances of Node + some utility scripts (on Node too)? [16:15] Validatorian: for anyone interested, JimBastard started working on roles for node last night: http://github.com/Marak/roles.js (Full disclosure: I'm going to be needing roles in a week, and I want you all to make it awesome by that time ;) ) [16:15] kurokikaze: i mean, separate logs for &1 and &2, ability to fetch logs by instance easily [16:16] kurokikaze: all that stuff [16:16] tjholowaychuk: kurokikaze: I just log to foo.PID[.error].log [16:17] kurokikaze: hmmm [16:17] tjholowaychuk: fs write stream should do just fine [16:17] tjholowaychuk: or obviously just std{err,out} if you want to redirect but thats a pain [16:17] kurokikaze: I thought about fs too, but I need access to logs from node [16:18] kurokikaze: ability to fetch logs for particular instance, paginate, maybe filter [16:18] kurokikaze: idk if fs will do [16:18] kurokikaze: I thought about using Mongo for this [16:18] tjholowaychuk: you could just log to an array and write it out to disk every so often [16:18] kurokikaze: As Mongo is already used in this app [16:19] tjholowaychuk: misewell then ya [16:21] kurokikaze: well, thanks ) [16:22] aubergine has joined the channel [16:23] towski has joined the channel [16:25] JimBastard has joined the channel [16:27] _announcer: Twitter: "node.js แฮะ good looks interesting. But do not see any clear benefit much. In addition, more easily and quickly write better." [th] -- teerapapc. http://twitter.com/teerapapc/status/18366152682 [16:28] x_or: creationix: I am reading your post on using HAML and your implementation of partials. It appears that you basically just pass in a partial method to the options when rendering the haml template, right? I am wondering if there is a way to define a global "partial" method such that I don't have to pass that into each render call. This might be more of a question about node in general than HAML, but wondering if you thought of doing it [16:29] tjholowaychuk: x_or: typically your view engine would handle this, you would have some view "globals" or "helpers" whatever you want to call them, automatically merged with the locals passed [16:29] tjholowaychuk: so its always available [16:30] x_or: OK, that makes sense. [16:33] gb|work has joined the channel [16:34] creationix has joined the channel [16:36] [[zz]] has joined the channel [16:38] jbrantly has joined the channel [16:38] aubergine_ has joined the channel [16:38] creationix has joined the channel [16:43] creationix: ryah: is there a non-private api to get a list of all the built-in libraries? [16:43] creationix: I'm using Object.keys(process.binding('natives')) now, but I'm assuming that is private [16:45] khug has joined the channel [16:49] levi1 has joined the channel [16:50] _announcer: Twitter: "@ Jney What is the name of the framework for good node.js? I found there: http://wiki.github.com/ry/node/modules" [fr] -- nico. http://twitter.com/tubingen/status/18367594434 [16:51] levi1: Just wanted to ask if anybody could help me with this: http://groups.google.com/group/nodejs/browse_thread/thread/34719084f60d5ad4# [16:51] creationix: tjholowaychuk: what do you think about a template language library (IE a library to help authors of template languages) [16:52] creationix: levi1: no love on the mailing list huh? [16:52] levi1: Right ;-) [16:52] tjholowaychuk: creationix: wouldnt be brutal but its just extra dependencies, there is never a perfect way to parse all templates, easier to just roll your own IMO [16:53] mikeal1 has joined the channel [16:53] creationix: levi1: since I've never used the debugger, I'm afraid it's all over my head [16:53] creationix: levi1: keep trying, different people are online at different times [16:54] benburkert has joined the channel [16:54] levi1: creationix: Thanks. I keep trying. [16:54] creationix: tjholowaychuk: or the template compilers could just be engines to plug into a view framework [16:54] creationix: (that was the original goal of my grain project) [16:55] tjholowaychuk: creationix: the only thing I have against making the template engines more low-level is that they become less useful stand-alone [16:55] creationix: in http://gist.github.com/468889, I noticed that very little of the generated code is unique to the actual input template [16:55] tjholowaychuk: you could always just provide a higher level api on top of the low level stuff [16:55] bradleymeck_: lol i had a template engine prototype named grain too [16:55] _announcer: Twitter: "NodeJS http://newsicare.wordpress.com/2010/07/12/nodejs/" [lv] -- newsicare. http://twitter.com/newsicare/status/18367920655 [16:55] JimBastard: in invented this really sweet tag based templating language. it uses thing thing i call "HTML markup" [16:56] JimBastard: you make "HTML" tags and they can hold content [16:56] tjholowaychuk: creationix: for sure not at all really, same with jade's output it is very linear [16:56] creationix: well, I'm all about keeping the compilers as simple as possible, but async capabilities need to be built in, it can't be wrapped on later [16:56] creationix: JimBastard: Hyper text markup language markup? [16:57] creationix: ;) [16:57] bradleymeck_: ah, but html lacks lots of niceties, and the w3 prefers to make things special sometimes like not allowing parameterized segments of html, leading us to use dojo,jquery,etc :/ [16:57] JimBastard: yeah, im still sorting it all out [16:59] creationix: tjholowaychuk: When I was rewriting howtonode.org and developing wheat, I really felt the pain of not having a template language that supported async helpers. I had to pre-compute all the dependencies in a template before-hand and then inject it all into the renderer as a last step. [16:59] technoweenie has joined the channel [16:59] zack_ham has joined the channel [16:59] creationix: template compilers are a great way to simplify a LOT of code since we're already parsing and compiling code [17:00] creationix: we can do fancy non-blocking that looks like sync code transforms [17:01] tjholowaychuk: kinda defeats the purpose of a template engine IMO, I dont think it is bad at all to construct things async before handing off to the template [17:01] tjholowaychuk: thats typical with mustache [17:01] creationix: tjholowaychuk: that's like saying that there should be no helpers ever [17:01] creationix: it's just a technical limitation that most allow sync helpers, but not async helpers [17:02] pydroid has joined the channel [17:02] JimBastard: tjholowaychuk: whats up with the readme on http://github.com/visionmedia/kiwi [17:02] tjholowaychuk: its obviously not a bad route to go, but ATM I have not had a personal need for it at all [17:02] JimBastard: the kiwi versus others seems to be outdated? [17:02] creationix: tjholowaychuk: no problem, just wanted to hear some outside input [17:03] tjholowaychuk: JimBastard: oh yeah for sure that has not been updated in monthsss [17:03] creationix: I tend to dive off the deep-end when left to myself [17:03] tjholowaychuk: creationix: its just a personal thing, id gladly add it to all of mine if / when I need it but I haven't [17:03] JimBastard: tjholowaychuk: maybe you should put an update on the readme or project page, lots of links still in place [17:03] tjholowaychuk: shit i just cleared, haha what was that [17:03] JimBastard: tjholowaychuk: maybe you should put an update on the readme or project page, lots of links still in place [17:03] JimBastard: people linking to the kiwi page [17:04] tjholowaychuk: ill try and get to that right away [17:04] creationix: mape: you around? [17:04] mape: creationix: yeah [17:04] bradleymeck_: i generally found async was most useful combined w/ coding (load in 2 resources depending on what another resource returns async etc) which most template engines discourage. but it none the less opens the door for having possible streaming templates for pub/sub etc [17:05] creationix: mape: was it you or Tim_Smart telling me I needed streaming renderers [17:05] mape: I talked about being able to flush so guess me [17:05] programble has joined the channel [17:06] creationix: bradleymeck: I guess my best use case is "partial" as a helper, that loads a sub-template from disk, compiles it, and then renders it [17:06] creationix: but on demand instead of requireing the coder to do it all beforehand [17:06] tjholowaychuk: creationix: express does this already [17:06] admc has joined the channel [17:06] admc_ has joined the channel [17:06] tjholowaychuk: I do it a bit different in 1.0 [17:07] creationix: tjholowaychuk: but is it implemented as an arbitrary helper of a special case hard-coded into the system. [17:07] tjholowaychuk: but IMO you should never have to hit the disk for a partial, they are loaded on boot and then I have an (optional) watcher re-load them in mem [17:07] tjholowaychuk: for sure [17:07] tjholowaychuk: im happy to hear use-cases [17:07] creationix: yeah, cache is easy, but you don't want it cached in development mode, it's a pain to have to restart the server when developing the templates [17:08] tjholowaychuk: you dont have to [17:08] tjholowaychuk: I have them reloading [17:08] mape: monitor and recache? [17:08] tjholowaychuk: yup [17:08] thorat has left the channel [17:08] tjholowaychuk: you can tweak the interval so you can leave it in production too if you want [17:09] creationix: tjholowaychuk: that works too, but it's still all externally controlled, the "partial" helper isn't self contained [17:09] mape: watchFile? [17:09] tjholowaychuk: havent decided yet but I could detect development env and have a tiny interval, but some people dont change the env for production stuff :s [17:09] creationix: if you allow async helpers, then it can return sync most the time, but for the cases where you have a cache-miss it's good to have the option to come back later with a response [17:11] creationix: some helpers might do DB lookups or some other slow operation and it's nice to be able to stream part of the output to the browser as it's available [17:11] tjholowaychuk: I dont think anything like that should be in a template [17:11] aubergine has joined the channel [17:11] creationix: tjholowaychuk: the template just says I need X data [17:12] creationix: and it's up to the X helper to do the query and respond when it can [17:12] rob___ has joined the channel [17:12] creationix: instead of having to pre-compute all data needed and then pass it to the template, you instead expose services to the template, it says what it needs and you compute it on demand [17:12] aubergine has joined the channel [17:12] creationix: it's much easier and doesn't encourage putting logic in the template [17:12] creationix: it's still quite declarative [17:13] _announcer: Twitter: "static html files -> html files generated by node.js -> static html files generated by node.js @ startup. Evolve>. <" [ru] -- Devgru. http://twitter.com/Devgru/status/18369016757 [17:13] tjholowaychuk: not against it, just meh about it [17:14] creationix: mape: what do you think? [17:14] creationix: I'm just trying to get some opinions [17:14] tjholowaychuk: creationix: plus most clients will hang on this [17:14] tjholowaychuk: https://gist.github.com/8b82aff5daf53c000297 [17:14] mape: creationix: have any example code? [17:14] tjholowaychuk: and wait until your done [17:15] creationix: tjholowaychuk: they will consume the while you work on the body [17:15] bradleymeck_: the ability to spew out the head faster would let browsers grab styles and scripts bit faster [17:15] creationix: mape: just my gist for now http://gist.github.com/468889 [17:16] tjholowaychuk: scripts should not be in head anyways [17:16] creationix: tjholowaychuk: css at least would help [17:16] bradleymeck_: scripts are still common in head, like woah, and it is the recommended to put em in by w3 [17:16] tjholowaychuk: true lol [17:17] creationix: besides, most scripts just set up onLoad callbacks and then wait for the body [17:17] creationix: might as well do that while still waiting on the DB to load the data for the rest of the body [17:18] tjholowaychuk: just have a head-less template, write out the head before hitting the template lib at all [17:18] bradleymeck_: be interesting to combine that fact and assetmanager [17:19] bradleymeck_: separation of content? [17:19] creationix: tjholowaychuk: yes, but that's more work on the person designing the site [17:19] creationix: well, I'll write up a better example, this is all hard to describe in the abstract [17:20] tjholowaychuk: I understand the issue, just not totally sold on it, plus then I have to go rewrite some more shit :D haha [17:20] creationix: I just know that I've written a real site in node using sync templates and it caused me a LOT of pain [17:20] tjholowaychuk: like I said though if / when I need it (or if someone else patches) it will be there [17:20] creationix: :) [17:20] joshbuddy has joined the channel [17:21] joshbuddy_ has joined the channel [17:22] bradleymeck_: if you point me at the file i can give you a rewrite if you have a spec you want for the async bits, ie: function(writablestream) [17:22] creationix: bradleymeck: do you like the API from my gist? [17:23] derferman has joined the channel [17:23] mape: http://www.stevesouders.com/blog/2009/05/18/flushing-the-document-early/ [17:23] huyhong has joined the channel [17:23] bradleymeck_: id prefer a streamable interface instead of text as the 2nd arg [17:24] ryah: mape: can you review a patch? [17:24] mape: I'll try [17:24] creationix: bradleymeck: it does both [17:24] creationix: bradleymeck: look at line 42 [17:24] ryah: mape: http://gist.github.com/472772 [17:24] ryah: mape: to apply it: curl http://gist.github.com/raw/472772/0ac7125413edb479eb7ee9067dd560ea22504526/0001-Use-ronnjs-0.2-to-generate-docs.-Small-cosmetic-chan.patch | git am [17:25] ryah: mape: make docclean doc [17:25] creationix: bradleymeck: if you give it a callback, it buffers everything internally and calls the callback one, otherwise, it returns a stream and emits events on it [17:25] ryah: :) [17:26] creationix: ryah: new version of ronn huh? [17:26] ryah: js version of ronn [17:26] tjholowaychuk: oOoo [17:26] creationix: very ncie [17:26] creationix: *nice [17:26] ryah: yes [17:27] technoweenie: hey ryah: my node process has been up and stable since the 8th. but sloooowly gaining memory. v0.1.100 has been a big improvement [17:27] ryah: technoweenie: cool [17:27] ryah: technoweenie: was it leaking before? [17:28] levi1: Still nobody who could look into this Internal error thingy? ( http://groups.google.com/group/nodejs/browse_thread/thread/34719084f60d5ad4# ) [17:28] technoweenie: yea, i have a couple small gists (1 for file streams and 1 for child processes) that leak a lot on 1.98 and 1.99, but not 1.100 [17:28] technoweenie: https://gist.github.com/b922126a11aa0b1ed78b [17:28] ryah: levi1: i saw that - still going through my emails [17:28] ryah: levi1: i'll reply - but no idea off the top of my head [17:29] ryah: levi1: i've been gone the last week [17:29] bradleymeck_: creationix, seems a bit odd to have a return value that serves almost the same as the callback, dont see it in the gist on looking [17:29] levi1: ryah: Thanks for looking into it. At least I know someone has it on his radar. [17:29] mape: ryah: the patch should apply to master/head? Or do I have to revert to an earlier release? [17:29] ryah: mape: should work on head [17:30] mape: error: doc/api_header.html: patch does not apply error: patch failed: doc/api_header.html:300 and loads more [17:30] ryah: mape: what version are you on? [17:30] ryah: git show [17:30] creationix: bradleymeck_: what do you mean. I only return the stream if you don't supply the callback. It's to allow two different ways to use the lib [17:30] mape: 901f9df2c84b156e7144d457628d3bd40e5bbeab hmm guess that worked then [17:31] creationix: bradleymeck_: and you can see the implementation in the generated code in output.txt [17:33] xer0xM has joined the channel [17:33] liucougar has joined the channel [17:33] _announcer: Twitter: "I really enjoy node.js. Here are my first steps: http://github.com/mustardamus/skeleton" -- Sebastian Senf. http://twitter.com/mustardamus/status/18370226683 [17:34] brianmario has joined the channel [17:34] bpot has joined the channel [17:36] dgathright has joined the channel [17:36] huyhong has joined the channel [17:37] bradleymeck_: couple things, how do you know that the parial is using a callback vs a return value, also having 2 forms gets what adv/disadv for each, i can see the output which seems fine, but i dont see it needing (could cause confusion honestly) 2 ways of using it that i cant see a clear need for both of. also its more dependant on what the compiler interface is asyncCompiler.js isnt in there but may give me a better understanding [17:38] dgathright has joined the channel [17:38] creationix: bradleymeck_: the reason I allow async functions to return instead of always call the callback is for simplicity. It's easy enough to check for on the consuming end and allows functions to work either way (benifit: it's easier to use and works for more people) [17:39] mape: ryah: Seems to work fine, minor alterations in the output though [17:39] creationix: bradleymeck_: same thing with the stream vs callback interface. Sometimes one is better, but not always [17:40] ryah: mape: are you okay with that? [17:40] creationix: bradleymeck_: my goal is to have the simplest API that works for 99% of the cases and is the easiest to use for 99% of the cases [17:40] mape: ryah: http://mape.me/new-doc.png http://mape.me/old-doc.png [17:40] mape: ryah: Yeah I don't mind it much [17:41] bradleymeck_: i think having it one way for now is ideal, make the 2nd way available if there is an adv (either way shouldnt be hard to impl if the other one exists). return type of readablestream is the way to go i think for now. ill take a look at jade later, or haml whichever you think is best testbed [17:41] ryah: mape: okay thanks [17:42] mape: np [17:42] mape: Or hmm [17:42] CIA-76: node: 03Jérémy Lal 07master * ra7e1efc 10/ tools/wafadmin/Tools/node_addon.py : (log message trimmed) [17:42] CIA-76: node: Environment variables NODE_PREFIX, NODE_PATH in node-waf [17:42] CIA-76: node: Those variables have following defaults : [17:42] CIA-76: node: - NODE_PREFIX is relative to the current path of the node_addon.py file [17:42] CIA-76: node: It is used as the base path of node include files. [17:42] CIA-76: node: - NODE_PATH is ~/.node_libraries [17:42] mape: It does seem to add some whitespace [17:42] CIA-76: node: It's where modules are installed when calling `node-waf install` [17:42] CIA-76: node: 03Jérémy Lal 07master * r2b8a9a8 10/ (11 files in 6 dirs): Use ronnjs 0.2 to generate docs. Small cosmetic change. - http://bit.ly/c8agkn [17:42] CIA-76: node: 03Jérémy Lal 07master * ra7763d5 10/ doc/api.markdown : Fix spelling error - http://bit.ly/bFEDLn [17:42] mape: But not a big deal [17:42] creationix: bradleymeck_: well with the stream vs callback thing, there will be very good use cases for either style. While it's possible to wrap a stream into a single buffered callback, it's slow and ineffecient [17:43] mape: http://mape.me/new-space.png http://mape.me/old-space.png [17:43] creationix: bradleymeck_: and it's no extra work on the part of the generated code, just the write-once boilerplate [17:43] mape: Not sure if that is the markup of the generator that is wonky, never had that issue with markdown-js [17:44] bradleymeck_: not sure how a single buffered callback could be implemented otherwise, also when streaming data directly to out why would you need to buffer? [17:45] bradleymeck_: well could not need the callback wrapping but that isnt that heavy weight [17:45] mape: Or rather seems that is the css. [17:45] ryah: mape: we should get rob to rebase new-website onto this change [17:45] creationix: bradleymeck_: if you only expose a stream, but want to wrap it as a single buffered callback, then you're creating an event emitter object, attaching listeners, emitting events, and add an extra layer of function calls [17:46] creationix: no, it's not a huge performance cost, but why not add a few extra lines in the boiler plate and support both methods out of the box [17:46] mape: yeah, the one I had already uses markdown-js but not sure what the difference is to ronn [17:46] mape: ryah: There are some icky stuff you need to do though if you want the design they did to work [17:46] mape: since it isn't just the output from the markdown [17:46] mape: have the edit buttons and dividers and whatnot [17:47] mape: And did you talk to rob about my commits? Are they getting thrown out or is there something that can be used? [17:47] bradleymeck_: just trying to reconcile the having the object of data extraction existing in either a pass by ref (through callback) vs return. can implement either easily, but that is a pretty big difference in coding style for a single function [17:48] creationix: bradleymeck_: correct, it does make the boilerplate code a little longer. but mostly with "if (stream)" do this, but "if (callback)" do this [17:48] creationix: but my goal isn't to minimize the write-once boilerplace [17:49] creationix: I want it as easy and flexible to use from the point of view of the person using the compiler [17:49] bradleymeck_: im not worried about the implementation im worried about the far different uses for the developer of callback vs return [17:49] bradleymeck_: i can write up a complex boilerplate if needed but just want a single api of sorts [17:50] creationix: bradleymeck_: how is that a problem? (having two APIs) [17:50] creationix: just wondering, not arguing [17:51] sh1mmer has joined the channel [17:51] _announcer: Twitter: "reading, reading, reading. NodeJS, WebSockets, DBSlayer." [da] -- Trek Glowacki. http://twitter.com/trek/status/18371313956 [17:51] zapnap has joined the channel [17:52] jakehow has joined the channel [17:52] bradleymeck_: say a bug appears with a data provider and dev a and dev b work on a team.dev a reads dev b's code and it returns a stream while dev a uses callbacks almost always. the function signatures dont seem to match and this function appears to return a value, dev a decides this is most likely not an async data provider and goes on to look at other code for a possible bug. if we could make the return type always exist or the signature always the same id say [17:52] bradleymeck_: would be more ideal than both of those changing [17:53] bradleymeck_: ^ always fighting python on this point [17:53] creationix: bradleymeck_: well, this is meant to be a low level interface, the framework will likely wrap it into two different functions like node does with the fs.* APIs [17:54] creationix: internally node's process.binding('fs') stuff runs sync if there is no callback, but async if there is a callback [17:54] creationix: but externally they are fs.* and fs.*Sync [17:54] micheil: creationix: can I shoot you for the next error I get back from haml.js that just tells me "parse error" ? :P [17:55] creationix: micheil: :P [17:55] bradleymeck_: true, while i do think the convenience is nice, the changing of behavior and return value at once can be jarring while looking over things [17:55] micheil: man.. really considering moving this project to Jade., [17:55] creationix: micheil: go for it [17:56] micheil: heh. I would, but I'm not sure if I can justify the cost to the person paying me. [17:56] creationix: it's learned from a lot of the mistakes of haml-js and haml.js [17:56] tjholowaychuk: s/mistakes/lazyness/ [17:56] creationix: micheil: or convince tjholowaychuk to port jade's code back to haml.js [17:56] tjholowaychuk: kadfasdfSAFASDfs [17:56] tjholowaychuk: lol [17:56] mjr_ has joined the channel [17:56] tjholowaychuk: is how i feel about that [17:56] tjholowaychuk: it would probably be faster to just have a haml: true option lol [17:57] tjholowaychuk: vs maintaining two libs [17:57] micheil: creationix: yeah, I'm more inclined to ask tjholowaychuk to port Jade to the browser. [17:57] creationix: bradleymeck_: ideally, within a project devs will use one version or the other, but I see your concern [17:57] micheil: ie. replace the get/set stuff with like.. functions. [17:58] tilgovi has joined the channel [17:58] micheil: creationix: *bang!* [17:58] micheil: well, that didn't take long. [17:58] micheil: :P [17:58] bradleymeck_: python is riddled with "path of least surprise" and i cant write things like that have dual natures that can be accidentally invoked on either side (accidentally provide a 2nd arg,accidentally forget the 2nd arg and the behavior changes) [17:58] creationix: ACTION ducks [17:59] voodootikigod_ has joined the channel [17:59] bradleymeck_: but both are still valid [17:59] creationix: micheil: it takes a while for a bullet to cross the Pacific ;) [17:59] micheil: creationix: aye, but not this bullet :P [17:59] benburkert has joined the channel [18:00] micheil: I think it's error'ing because I'm quoting attributes as I would in js objects [18:00] creationix: micheil: probably [18:00] creationix: micheil: it also supports html style attribs [18:00] creationix: (name="foo" bar="baz") [18:00] paul____ has joined the channel [18:00] micheil: >_> [18:00] tjholowaychuk: attrs are a bitch [18:00] creationix: instead of {name:"foo", bar:"baz"} [18:01] tjholowaychuk: I think jade has most those bugs out though [18:01] bradleymeck_: anywho imma write up one returning streams, can argue more later [18:01] creationix: bradleymeck_: how should I go about exposing both functionalities [18:01] unomi has joined the channel [18:01] mitkok has joined the channel [18:01] creationix: bradleymeck_: I don't want to expose just streams, because most of the time it's the wrong interface [18:02] dmcquay has joined the channel [18:02] bradleymeck_: either always return a value that should be acted upon, or always use a callback. [18:02] kuya: creationix: are you there? [18:02] creationix: kuya: what's up [18:02] creationix: bradleymeck_: hmm [18:03] kuya: hi - it was me that reported the POST body/router problem earlier [18:03] mape: any good registrars for .io? [18:03] tjholowaychuk: kuya: ah! thanks for that man [18:03] tjholowaychuk: nasty nasty bug [18:03] kuya: creationix: would cookieDecoder suffer the same problem? [18:03] kuya: tjholowaychuk: :) [18:03] creationix: kuya: no, it's from the headers I think [18:03] kuya: tjholowaychuk: are you visionmedia? [18:03] creationix: but you need cookieDecoder before session [18:03] creationix: if using session [18:03] tjholowaychuk: kuya: yup [18:04] maushu has joined the channel [18:04] creationix: bradleymeck_: how about two api endpoints then? [18:04] bradleymeck_: that could be doable too [18:04] tjholowaychuk: kuya: but no cookies should be fine, it was because im a tool and added listeners that got lost in the wilderness [18:04] kuya: im only including cookieDecoder and not session yet and POST requests are not finishing so im guessing its the same... [18:04] creationix: bradleymeck_: I'm just not sure I want that explicitness required in the compiler module itself [18:04] tjholowaychuk: kuya: hmm.. ill look into that in a moment [18:05] tjholowaychuk: kuya: its not the end of the world if we remove that tick too though [18:05] tjholowaychuk: however all my tests pass just fine [18:06] creationix: tjholowaychuk: kuya: any middleware that calls next() after an async call of any kind needs to buffer body events and re-emit them to the next layer [18:06] creationix: it's one of the uglier parts of connect's design [18:06] tjholowaychuk: ya thats lame [18:06] tjholowaychuk: ill just remove it seeing as that would cause more overhead anyways lol [18:06] creationix: if http's stream allowed for pausing that buffered internally, then it would be much easier [18:07] creationix: I know ryah wanted someone to work on that, and I thought felixge was working on it [18:07] kuya: seems like early optimization gone wrong to me ;D [18:07] creationix: kuya: not an optimization, just a nasty race condition [18:07] tjholowaychuk: kuya: just removed it in HEAD [18:08] kuya: thanks guys [18:08] kuya: btw, is this the best place to ask connect questions? [18:08] creationix: kuya: sure [18:08] kuya: i got blank looks in #extjs :) [18:08] creationix: or via github [18:09] creationix: yeah, connect hasn't been announced to the ext community yet [18:09] creationix: just node for now [18:10] creationix: I'll probably hang out in #extjs once it's announced on the sencha.com [18:11] kuya: im liking connect - not too much stuff to get your head around [18:12] creationix: ok, so to make sure I understand everyone's input: tjholowaychuk says only do async templates if there is a valid use case for it, mape says to make sure it allows for early flushing to the browser, and bradleymeck_ says to not have magical return values depending on parameters. Did I understand everyone correctly? [18:12] creationix: kuya: good to hear [18:12] bradleymeck_: mmm if we just give a the signature function(function(err),stream) would that be more agreeable? have it buffer the stream which would just point straight to the template's response and could fill up some array buckets. no need for emitter registration and can still use an error callback. [18:12] mape: creationix: yup [18:12] bradleymeck_: got my side down [18:12] tjholowaychuk: creationix: sounds about right to me [18:13] jxson has joined the channel [18:14] creationix: bradleymeck_: interesting [18:14] phiggins has joined the channel [18:14] creationix: function compile(template) -> function(locals, function (err, output) | stream) ? [18:15] creationix: where you pass in a callback or a stream? [18:16] bradleymeck_: mmmm acceptable i think [18:16] creationix: bradleymeck_: works for me [18:16] bradleymeck_: k will work on jade impl of that later tonight [18:16] creationix: and then you can reuse existing streams too [18:16] creationix: bradleymeck_: what about the compiler having currying built-in? [18:16] creationix: is that too magical? [18:17] bradleymeck_: thats fine just dont want mixing return vs callback [18:17] creationix: function compile(template, locals, callback | stream) [18:17] bradleymeck_: seams fine [18:17] creationix: awesome, thanks! [18:18] Validatorian has joined the channel [18:18] tjholowaychuk: ACTION feels sad when writing the tests for a lib is harder than the lib itself lol [18:19] creationix: tjholowaychuk: yeah, that why most companies don't write tests [18:19] tjholowaychuk: :D [18:19] creationix: but they pay for it in the long-term with support issues [18:19] tjholowaychuk: hell ya [18:19] jsilver: does anyone care about my javascript to coffeescript converter [18:19] tjholowaychuk: its tough to keep up with issues even with good coverage [18:19] jsilver: http://gist.github.com/472426 [18:19] creationix: I used to work at a place where 90% of our 5-person dev team did nothing but fix bugs and respond to support requests [18:19] tjholowaychuk: yikes [18:20] creationix: jsilver: cool, have you shown jashkenas? [18:20] CIA-76: node: 03Adam Wiggins 07master * rc8dba94 10/ doc/api.markdown : docs for dgram module (UDP and unix sockets) - http://bit.ly/csD877 [18:20] jsilver: i dont think so [18:20] jsilver: thanks yo [18:20] jsilver: tho* [18:21] _announcer: Twitter: "ServerSide JavaScript with #MooTools and #NodeJS - http://bit.ly/aYEvFK [via: davidwalsh.name]" -- Stylesheet. http://twitter.com/stylesheet/status/18373065839 [18:21] jsilver: i'll gist the code [18:22] jsilver: it's in JS lol [18:22] aubergine has joined the channel [18:22] jsilver: http://gist.github.com/472851 [18:23] jsilver: it tries to be recursive [18:23] jsilver: it also know if you using an array of [1, 2, 3] or [1, 2, "happy", null] [18:23] jsilver: or [1, 2 [1, 2]] [18:24] jsilver: just tries to walk each node in the AST and it's children if any [18:24] mattly has joined the channel [18:26] ryah: pgriess: ping [18:26] pgriess: ryah: pong [18:26] jsilver: i was having a JS sesh last night [18:27] ryah: pgriess: [18:27] ryah: - if ((err = getpwnam_r(*pwnam, &pwd, getbuf, sizeof(getbuf), &pwdp)) || [18:27] ryah: + if ((err = getpwnam_r(*pwnam, &pwd, getbuf, ARRAY_SIZE(getbuf), &pwdp)) || [18:27] ryah: sigh... [18:27] pgriess: ryah ;) [18:27] pgriess: yeah [18:27] jxson_ has joined the channel [18:28] ryah: pgriess: i assume #define ARRAY_SIZE(x) sizeof(x)/sizeof(x[0]) [18:28] pgriess: ryah: yeah. its in node.h [18:28] ryah: ah [18:28] ryah: okay [18:31] creationix: bradleymeck_: oh, one more part on my proposed template API [18:31] bradleymeck_: mmm? [18:31] creationix: if you put stuff into the "helper" property of the module, it gets mixed into the local scope of all template calls [18:31] creationix: I use locals.__proto__ = module.exports.helpers in my sample code [18:32] creationix: that way a framework can put stuff like "partial" in as a helper after requiring a compiler module [18:32] bradleymeck_: ill look into it, not too sure on it without digging into source [18:33] creationix: I should probably document my proposed API somewhere clearly [18:34] bradleymeck_: if you do email it to me [18:34] creationix: ok, sure thing [18:35] brianleroux_ has joined the channel [18:38] rictic has joined the channel [18:38] aglemann has joined the channel [18:46] brianleroux_: q for the masses: best lib for interacting w/ couchdb? [18:46] aho has joined the channel [18:46] _announcer: Twitter: "@ Paulo_caelum only a few games with NodeJS nothing "production level". The API is to show those who come from Java." [pt] -- jeffersongirao. http://twitter.com/jeffersongirao/status/18374495649 [18:47] teemow has joined the channel [18:47] ryah: pgriess: so i don't want to expose ARRAY_SIZE [18:48] pgriess: ryah: fine by me [18:48] mklappstuhl has joined the channel [18:48] jxson has joined the channel [18:53] aglemann has left the channel [18:54] teemow has joined the channel [18:54] tjholowaychuk has left the channel [18:56] voodootikigod_ has joined the channel [18:57] brianmario: ryah: this is definitely the wrong channel for this, but was wondering if you could commit a gemspec to the geoip-city project? [18:57] mklappstuhl has joined the channel [18:57] ryah: brianmario: if you send me a patch for it :) [18:58] ryah: ACTION doesn't remember the gemspec format [18:58] brianmario: ah ok [18:58] technoweenie: rrrruby! [18:58] brianmario: was actually gonna look at switching it to jeweler [18:58] brianmario: I forked, and am pushing some 1.9 changes in c [18:58] brianmario: one fix, and gonna add string encoding awareness [18:58] technoweenie: if you just want to ship something, mojombo/rakegem [18:58] ryah: also, isn't there a better geoip thing? [18:58] brianmario: dunno, we're using yours [18:58] ryah: huh okay [18:59] brianmario: is there? [18:59] ryah: donno [18:59] brianmario: oh ok [18:59] brianmario: technoweenie: yeah, easier the better [19:01] ryah: brianmario: btw i work across the street from you [19:01] brianmario: from our new office? [19:01] ryah: yeah [19:01] brianmario: haha nice [19:01] brianmario: still trying to find all the food spots down here [19:01] brianmario: there's quite a few, but they're $$$ [19:01] technoweenie: where's your new office [19:01] ryah: not a good food spot [19:02] ryah: technoweenie: 345 california st [19:02] ryah: er that's joyent [19:02] brianmario: we're on 310 battery [19:03] brianmario: oh yeah, tmm1 was saying joyent was in that building across from us [19:03] brianmario: didn't realize you worked there [19:03] technoweenie: ah cool [19:04] brianmario: technoweenie: when are you moving down here? ;) [19:04] ehaas has joined the channel [19:04] gb|work: hi there, what's a good config for node.js prod machine [19:04] technoweenie: i'm here now at the github office [19:04] JimBastard: technoweenie: github was down the other day for a few minutes, i hate you [19:04] JimBastard: :-D [19:05] joemccann has joined the channel [19:05] joemccann: yo [19:05] JimBastard: ACTION hopes that joke was obvious enough [19:05] Shorrockin has joined the channel [19:05] joemccann: anyone have a link to Ryan's slides from his talk at Cologne coworking a couple weeks ago? [19:05] gb|work: what machines are people using for node in prod? [19:06] gb|work: what is it that's more important? cpus, memory, hd space? [19:06] ehaas has joined the channel [19:07] ryah: joemccann: last week? [19:07] ryah: joemccann: http://nodejs.org/web_workers_camp.pdf [19:07] ben_alman has joined the channel [19:08] technoweenie: JimBastard: yea [19:08] technoweenie: gb|work: depends what you're doing. if your app is cpu intensive, get something with a better cpu [19:08] gb|work: technoweenie: i have a tons and tons of simple inserts into mongodb [19:08] creationix: gb|work: I've never hit a problem with any of those on any server [19:09] gb|work: that's the whole app [19:09] gb|work: but DB is going to be running somewhere else [19:09] technoweenie: well, you'll need lots of ram and space for mongo [19:09] mikeal has joined the channel [19:09] creationix: gb|work: I'd say CPU and drive speed if as long as you have enough ram and hd [19:09] gb|work: right, mongo is going to be on a separate beefy machine. what about node only [19:10] JimBastard: hey technoweenie is there a defacto rails plugin or gem or whatever for doing roles management [19:10] technoweenie: JimBastard: no [19:10] JimBastard: word [19:10] creationix: gb|work: node is so efficient that it's hard to say [19:10] JimBastard: i came up with this idea last night, i think its money [19:10] _announcer: Twitter: "ServerSide JavaScript with MooTools and NodeJS (автор: David Walsh) — http://davidwalsh.name/mootools-nodejs" -- MooTools. http://twitter.com/MooTools_UA/status/18375806692 [19:10] JimBastard: im gonna go fuck off and work on that now [19:10] technoweenie: JimBastard: if it deals with roles its probably not :) [19:10] tav_ has joined the channel [19:10] JimBastard: technoweenie: hee hee, roles is hard if you dont know how to do them [19:11] JimBastard: im going for a fresh approach [19:11] JimBastard: more javascripty! [19:11] ollie has joined the channel [19:12] brianleroux_: anyone here have a couch lib they can reccomend? (or not) [19:12] gb|work: so what would the rough spec for machines would be, 8Gb, gimme the #s [19:12] mikeal: brianleroux_: node-couchdb is well supported [19:12] technoweenie: how much ram does your app take [19:13] mikeal: but i mostly just use request [19:13] creationix: gb|work: 256mb is a good start [19:13] mikeal: just a raw http library because i know the HTTP api already [19:13] creationix: depends on how much you keep in ram [19:13] mikeal: http://github.com/mikeal/node-utils/tree/master/request [19:13] gb|work: technoweenie: there is no state, so theoretically none. we just want to make sure the server is fast and stable [19:13] mikeal: http://github.com/fdmanana/node-couchdb [19:13] brianleroux_: mikeal: perfect thx mang [19:13] creationix: gb|work: the base linode works great [19:14] technoweenie: gb|work: well then you wont need much at all. 256MB is a good start [19:14] gb|work: also, i'd appreciate some input into bootstrap for node.js, where can i store my app config [19:14] joemccann: ryah: thx [19:14] gb|work: technoweenie/creationix: what about cpu? do i need quad core for it? [19:15] creationix: gb|work: node only uses one core at a time for in-process stuff [19:15] creationix: the I/O under the hood uses threads though [19:15] creationix: gb|work: a single core is plenty for most stuff, depends entierly on your load [19:15] gb|work: so 2Gb + 2 quad core should do right? [19:15] gb|work: the load is going to be mad [19:15] JimBastard: brianleroux_: yeah cradle [19:15] mscdex: maushu: i already filed an issue about it [19:15] creationix: gb|work: yeah, that can handle a beating [19:16] TheEnd2012 has joined the channel [19:16] gb|work: i think we'll be getting about 200-300 req/sec [19:16] JimBastard: brianleroux_: http://github.com/cloudhead/cradle [19:16] gb|work: for sure [19:16] creationix: gb|work: a single node instance can usually handle 10k reqs/sec in plain hello-world benchmarks [19:16] joemccann: brianleroux: http://github.com/felixge/node-couchdb/ [19:16] gb|work: creationix: you are making my day :) [19:16] creationix: and with 4 node processes on the same port I've seen over 35k reqs/sec on a qued-core xeon [19:17] joemccann: i used that and was talking to my couchio store in less than 5 mins [19:17] brianleroux_: cradle and node-couchdb ...that should keep me entertained for the next few hours [19:17] brianleroux_: joemccann: nice! I see you're all over this shit now eh! [19:17] JimBastard: brianleroux_: do you want to quickly persist data or do you want to use the couch api [19:17] creationix: gb|work: but those are simple hello-world demos, they aren't doing any real work [19:17] joemccann: like a fly on shit [19:17] joemccann: ACTION bot a mac [19:17] JimBastard: brianleroux_: cradle is more high level [19:18] gb|work: creationix: we have one simple DB insert, so we should be good [19:18] joemccann: remember when we were trying to get it setup at my house? [19:18] joemccann: on windows? [19:18] joemccann: fucking nightmare [19:18] brianleroux_: JimBastard: mostly I'm just fucking around in an airport lounge ...no real goals / just researchin [19:18] gb|work: creationix: any input into how to store app config with node? [19:18] JimBastard: brianleroux_: cradle is also the couch engine inside http://github.com/cloudhead/resourcer [19:18] joemccann: so much easier on the mac [19:18] JimBastard: resourcer is where its at [19:18] gb|work: should i store it all in json? [19:18] brianleroux_: joemccann: you got a mac! [19:18] creationix: gb|work: yeah, just make sure to use buffers for any responses over a couple hundred bytes [19:18] JimBastard: brianleroux_: check out http://github.com/cloudhead/resourcer if you want to play.....i expect a lot from that library..... [19:18] creationix: or it will eat cpu [19:18] gb|work: creationix: k [19:18] joemccann: joemccann: yeah and told the folks at frog design i needed one as well [19:18] joemccann: done [19:19] TS- has joined the channel [19:19] brianleroux_: oooh, resourcer is interesting [19:19] creationix: gb|work: in testing a single process with large (1mb) bodies, I was able to get about 11 gigabits/sec on localhost on my I7 laptop [19:19] tjholowaychuk has joined the channel [19:19] creationix: (using buffers of course) [19:19] Shorrockin has left the channel [19:19] brianleroux_: "object relational mapper for document databases" ...uh, thats interesting. Solving a problem the db does not have! [19:20] JimBastard: yeah, brianleroux_ we are actively working on it with cloudhead. check out http://github.com/cloudhead/ in general. if you take resourcer + journey + vows you've got some of the big pieces for something...... [19:20] creationix: gb|work: there are no standards on app config yet, connect has some [19:20] JimBastard: brianleroux_: misnomer, there is a problem [19:20] brianleroux_: JimBastard: yes, I liked the first release of vows. found it a bit tricky to figure out how to mock data tho. Very interesting stuff. [19:20] JimBastard: not all document databases have common APIs [19:20] pavan_ has joined the channel [19:21] brianleroux_: JimBastard: oh I know, I'm being a dick, relational is a bit of a typo tho [19:21] kriszyp: ORM for doc databases is kind of an oxymoron [19:21] JimBastard: totally, you should yell at cloudhead , im sure he'd love the input [19:21] JimBastard: yeah i guess OHM ? [19:21] JimBastard: object hash mapper? [19:22] brianleroux_: Object Document Mapper [19:22] JimBastard: that makes sense [19:22] JimBastard: a ODM [19:22] kriszyp: brianleroux_: have you looked at perstore? it is much further along, I think [19:22] JimBastard: or O-DAMN for short [19:22] brianleroux_: fuck ya! I want a credit when you guys make it famous [19:22] brianleroux_: O DAMN! [19:22] joemccann: lol [19:23] Egbert9e9 has joined the channel [19:23] Egbert9e9 has left the channel [19:23] brianleroux_: kriszyp: checkin it out nao [19:23] davidwalsh has joined the channel [19:24] JimBastard: kriszyp: no couch support? http://github.com/kriszyp/perstore/tree/master/engines/node/lib/store-engine/ [19:24] kriszyp: already have adapters for mongo, redis, in-memory, simple json files, and almost couch [19:24] brianleroux_: Now I need a new battery. Shit I haven't writ a LOC in a month. [19:24] kriszyp: JimBastard: I think the couch one is almost finished [19:24] brianleroux_: kriszyp: I dig the api [19:24] kriszyp: deanlandolt was working on that one [19:24] JimBastard: kriszyp: no memory store? no flat file store? [19:24] kriszyp: yeah, I really like using the HTML5 db api [19:25] kriszyp: JimBastard: yes, those are both in there [19:25] JimBastard: looking again [19:25] kriszyp: they just are "engine" specific [19:25] kriszyp: aren't [19:25] kriszyp: http://github.com/kriszyp/perstore/tree/master/lib/store/ [19:26] kriszyp: (much of those are store wrappers for adding functionality) [19:26] mikeal: creationix: what is grain? [19:26] creationix: mikeal: it's something I started a long time ago [19:26] mikeal: kriszyp: i'm curious how you map the transactions from IndexedDatabase generically [19:26] creationix: basically a interface for template language compiler modules to follow [19:26] brianleroux_: JimBastard: Journey is really nice [19:27] mikeal: DONT STOP BELIVEIN' [19:27] JimBastard: yeah brianleroux_ im using journey for a REST api right now [19:27] JimBastard: our whole approach is like, fuck templating html on the server [19:27] JimBastard: its JSON up and down bitches [19:27] creationix: mikeal: just updated the README with some examples [19:27] JimBastard: we template on the client like what [19:27] kriszyp: mikeal, I have only really been trying to reuse the object store API, haven't been using the indexeddb api for transactions as much [19:27] kriszyp: although there is some cross-over [19:27] brianleroux_: JimBastard: thats how it will be in the future [19:27] JimBastard: aye [19:27] mikeal: creationix: so, basically it's a library to write templating systems in that can handle iterative compiling and sending to the stream once the ordered parts are finished? [19:27] brianleroux_: shit, I sound drunk [19:28] kriszyp: brianleroux_: and then if you want a REST front-end for the perstore stores, you can slap on pintura [19:28] mikeal: i see [19:28] creationix: mikeal: not sure if it will be a library on it's own yet [19:28] brianleroux_: but seriously, single page apps remove all need for serverside templating ceremony and routes [19:28] brianleroux_: I dig it [19:28] creationix: but I do have some nice boilerplate code that compiler can use to make streaming easy [19:28] mikeal: that's the important bit [19:28] mikeal: and one of the harder parts to implement generally [19:28] brianleroux_: phonegap + resourcer ... this will be fun [19:29] creationix: mikeal: did you see the gist? [19:29] _announcer: Twitter: "Cool. NodeJobs.com is featured on KillerStartups.com #nodejs http://bit.ly/db0ssq" --  Terry Martin. http://twitter.com/tzmartin/status/18376818645 [19:29] brianleroux_: krizzyp: been meaning to take pintura for a spin for ages now [19:29] mikeal: creationix: nope [19:29] aubergine has joined the channel [19:30] creationix: mikeal: http://gist.github.com/468889 [19:30] creationix: the generated code in in the output.txt [19:30] creationix: notice the small section that's not boilerplate [19:30] JimBastard: brianleroux_: let me know if you have any resourcer issues, we are working on it pretty actively this month [19:30] riottaba has joined the channel [19:31] gb|work: do we need 32-bit or 64-bit for node? [19:31] creationix: gb|work: either, 32 will probably use less ram, but both seem quite fast [19:31] gb|work: thx [19:31] creationix: gb|work: it depends on how much the v8 guys have done JIT for each [19:32] KungFuHamster has joined the channel [19:33] _announcer: Twitter: "July Meetup Details Announced for @AustinJS http://bit.ly/95gz8f #nodejs #scripty2 #prototype" -- Joe McCann. http://twitter.com/joemccann/status/18377076486 [19:33] _announcer: Twitter: "Hmz, there are "no" complete memcache solutions yet for #node.js? They only support set / get and incr / decr" -- Arnout Kazemier. http://twitter.com/3rdEden/status/18377089295 [19:34] brianleroux_: anyone here have any thoughts on: http://groups.google.com/group/nodejs/browse_thread/thread/827215b2ca8daca2 [19:34] brianleroux_: outside of the python wanking [19:34] V1 has joined the channel [19:34] creationix: bradleymeck_: so what's your goal [19:34] bradleymeck_: wha? [19:35] creationix: err, brianleroux_ [19:35] creationix: sorry bradleymeck_ [19:35] creationix: brianleroux_: I think I initially misunderstood what you were asking [19:36] brianleroux_: creationix: i liked your solution at any rate [19:36] creationix: brianleroux_: I figure it's not that bad since require itself only has a single global namespace [19:36] creationix: you can't require('foo') and then later require('foo') and expect a different foo [19:36] brianleroux_: but I have a big-ish API I want to expose and I know if I do it that way ppl will shit on me, my code and perhaps even call out my race, sexuality, etc [19:37] creationix: yeah, my autoloader solves a different problem [19:37] creationix: brianleroux_: but using global is a nice way to dump stuff in the global scope [19:37] creationix: express does it for better or worse [19:38] creationix: since it's a sinatra clone [19:38] creationix: and that's how sinatra does it [19:38] brianleroux_: agree on global and the use of eval. at any rate, having a closure style api loader would be hella useful [19:38] brianleroux_: totally, thats how ruby "just works" <--ironic quotes intentional [19:38] creationix: brianleroux_: lol [19:38] creationix: I wish "with" wasn't so dang slow [19:38] creationix: it's really useful for this kind of stuff [19:39] brianleroux_: yeah, that didn't surprise me that much actually [19:39] creationix: with (require('mylib')) { do stuff } [19:39] brianleroux_: I have a mini version using Script working [19:39] brianleroux_: but its somewhat hacky and feels like I'm circumventing require [19:39] brianleroux_: because I am LOL [19:40] Validatorian: anybody familiar with express-auth? I'm trying to make a web-based login form in express, and I'm completely lost [19:41] creationix: brianleroux_: I got nothing against going around require [19:41] creationix: how about eval(fs.readFileSync('somefile.js')) [19:41] creationix: probably a simplified version of what you're doing with Script [19:42] brianleroux_: creationix: yup [19:42] brianleroux_: the nice thing about Script is that the context is controlled [19:43] creationix: yeah, I need to learn that lib someday [19:43] brianleroux_: its actually quite nice [19:43] creationix: I'm still using the deprecated process.evalcx [19:43] creationix: I think it's based on the same implementation, just a new api [19:43] brianleroux_: it is [19:43] brianleroux_: a little more sugary [19:44] maushu has joined the channel [19:45] tjholowaychuk: crazy, when did this become exports [19:45] tjholowaychuk: used to be global [19:47] brianleroux_: any you guys gonna be at OSCON? [19:48] JimBastard: just jsconf.eu for me [19:48] _announcer: Twitter: "Looking for relatively cheap hosting, no special needs (although node.js support would be cool). Any recommendations?" -- Andrée Hansson. http://twitter.com/peolanha/status/18377869128 [19:48] brianleroux_: JimBastard: sweet, I'll be there too [19:48] JimBastard: yeah, i think we met briefly at jsconf [19:48] JimBastard: << marak [19:48] tjholowaychuk: ACTION never gets out to confs (im lame) [19:48] JimBastard: i stumbled into your mobile workshop not knowing you were suppose to pay for it [19:49] creationix: sadly about the only way I get to a conference is by being a speaker (then I'm kinda committed) [19:50] brianleroux_: tjholowaychuck: you're in Vic tho right? You should come kick it in Van for a for couple of nights and present at VanJS [19:50] _announcer: Twitter: "NodeJobs.com - Where NodeJS Opportunities Are Listed: NodeJobs is an online resource where NodeJS opportunities ar... http://bit.ly/cZwJof" -- TechRSS. http://twitter.com/TechRSS/status/18377992550 [19:50] brianleroux_: Oh snap! Jim I remember you! [19:51] JimBastard: :p [19:51] JimBastard: check me out on github sometime, i caus drama [19:51] brianleroux_: Marak that is ;P [19:51] JimBastard: http://github.com/marak [19:51] tjholowaychuk: brianleroux_: yup im in vic. vanjs? nice lol vicjs would be like.. 2 people [19:51] tjholowaychuk: would be cool though [19:51] hpoydar has joined the channel [19:51] tjholowaychuk: i suck at presenting im a terrible speaker ive done a few conferences though [19:51] tjholowaychuk: mostly its just other people talking about my stuff [19:52] brianleroux_: tjholowaychuck: its super easy going at vanjs. 1/2 hour talk. then beer time. sometimes we have two speakers but it never goes more than an hour before the beers get cracked. Super casual. [19:52] brianleroux_: whats ur email? [19:52] brianleroux_: and/or shoot me a reminder email: brian [at] nitobi.com ...we'll see what we can hook up [19:52] Shorrockin has joined the channel [19:53] tjholowaychuk: brianleroux_: my personal one is tj@vision-media.ca [19:53] brianleroux_: ferry + hotel for a night ....likely many beers after. totally good times. tough acts to follow tho! our last two speakers were resig and david flannigan [19:54] tjholowaychuk: nice lol [19:54] creationix: brianleroux_: I didn't know you were from up there. I'll bet you hated the heat at txjs [19:54] tjholowaychuk: resig's php sucks ass [19:54] brianleroux_: creationix: you in vic too?! [19:54] creationix: no, just moved to the bay area [19:54] creationix: I was in Dallas [19:55] cce has joined the channel [19:55] brianleroux_: ah! [19:55] brianleroux_: yeah, its weird but the heat really agrees with me [19:55] brianleroux_: likely due to a lifetime of rain [19:55] creationix: nice [19:56] creationix: I like the heat usually, but it's a bit oppressive in Texas sometimes. I'm loving this summer in Palo Alto [19:56] bradleymeck_: ACTION *summons isaacs* [19:56] brianleroux_: Yeah, that shit was hawt [19:56] Rik` has joined the channel [19:56] bradleymeck_: blashpemy texas heat is love [19:56] dgathright: anyone in/near LA? I'm organizing a SoCal.js event later this month and looking for someone to talk SSJS. [19:56] creationix: dgathright: how long a drive is that? about 8 hours? [19:57] _announcer: Twitter: "The nodejs page just popped up in my chrome new tab page. Huh." -- canuckistani. http://twitter.com/canuckistani/status/18378346908 [19:57] creationix: I used to live in OC years ago before heading back to Texas [19:57] dgathright: creationix: from where? [19:57] y has joined the channel [19:57] creationix: from SF [19:58] dgathright: Google maps says 6 hours [19:58] creationix: dgathright: hmm, almost tempting [19:58] JimBastard: !tweet @canuckistani 3:58 p.m. eastern time. node.js becomes self aware. [19:59] JimBastard: that ought to scare him [19:59] dgathright: It's not a TXJS-like full day event or anything (yet), just the local JS meetup group we're trying to get off the ground. Link if anyone is interested. http://www.meetup.com/socaljs/calendar/14079161/ [20:00] brianleroux_: dgathright: do you have a socaljs twitter account? (I'm tring to capture all of them in a list) [20:00] creationix: ACTION wishes he could visit all the local js user groups, time to write a time machine in node.js [20:00] dgathright: no, some jackass already has @socaljs. Will probably just go with socal_js. [20:01] stepheneb has joined the channel [20:01] brianleroux_: dgathright: reg that shit nao! [20:02] dgathright: k, registered. http://twitter.com/socal_js [20:02] brianleroux_: damn, the internet is fast [20:03] creationix: dgathright: hah, I'm the first follower ;) [20:03] stepheneb has joined the channel [20:04] creationix: has anyone tried to use socket.io with connect? [20:05] bradleymeck_: was looking into it this morning [20:06] bradleymeck_: socket.io and websocket streaming requires a datastore to be used effectively and needs to have its own port which is a bit clunky [20:07] keeto has joined the channel [20:07] creationix: hmm [20:07] creationix: I know node-websocket can attach to an existing http server [20:07] creationix: but I want to be able to use the socket.io abstraction with all the fallbacks [20:07] bradleymeck_: http://github.com/miksago/node-websocket-server? [20:08] creationix: yeah [20:08] tjholowaychuk: i remember people using it with express [20:08] tjholowaychuk: i think [20:08] Validatorian: is connect a replacement for express (or can it be used as one)? [20:08] _announcer: Twitter: "I know kung-fu! At least it feels like. Made a simple geochat app with #nodejs, #expressjs, #coffeescript and #mongodb: http://bit.ly/cmW19O" -- Alexey Kuleshov. http://twitter.com/kulesa/status/18378996202 [20:08] creationix: Validatorian: it can do most anything express does [20:09] tjholowaychuk: Validatorian: not a replacement but its an abstraction layer that removes some stuff that express did not need to handle on its own [20:09] jesusabdullah: Hah! That *is* kinda cool [20:09] tjholowaychuk: Validatorian: express 1.0 is coming soon, and built on connect [20:09] Validatorian: ah, nice [20:10] _announcer: Twitter: "@peolanha heroku is testing node.js support. it does not work well for static sites but it may be what you're looking for." -- cohitre!. http://twitter.com/cohitre/status/18379080151 [20:10] mscdex: heroku runs 0.1.92 [20:10] mscdex: :s [20:11] bradleymeck_: i thought they said they would run latest stable :/ oh wells [20:11] jbrantly has joined the channel [20:12] mscdex: i found that out earlier when one of their beta testers was in here unable to get node_chat working on it [20:12] bradleymeck_: !tweet @kulesa, very nice. interesting use of locality [20:12] creationix: mscdex: still 0.1.92? [20:12] mscdex: creationix: that's what he said [20:13] mscdex: he checked process.version [20:13] creationix: mscdex: yep, you're right, I just checked [20:13] JimBastard: wow i think borked that chat demo hardcore [20:13] creationix: they promised to update over a week ago [20:13] Validatorian: tjholowaychuk: any idea on the ETA for express 1.0? [20:14] creationix: kiils my binary images http://sousaball.heroku.com/ [20:14] tjholowaychuk: Validatorian: end of the week hopefully, working on some Connect bugs though [20:14] mscdex: creationix: guess they think there's enough breaking changes to not upgrade *shrugs* [20:14] mscdex: for now anyway [20:14] creationix: mscdex: I just don't think node support is a high priority [20:14] JimBastard: http://letscome.ru:3000/chat [20:15] JimBastard: yeah, oops [20:15] JimBastard: i accidentiallied the demo [20:15] creationix: killed it [20:15] JimBastard: well, i guess he didnt build it right [20:16] JimBastard: scott's node chat demo can take some serious abuse [20:16] JimBastard: we try to kill it for fun [20:16] _announcer: Twitter: "ServerSide JavaScript with MooTools and NodeJS: This blog post is intended to provide a… http://goo.gl/fb/CPpYU" -- Paolo Spot Valzania. http://twitter.com/spottino/status/18379412853 [20:16] JimBastard: !tweet @kulesa hey sorry i think i accidentallied your demo, my bad [20:17] MrTopf has joined the channel [20:18] Validatorian: anyone know of any performance differences between antinode and varnish for static-file serving? [20:19] Validatorian: or do I have the wrong idea? [20:19] micheil: varnish isn't a file server? [20:19] creationix: brianleroux_: thinking about your mixin problem, how about export a "mixin(prefix)" function and when called it dumps it's modules on global with the optional prefix [20:19] mscdex: antinode is more environmentally friendly? [20:19] micheil: it's just a cache [20:19] mscdex: :P [20:19] JimBastard: Validatorian: i use antinode as the primary static http server for nodejitsu [20:19] micheil: night cahps. [20:19] JimBastard: its been holding up very well [20:19] creationix: micheil: g'night [20:19] JimBastard: we patched a few bugs last month too, its been very stable for me [20:19] Validatorian: would it be beneficial to run varnish with antinode? [20:19] JimBastard: ummm [20:19] JimBastard: i have no idea [20:20] JimBastard: i would go antinode first and see what you get [20:20] JimBastard: antinode caches [20:20] brianleroux_: creationix: mid way through prototyping something up w/ Script --- will send when I land sometime tmrw [20:20] JimBastard: to my understanding [20:20] Validatorian: will do [20:20] khug has joined the channel [20:20] _announcer: Twitter: "Where's the best place to get started writing web-apps in Node.js? What're the best frameworks?" -- Ben Smith. http://twitter.com/thesmith/status/18379641004 [20:20] jakehow has joined the channel [20:21] CIA-76: node: 03Peter Griess 07master * r4e3c5d8 10/ (src/node.cc src/node_net.cc): Coverity fixes: src/node.cc - http://bit.ly/9wNbS0 [20:21] CIA-76: node: 03Peter Griess 07master * r792c7ca 10/ (src/node_crypto.cc src/node_crypto.h): Coverity fixes: src/node_crypto - http://bit.ly/cNUZc9 [20:21] CIA-76: node: 03Peter Griess 07master * r760fb17 10/ src/node_file.cc : Coverity fixes: src/node_file - http://bit.ly/ckmWXW [20:21] paul__ has joined the channel [20:21] CIA-76: node: 03Peter Griess 07master * r6eb0b6a 10/ src/node_net.cc : Coverity fixes: src/node_net - http://bit.ly/du8TrF [20:21] CIA-76: node: 03Peter Griess 07master * r7a706e4 10/ src/platform_linux.cc : Coverity fixes: src/platform_linux.cc - http://bit.ly/cBuKXz [20:21] kersny has joined the channel [20:21] creationix: !tweet @thesmith There are several, one it http://extjs.github.com/Connect/ [20:21] JimBastard: !tweet @thesmith start at the nodejs modules page, then maybe come to the irc room. the framework game is still very young [20:21] JimBastard: :-D [20:21] creationix: wonder if I still have voice [20:22] creationix: yep, typo and all [20:22] bradleymeck_: tweet is public now [20:22] creationix: bradleymeck_: that could be fun [20:22] JimBastard: lolwut [20:22] JimBastard: anyone can tweet? [20:23] bradleymeck_: for now [20:23] tmpvar: !tweet @tmpvar i like men [20:24] JimBastard: o.O [20:25] _announcer: Twitter: "#KillerStartups NodeJobs.com - Where NodeJS Opportunities Are Listed: NodeJobs is an online resource where NodeJS ... http://bit.ly/cSGNMs" -- Rocket IT Support. http://twitter.com/rocketitsupport/status/18379904772 [20:25] mklappst1hl has joined the channel [20:25] creationix: that node jobs site sure is getting attention [20:25] creationix: of only there were more postings [20:26] Validatorian: I could add a few more jobs to that list [20:26] bradleymeck_: right as you say that a new one is posted [20:26] Validatorian: if people will work for free... [20:26] bradleymeck_: only if i get to have copyright then [20:28] creationix: JimBastard: someone should make a social game using my game engine from sousaball [20:28] creationix: that would be awesome! [20:28] JimBastard: creationix: :-\ [20:28] JimBastard: game development :\ [20:28] JimBastard: its really hard to focus on getting a game out there [20:28] JimBastard: id love to be part of that though [20:28] JimBastard: ill definitely keep my ears open [20:28] gb|work: do i need to include JSON in order to use JSON.parse? [20:28] bradleymeck_: nope [20:28] creationix: gb|work: nope [20:29] creationix: it's part of JS [20:30] V1: When you create a a buffer in node, does it allocate the amount of memory you set the buffer. Or does use more memory when you write to it? [20:30] JimBastard: !tweet @kulesa come on into #node.js on irc.freenode.net , lots of node.js people here [20:30] saikat has joined the channel [20:31] mjr_: V1: fixed size at creation time. [20:31] CIA-76: node: 03Ryan Dahl 07eventsource * rc0f3c41 10/ (5 files): EventSource nextTick handling - http://bit.ly/aUyxaE [20:31] V1: mjr_: Thanks [20:31] ryah: ^-- for those interested there is a new branch implmenting hard emitter [20:31] ryah: not quite done yet [20:32] davidwalsh has joined the channel [20:32] ryah: - [20:32] BrianTheCoder has joined the channel [20:32] ryah: http://github.com/ry/node/tree/eventsource [20:32] davidwalsh has joined the channel [20:32] beelzabub1: what's hard emitter? [20:33] ryah: you can test it with this: http://gist.github.com/473016 [20:34] ryah: beelzabub1: http://thread.gmane.org/gmane.comp.lang.javascript.v8.general/2699/focus=8065 [20:36] _announcer: Twitter: "Ronn ported to js: http://github.com/kapouer/ronnjs Runs on node. Right on." -- Ryan Tomayko. http://twitter.com/rtomayko/status/18380500857 [20:37] benbinary has joined the channel [20:37] beelzabub1: ryah: didn't look at the implementation yet. it seems like there's quite a bit of memory overhead for creating a hard emitter [20:38] beelzabub1: oh - noticed the notion of having a flag for it :D [20:38] beelzabub1: nm [20:39] ryah: yeah, there's no flag yet [20:39] ryah: still just playing around [20:39] beelzabub1: yeah i understand [20:39] ryah: proof of concept is all atm [20:40] benbinary has joined the channel [20:43] SvenDowideit has joined the channel [20:44] rauchg_ has joined the channel [20:44] captain_morgan has joined the channel [20:45] V1: Am I the only one here who thinks the API docs are AWFULL to read? Maybe my eyes are fck'd but theres hardly any visual difference between headings, examples and actual content [20:45] DTrejo__ has joined the channel [20:45] DTrejo__: hello [20:45] creationix: V1: RE: memory allocation, I did notice that my OS didn't register the memory as allocated till I tried to access the newly created buffer [20:46] ryah: V1: hm - we're redoing it soon [20:47] pquerna: i want to split the version variable into major, minor, patch. [20:47] V1: creationix: thanks for the heads up. I'm thinking of using the buffer for memcached responses to write the data to, as memcached responses can go up to a max of ~1MB. But that would mean if you where to use memcached module you would be using atleast 1MB for the buffer. [20:47] creationix: pquerna: how about an object with three properties, but toStrings to the original string [20:47] DTrejo__: I'd like the binary for libxmljs, and I can't build it myself because cygwin lacks 'scons' Does anyone know where I might find the binary? [20:48] V1: ryah: Great, I'm using a custom stylesheet atm to make it more readable ;P [20:48] DTrejo__: libxmljs link: http://libxmljs.squishtech.com/ [20:48] pquerna: creationix: well, yeah, more in the #defines inside node_version.h [20:48] ryah: pquerna: i'd rather major, minor, build, patch [20:49] pquerna: i'll start with just adding all that stuff to node_version.h.in :) [20:49] ryah: pquerna: i'd like to redo node_Version.h too [20:49] DTrejo__: anyone know of a working xml rpc library that does not require scons to build? [20:50] ryah: pquerna: if you're interested [20:50] ryah: it's not very good right now [20:50] pquerna: yeah, i'll do it now [20:50] saikat has joined the channel [20:50] ryah: pquerna: deps/v8/src/version.cc [20:50] ryah: ^-- i like it [20:50] gb|work: i'm doing fs.readFileSync http://pastie.org/1041528, and want to do JSON.parse on it, but for some reason get an error w/no details [20:50] gb|work: should i use require to load my json config structure? [20:50] pquerna: yep [20:51] gb|work: : is it for me? [20:51] pquerna: for me? [20:51] ryah: we need node::internal namespace too [20:51] ryah: but that can be done later [20:51] gb|work: i see you said 'yep', didn't know if you answered my question [20:51] mscdex: gb|work: what is the error? [20:52] DTrejo__: mscdex is super helpful :) [20:52] gb|work: mscdex: the array points to JSON.parse, but doesn't say anything else [20:52] khug has joined the channel [20:52] rauchg__ has joined the channel [20:53] gb|work: what's the right way to load json file? should i use require or load the file using fs? [20:53] mscdex: load the file [20:53] mscdex: require is for js, not json [20:53] gb|work: this is the error [20:53] gb|work: http://pastie.org/1041540 [20:53] gb|work: yah, i want to load json hash [20:53] mscdex: 1 sec [20:54] bradleymeck_: JSON.parse is very strict, be careful what you give it [20:54] mscdex: yeah [20:55] JimBastard: yeah it sucks, you cant have comments inside JSON.parse [20:55] JimBastard: that really blows [20:55] JimBastard: forces you to not have comments, strip them out, or use eval [20:55] creationix: gb|work: hmm, something seems missing [20:55] creationix: gb|work: but that should work assuming no JSON syntax errors [20:55] bradleymeck_: god bless and damn eval [20:55] creationix: it's easier to just export some js [20:56] JimBastard: yeah, that too [20:56] creationix: module.exports = {some: "foo", bar: false} [20:56] pquerna: JimBastard: yeah, i was thinking of making a binding to libjsox to fix that specific problem :( [20:56] creationix: then you can use JS instead of JSON [20:56] pquerna: (and to do streaming json parsing, which you can't easily do today) [20:56] gb|work: creationix: json is valid [20:57] JimBastard: pquerna: streaming json parsing seems like it would be kinda useful [20:57] creationix: gb|work: not sure, try module.exports and using require [20:57] JimBastard: pquerna: im not sure if that was solved with node-dirty or not [20:57] creationix: it will give better error reporting [20:57] JimBastard: i think not [20:57] bradleymeck_: we honestly just need to make a parser generator [20:58] inimino: bradleymeck_ ⋱ I have one I'm planning to add Buffer support to in the near future [20:58] inimino: (and UTF-8) [20:58] JimBastard: heehahaha [20:58] creationix: ryah = parser generator, see http://github.com/ry/http-parser for sample output [20:59] JimBastard: i was about to say, parser generator, someone call inimino [20:59] mscdex: oh i found out why it was bombing [20:59] pquerna: yes, libjsox uses a lemon parser to do json in a streaming way, kinda like SAX for xml. [20:59] bradleymeck_: i have a parser gen i always put on back burner, its nice though, combines regexes in order to preserve operations instead of everything being atomic... but recursive decent is kinda slow [21:00] gb|work: creationix: how do i actually use what i'm exporting? [21:00] mscdex: gb|work: readFileSync returns a buffer, you need to add .toString() to the result [21:00] gb|work: if my json is exports.config [21:00] creationix: gb|work: with require [21:00] creationix: module.exports = {some json}; in the config file [21:00] gb|work: so should i assign it to the value? and then JSON.parse? [21:00] creationix: and then var config = require('./config') [21:00] inimino: bradleymeck_ ⋱ combines regexes? [21:00] creationix: no need for json parse if it's a module [21:01] mscdex: gb|work: do: sys.puts(sys.inspect(fs.readFileSync('foo.json').toString())); [21:01] creationix: mscdex: but JSON.parse(fs.readFileSync('foo.json')) should work too [21:01] mscdex: no [21:01] mscdex: why should JSON.parse know about Buffer? [21:01] creationix: ahh, good point [21:01] gb|work: creationix: got it, thx [21:02] stepheneb has joined the channel [21:02] creationix: (I should know, I'm the one that made readFileSync emit buffers by default) [21:02] mscdex: hehe [21:02] V1: JimBastard: You can always use JSON.minify ( http://github.com/getify/JSON.minify ) to remove the comments from your JSON before you parse it :) [21:02] creationix: mscdex: but for cases where I'm just reading config into an app, I prefer using exports and require over eval + readFile [21:02] mscdex: true [21:02] JimBastard: thanks V1 [21:03] JimBastard: might be better then eval() >>><<<< [21:03] creationix: remember JSON is a data format, not a file format [21:03] creationix: sure it can be stored in a file, but it's not code [21:03] bradleymeck_: /html/ joins w/ /body/ into /(html)|(body)/ , that gets exec'ed and the groupings let me determine what callback to fire off, on small examples it is slower on large enough examples it is faster [21:04] inimino: bradleymeck_ ⋱ ah, I see [21:04] creationix: bradleymeck_: faster huh? [21:04] pandark_ has joined the channel [21:04] inimino: depending on use case ^.^ [21:05] bradleymeck_: indeed, it is faster if you can iron it out to avoid atomic matches [21:05] joshbuddy has joined the channel [21:06] bradleymeck_: things like lookaround are just as slow, the array allocation is also a hit since it is a sparse array [21:08] creationix: I'm writing a simple template language as an example of the grain interface [21:08] creationix: I'm thinking just @var and @fn(param1, param2) as the only variable parts [21:08] creationix: though conditionals and loops would be nice [21:08] bradleymeck_: i have a working copy of the interface almost in my grain lib, it just doesnt do template parsing [21:08] bradleymeck_: thats from a bit ago though [21:08] bmizerany has joined the channel [21:09] creationix: bradleymeck_: nice [21:09] creationix: what's a good super-simple syntax for conditionals and loops? [21:09] bradleymeck_: diff api, but you could prolly just use it as a back, going to be a bit odder to put into jade [21:09] bradleymeck_: mustache.js? [21:10] bradleymeck_: {#enumerable|conditional} [21:10] creationix: yeah, that's pretty simple [21:10] tjholowaychuk has joined the channel [21:10] rtomayko has joined the channel [21:11] rtomayko has joined the channel [21:11] creationix: ohh, I didn't know mustache had higher-order sections [21:11] creationix: but I'm looking for something even simpler, I just might leave off loops and conditionals for now [21:12] creationix: they complicate things [21:12] creationix: you could always do some loops with a "partials" helper [21:13] tjholowaychuk: creationix: ya I dont find myself using partials without collections at all [21:13] tjholowaychuk: not sure about anyone else [21:13] tjholowaychuk: well nvm [21:13] tjholowaychuk: scratch that yes i do [21:13] tjholowaychuk: but something implied like that is more view-like [21:14] bradleymeck_: creationix for a grain interface are you guarranteed a "end" event even after and "error" [21:14] technoweenie: is it safe for a function to reference itself [21:14] technoweenie: wait, fuck, i can just use this. nvm [21:14] creationix: bradleymeck_: no [21:14] creationix: bradleymeck_: unless streams require that [21:14] mscdex: lol [21:14] creationix: I though everything stopped after an error [21:14] technoweenie: i'm messing with one off event listeners that remove themselves after they're used once [21:15] bradleymeck_: streams might idk [21:15] creationix: technoweenie: as long as it's always called with the same context "this" is safe [21:15] creationix: technoweenie: there is also arguments.callee or something like that [21:15] bradleymeck_: named funcs are the way to go for refering to self [21:15] technoweenie: var foo = function() { ... obj.removeListener('yay', this) [21:16] WALoeIII has joined the channel [21:16] technoweenie: i had 'foo' in there and that worked too, but i just realized how weird that looked [21:16] tjholowaychuk: ya its arguments.callee [21:16] creationix: technoweenie: yeah, I think all event emitter functions are called with the same "this" context [21:16] bradleymeck_: function foo() {obj.removeListener(foo)} [21:16] technoweenie: doesnt removeListener need the type arg [21:16] technoweenie: type/event, whatever its called [21:17] tjholowaychuk: technoweenie: yuppers [21:17] bradleymeck_: i was just forgetting to add that... too much going on in head [21:18] JimBastard: technoweenie: you got a good name for a roles library? i was thinking "role model" but thats too easy. right now the working title is "roles.js" but thats a bit vanilla [21:19] blaines has joined the channel [21:19] CIA-76: node: 03Ryan Dahl 07master * rd700a6f 10/ lib/child_process.js : Return child from execFile - http://bit.ly/aGcHHe [21:19] bradleymeck_: mmm roles... [21:20] bradleymeck_: lol Name Rank and Assignment [21:20] tjholowaychuk: NRA - national rifle association [21:20] tjholowaychuk: lol [21:20] tjholowaychuk: there you go [21:21] bradleymeck_: talents? [21:21] jesusabdullah: ACTION got a lifetime membership to the NRA from his godfather as a graduation present [21:22] jesusabdullah: :) [21:22] jesusabdullah: whoa [21:22] tjholowaychuk: bugs bugs bugs [21:22] jesusabdullah: technoweenie: the github technoweenie? [21:22] jesusabdullah: croissant roles? [21:23] _announcer: Twitter: "Trying (and failing) to install Node.js #ihateterminal" -- stompfrog. http://twitter.com/stompfrog/status/18383059981 [21:23] jesusabdullah: wah wah wahhhhh [21:23] pquerna: ryah: http://github.com/pquerna/node/commit/f41f70f1d6d09908d7d64e71ba1033fc4e5d3bc8 [21:23] JimBastard: !tweet @stompfrog how can you fail? its three lines? [21:23] _announcer: Twitter: "All memcached clients for node.js are basically crap. No hashing, no multi get/set, compression, support binary, timeouts and list goes on" -- Arnout Kazemier. http://twitter.com/3rdEden/status/18383081037 [21:24] CIA-76: node: 03Brian 07master * r554b02a 10/ doc/api.markdown : [21:24] CIA-76: node: Improve docs [21:24] CIA-76: node: Added default values for many parameters, missing properties and methods, [21:24] CIA-76: node: and slight reorganization of the Child Process section. - http://bit.ly/9hqhI9 [21:24] JimBastard: !tweet @3rdEden so build your own? [21:24] tjholowaychuk: !tweet @3rdEden check out redis-node-client [21:24] bradleymeck_: ah twitter is no longer safe from irc [21:25] JimBastard: V1: is that you? [21:25] teemow has joined the channel [21:25] V1: Yes thats me [21:25] JimBastard: aye, :-) [21:25] ryah: pquerna: what about not generating src/node_version.h and instead just having the version only be defined in src/node_version.h ? [21:25] JimBastard: its full circle [21:25] kloeri has joined the channel [21:25] mklappstuhl has joined the channel [21:26] V1: And yes, i'm gonna work on a full memcached library. As i really need multi server support. Memcache on one "node" is just plain pointless [21:26] pquerna: ryah: yes, can do that, just most of the time you'll end up writing code that does the reverse (ie, to read the version form wscript/scons) [21:26] khug has joined the channel [21:26] pquerna: ryah: and its harder to get things like the git hash, if you wanted that [21:26] ryah: do people even like the git hash thing? [21:26] JimBastard: V1: sounds exciting [21:26] pquerna: i'm kinda meh on it [21:26] pquerna: IS_DEV tells you enough most of the time [21:27] ryah: i'm also meh on it [21:27] ryah: i mean it's okay [21:27] pquerna: you just want to know if they used a release tag [21:27] pquerna: or something else [21:27] V1: JimBastard: Would be a fun project :) [21:27] pquerna: at least when it comes to debugging user questions [21:27] beelzabub1: you could use git tatg [21:27] beelzabub1: *git tag [21:27] beelzabub1: find the last git tag in the history [21:28] beelzabub1: if it's also the version that's being built, then use the tag name [21:28] ryah: currently the version is defined by two things: the wscript file and the git tag (if the build dir doesn't contain a .git ) [21:28] beelzabub1: otherwise, use -modified [21:28] jsilver: mosty people are doing their assignments like this right? [21:28] ryah: % ./node -v [21:28] ryah: v0.1.100-20-g2bbd70f [21:28] jsilver: var fs = require("fs")'; [21:28] jsilver: my parser reads the variable name as "var fs " [21:29] jsilver: it likes this more: fs=require("fs"); [21:29] ryah: pquerna: i'm just trying to think where wscript needs to know the version - i guess to build the dist... [21:29] ryah: well not really as long as the git tag is set... [21:29] bradleymeck_: whats wrong with var? [21:32] jsilver: the PEG.js parser just thinks that it's part of the Variable token's name [21:32] jsilver: which is not true it's a keyword [21:32] jsilver: I'm gonna sidestep this probably by using String comparison to see if they did do that. [21:32] pquerna: ryah: yeah, other problem with this one currently, is the 'debug' define is variant based upon your current compiler flags [21:32] bradleymeck_: where is the grammar? i can take a looksee [21:33] jsilver: yes [21:33] jsilver: you know pegjs? [21:33] rgl has joined the channel [21:33] pquerna: (which for a 3rd party building node, it means the string changes depending on their own clfags, which is what sucks) [21:33] c4milo: where can I find the nodejs licencse ? [21:33] bradleymeck_: i can learn it fast, seems like std parser gen [21:33] pquerna: *build a node module. [21:34] pquerna: c4milo: http://github.com/ry/node/blob/master/LICENSE [21:34] jsilver: bradleymeck_: if you want i can send yuou my source code [21:34] jsilver: it contains all of the grammar and stuff you need [21:34] pquerna: c4milo: node itself is mit-style; Some dependencies are different. [21:34] ryah: pquerna: i don't think that needs to be in the version necessarally, the debug thing [21:34] c4milo: pquerna: thank you [21:34] bradleymeck_: can you gist it or want it private? [21:34] jsilver: or i can send you to PEGjs proper [21:34] jsilver: i think i want it kind of private right now but I can gist the whole code [21:34] ryah: c4milo: it's all MIT or BSD (modulo openssl) [21:34] jsilver: and you can generate the other dependencies [21:35] jsilver: they are javascript.pegjs and the parser.js it compiles [21:35] Validatorian has joined the channel [21:35] jsilver: ill gist the code in a PM to you [21:36] _announcer: Twitter: "ServerSide JavaScript with MooTools and NodeJS: This blog post is intended to provide a starting point fo... http://bit.ly/bkIeRD @cssglobe" -- Tony Mack. http://twitter.com/TonyMackGD/status/18383765731 [21:37] pquerna: ryah: welp, i can make a mailing list thread, I'm indifferent to generated or not, I just want the end result... so... tell me what you want [21:37] pgriess: creationix/tjholowaychuk: any suggestions for writing a middleware for rendering custom 404/500/etc pages? [21:37] tjholowaychuk: pgriess: what were you wondering about? [21:38] c4milo: ryah: ok [21:40] pgriess: tjholowaychuk: i'd like all 400/500/etc errors to get rendered specially (e.g. using a company-approved template); i'd like to support this w/o giving app developers a special api if possible [21:40] pgriess: tjholowaychuk: similar to apache's ErrorDocument directive [21:41] V1: Node has no hashing library right? [21:41] tjholowaychuk: pgriess: if your callback has an arity of 4 the first arg becomes the exception [21:41] pgriess: tjholowaychuk: (e.g. any app can respond with 404 and any message and it'll get rendered using some common, good looking site-wide 404 handler) [21:41] pgriess: tjholowaychuk: so app developers would have to know to throw a special 404Exception() to get this behavior? [21:42] tjholowaychuk: pgriess: currently express has no notion of a 404 specifically [21:42] khug has joined the channel [21:42] tjholowaychuk: pgriess: you could proxy writeHead() I guess but thats kinda lame [21:42] tjholowaychuk: nvm not really i guess [21:43] mscdex: V1: what do you mean? [21:43] bradleymeck_: nvm makes me confuse abbreviations with version management [21:43] softdrink has joined the channel [21:43] pgriess: tjholowaychuk: that's an interesting idea, but yeah not ideal [21:43] mscdex: V1: the crypto module can create hashes [21:43] tjholowaychuk: pgriess: the general idiom as far as connect goes (for me at least) with 404s is to just keep next()ing [21:43] V1: mscdex: Like hashrings / consistent hashing [21:43] tjholowaychuk: pgriess: you can pass exceptions to next() and your custom handler *could* utilize some special exception constructor [21:43] pquerna: V1: it exposes some openssl primatives for common hashes [21:44] V1: Thanks for the headsup [21:44] tjholowaychuk: pgriess: hell if you wanted you could even proxy next() and have next(404) or something [21:45] pgriess: tjholowaychuk: yeah, true [21:45] Blackguard has joined the channel [21:45] pgriess: tjholowaychuk: as nasty as it sounds, i think i like proxying writeHead() :# [21:46] tjholowaychuk: pgriess: not sure what would work best for you, I need that in express 1.0 so ill let you know how that goes. just trying to keep the more framework-ish stuff out of connect [21:46] pgriess: tjholowaychuk: interesting. are other frameworks building on top of connect. i had forgotten that its aim was not to be a framework [21:47] tjholowaychuk: pgriess: not sure, I think geddy is / was going to, express will shortly [21:47] mikeal has joined the channel [21:47] mikeal: mjr_: heya [21:47] mikeal: i'm all done over here [21:48] mjr_: mikeal: come on over if you like. I'll be working for a bit, but you can hang out here, somewhere. [21:48] mikeal: cool [21:48] mikeal: what's the address again? [21:48] mjr_: see pm [21:48] mikeal: ok [21:49] tjholowaychuk: whats this! my girlfriend might finally have a job YESSsssSSSSSS [21:50] tjholowaychuk: party timee [21:51] bradleymeck_: :D [21:52] tjholowaychuk: 8 months of hell lol paying for gf / 15 year old dog / 4 disease prone ferrets omg [21:52] mitkok has joined the channel [21:53] maushu: Hmmm. [21:53] maushu: Wondering if making a dashboard based websockets is such a good idea. [21:55] Validatorian has joined the channel [21:56] mscdex: maushu: i need a good name for my node module. it's a minimalist comet server [21:57] maushu: mscdex, Halley. [21:57] mscdex: hmm [21:57] jesusabdullah: Hale-bopp! [21:57] jesusabdullah: Levy-Shoemaker [21:57] jesusabdullah: ! [21:57] mscdex: :S [21:58] jesusabdullah: Oh, I guess that would be a bit, umm [21:58] maushu: mscdex, you can even tell your fans that the next version will come after 76 years. [21:58] jesusabdullah: bad luck? [21:58] bradleymeck_: 409, because the world isnt ready for 4010 [21:58] jesusabdullah: *rimshot* [21:58] mscdex: i was initially going to use 'transporter', but that's used [21:58] _announcer: Twitter: "@codemonkeyism Here it is in node.js - http://www.subbu.org/blog/2010/07/bigpipe-done-in-node-js" -- Subbu Allamaraju. http://twitter.com/sallamar/status/18385060466 [21:59] maushu: Seriously, should I use websockets in a control panel? Or is that overkill? [21:59] maushu: The advantage would be that when the server receives something (user server down, console debugging, etc) it would be real time. [21:59] mscdex: Halley is already used too :( [22:00] mscdex: and it's actually a node.js module ha [22:00] jesusabdullah: Aww :( [22:00] bradleymeck_: Why is it always space, why cant it be something like undertow [22:00] jesusabdullah: Try Levy-Shoemaker then >:D [22:01] mscdex: the thing is the server will accept plain tcp connections too in addition to "comet requests" [22:01] mscdex: so i'm not sure if it should use a comet-like name or not [22:01] pkrumins: ditch the 'comet' [22:02] Dmitry1 has joined the channel [22:02] jesusabdullah: asteroid? [22:02] pkrumins: shittiest term for a technique ever. [22:02] jesusabdullah: Or maybe TNO [22:02] mikeal has joined the channel [22:02] jesusabdullah: What does comet mean, anyways? :S [22:03] bradleymeck_: its a pun on ajax being a household cleaner [22:03] jesusabdullah: Oh [22:03] jesusabdullah: Cute [22:03] jesusabdullah: In that case [22:04] jesusabdullah: countertop_magic [22:04] jesusabdullah: YES [22:05] bradleymeck_: shamwowza? [22:07] hsoj_ has joined the channel [22:07] mscdex: :S [22:07] satori has joined the channel [22:08] jesusabdullah: denatured :) Like denatured alcohol. Cleans stuff real good. It's awesome! Plus, "denatured" on its own, out of context, sounds almost daemonic. [22:10] hsoj_: hello all, is there any way to differentiate between files and directories with fs.readdir? [22:11] rauchg_: call rm and see if parse the response with /is a directory/ [22:11] rauchg_: j/k [22:12] hsoj_: lol. that'd work fine if the files were not mine ;) [22:12] dgathright has joined the channel [22:12] _announcer: Twitter: "#html ServerSide JavaScript with MooTools and NodeJS http://bit.ly/cQSQo4 #xhtml #css #css3" -- soshableweb. http://twitter.com/soshableweb/status/18385942081 [22:12] bradleymeck_: ooo carbonation would be nice name for something [22:12] mscdex: hsoj_: not without doing fs.stat [22:14] hsoj_: mscdex, thanks [22:15] tjholowaychuk: rauchg_: writing up those express migration docs [22:15] jsilver: yayy [22:15] jsilver: i fixed another bug in my parser [22:15] rauchg_: tjholowaychuk: sweet! [22:15] jsilver: this: 'thing', not this : 'thing' [22:15] jsilver: "var" handling fixed [22:15] jsilver: it's tossed [22:15] jsilver: and extra spaces [22:15] jsilver: :) [22:16] TS_ has joined the channel [22:16] JimBastard has joined the channel [22:17] mscdex: i think i finally came up with a name i'm going to use [22:17] topfunky has joined the channel [22:17] creationix: I hate this error "ReferenceError: module is not defined" [22:17] creationix: how can a node global not be defined [22:17] bradleymeck_: if a require emulator doesnt give it to you [22:18] tjholowaychuk: creationix: its not global [22:18] creationix: global enough, I shouldn't be getting reference errors [22:19] jsilver: is anyone as pumped as me about my CoffeeScript converter?!?!?! [22:19] tjholowaychuk: are you accessing it in a template or something? [22:19] jsilver: :D [22:19] jsilver: wooow! [22:19] jsilver: ACTION goes and gets a real cup of coffee [22:20] creationix: tjholowaychuk: I'm accessing it via new Function (aka eval) [22:20] creationix: but it worked earlier today, not sure what changed [22:20] creationix: other than the string now comes from another module [22:21] V1: Pfff, I need more hours in a day o_o its 12:20 AM and i won't stop untill i got my HashRing completed / fall asleep [22:21] bradleymeck_: think of module and exports as being var module,exports at the top of any module [22:21] tjholowaychuk: creationix: you have to pass it, Function('module', ...).call(module) [22:21] tjholowaychuk: whoops [22:21] tjholowaychuk: call(whatever, module) [22:22] richcollins has joined the channel [22:24] creationix: tjholowaychuk: yeah, I guess that would work, not sure why it worked for me earlier today. [22:24] tjholowaychuk: creationix: if you were testing stuff in the same file it probably worked fine [22:24] tjholowaychuk: since it doesnt enclose the vars [22:25] creationix: I had new Function('locals', 'module.exports') and it found module [22:25] bradleymeck_: new Function will get all the variables from its current scope [22:26] creationix: tjholowaychuk: hmm, actually how does call help, that just controls "this" [22:26] creationix: bradleymeck_: correct, and "module" should always be in the current scope of a module [22:26] tjholowaychuk: creationix: for example in jade, the exports.render() function encloses attrs() and some other helpers, but the generated function doesnt, so I can pass them in as args [22:27] tjholowaychuk: creationix: but if you dont have a method that is going to wrap the generated func [22:27] tjholowaychuk: your kinda fucked I think [22:27] bradleymeck_: unless masked or a with statement surrounds it [22:27] tjholowaychuk: you could probably eval a anon function or something [22:27] bradleymeck_: if i had a concrete example id know what is wrong better [22:28] tjholowaychuk: ^-- not suggesting to actually do that [22:28] creationix: strange, eval works, but not new Function [22:29] bradleymeck_: take off the new [22:29] bradleymeck_: new is evil [22:29] bmizeran_ has joined the channel [22:29] mape: Time to get cracking [22:30] creationix: bradleymeck_: I thought "new" just changed the value of "this" to be a blank object that's instanceOf the function [22:30] creationix: shouldn't mess with lexical scope, right? [22:30] bradleymeck_: not exactly but for most cases yes, i remember something odd about new Function though from a couple years back [22:31] mklappstuhl has joined the channel [22:31] _announcer: Twitter: "Yeah! Almost done with my hash ring generator for node.js, consistent hashing, here we come :D" -- Arnout Kazemier. http://twitter.com/3rdEden/status/18387084664 [22:31] creationix: bradleymeck_: yeah, I could see Function being special [22:32] mattly has joined the channel [22:32] creationix: tjholowaychuk: bradleymeck_: https://gist.github.com/93f43489f0def2f9f3d3 [22:32] creationix: eval works, but it's sure ugly magic [22:32] mikeal: i don't understand why this is all so important [22:33] creationix: mikeal: which? [22:33] richcollins has joined the channel [22:33] mikeal: this whole mixin thing [22:33] creationix: mikeal: no clue, that's not what I'm discussing [22:33] mikeal: oh wait, that's not this discussion [22:33] mikeal: haha [22:33] mikeal: i was just reading the list thread about that [22:33] mikeal: and you were like "eval with context and blah" [22:33] mikeal: so i just assumed [22:34] creationix: well, you know what happens when you assume... [22:34] creationix: mikeal: no, I'm working on a helper lib for template languages [22:34] creationix: mikeal: https://gist.github.com/93f43489f0def2f9f3d3 [22:34] creationix: just added the base.js to the gist [22:34] SubStack: rauchg_: suggestion: require('socket.io/web').source() to make deployment easier [22:35] SubStack: it would return the client-side javascript [22:35] mikeal: i see [22:36] rauchg_: SubStack: this weekend im gonna work on some core improvements for socket.io [22:36] rauchg_: stay connected to the socket [22:36] rauchg_: [22:37] creationix: I have to eval it in the scope of the module so that when it references module it's the compiler, not base.js [22:37] SubStack: rauchg_: ? [22:37] tjholowaychuk: creationix: weird in spidermonkey you can pass a context to eval() as the second arg [22:37] creationix: rauchg_: has anyone tried socket.io with connect, I saw somewhere in the examples, it can attach to an existing http.Server instance [22:38] rauchg_: creationix: one of my weekend tasks [22:38] rauchg_: is come up with connect examples/middleware/whatevs [22:38] creationix: tjholowaychuk: spidermonkey does all sorts of strange things [22:38] gary_r has joined the channel [22:38] tjholowaychuk: haha [22:38] tjholowaychuk: yup [22:38] creationix: rauchg_: super! [22:38] bradleymeck_: odd [22:38] zack_ham: rauchg_: will those changes make it reconnect in the case where the node server goes away and comes back (rather than just the client timing out...) [22:38] bradleymeck_: tj that 2nd arg is deprecated and buggy :/ [22:38] rauchg_: zack_ham: the changes involve different disconnection handling [22:38] creationix: mikeal: if I'm still online on 20 minutes, remind me to head up to the City [22:38] Shorrockin has left the channel [22:39] tjholowaychuk: bradleymeck_: ah :) [22:39] rauchg_: creationix: i'm actually waiting on tjholowaychuk to connect connect with express to initiate my testing :D [22:39] rauchg_: connect connect connect [22:39] mikeal: creationix: hehe [22:39] tjholowaychuk: hahaha [22:40] creationix: rauchg_: don't wait on express, just use plain connect ;) [22:40] rauchg_: i know, the reason is that i'm using express heavily these days haha [22:40] rauchg_: and i have a ton of socket.io logic to test with connect [22:40] bradleymeck_: ruh roh i think i see the problem [22:41] rauchg_: i think i'm gonna build a poker client for node knockout [22:41] rauchg_: with connect + socket.io [22:41] rauchg_: but im not sure if i can pull it off in under 48hs [22:42] mape: Just make sure to think it through before you start [22:42] satori: Build it now as a module, put it on github, and then code ur app in ubder an hr? :P [22:42] satori: under [22:43] gb|work: what are the options to do balance the load for node cluster? [22:43] creationix: gb|work: usually you don't need a node cluster [22:44] satori: Any load balancing solution will work with node....or you can just use node to balance itself [22:44] creationix: gb|work, but one easy solution is to spawn off several child processes that share the same fd [22:44] creationix: then the OS will balance them for you [22:44] satori: ^ that is my fav way of doing things. Easy to do now too. [22:45] creationix: gb|work: if you export your http.Server instance as a module, then you can just do "connect -n 4" and it will spawn 4 child processes [22:45] creationix: (assuming connect is installed) [22:46] malkomalko has joined the channel [22:46] steadicat has joined the channel [22:47] _announcer: Twitter: "サーバサイドでmootools。これはモテる。 RT @ mootools: ServerSide #JavaScript with #MooTools and #NodeJS: http://davidwalsh.name/mootools-nodejs" -- Masakazu . http://twitter.com/studiomaestro/status/18388070193 [22:48] bradleymeck_: odd i cant get Function to ever reference non-argument variables it seems [22:48] joshbuddy has joined the channel [22:48] joshbuddy has joined the channel [22:49] tjholowaychuk: bradleymeck_: I dont think you can [22:49] bradleymeck_: bah i like eval better anyway [22:50] bradleymeck_: wait, i can still get the topmost context's globals like process... [22:51] tjholowaychuk: yeah it just does not enclose anything [22:51] _announcer: Twitter: "ServerSide #JavaScript with #MooTools and #NodeJS: http://davidwalsh.name/mootools-nodejs Don't miss this great post!" -- davidwalshblog. http://twitter.com/davidwalshblog/status/18388314236 [22:52] bradleymeck_: i cant get vars or any context below node.js (hence the module problem) [22:52] kevm_ has joined the channel [22:53] bradleymeck_: that is most likely a v8 bug given that it works on one context but not another [22:53] benburke_ has joined the channel [22:53] mikeal: creationix: has it been 20 minutes yet? [22:54] mikeal: how long does it take to ride up here on a scooter? [22:54] creationix: mikeal: not quite, but I should probably start walking home [22:54] creationix: mikeal: I'm reading http://blog.fupps.com/2010/05/10/update-notifications-in-couchdb-tweeting-urgent-documents/ [22:54] gb|work: creationix: interesting, same fd? what's fd? [22:54] creationix: gb|work: file descriptor [22:54] creationix: basically all child processes share the same external port [22:54] creationix: mikeal: resty is cool [22:54] mikeal: creationix: that is old [22:54] _announcer: Twitter: "Engineer-Engineer Tech Talk: Joyent's Ryan Dahl on Node.JS this Thursday in SF. http://is.gd/dpC5p" -- Digg. http://twitter.com/digg/status/18388508341 [22:55] mikeal: well, the external process is [22:55] mikeal: _changes is preferred [22:55] gb|work: creationx: interesting, thx, i'll look into it [22:55] mikeal: oh shit, this dude wrote up my node changes consume [22:55] tjholowaychuk: creationix: o ya we have a redis session store now [22:55] tjholowaychuk: didnt have much time to test it or anything though [22:55] creationix: tjholowaychuk: nice [22:55] gary_r has left the channel [22:57] hpoydar has joined the channel [22:58] mischief: mscdex, nobody answered my post on the mailing list x( [22:58] cloudhea1 has joined the channel [22:58] JimBastard: which one mischief [22:58] mischief: oh [22:58] mischief: about compiling on OpenBSD [22:58] JimBastard: ohh, sorry yeah mac os and ubuntu here :-\ [22:58] mischief: mscdex said he compiled node on OpenBSD 4.7 with g++ 4.2.4, the same compiler i have [22:59] mischief: and showed me the tarball he used.. it was the same as mine [22:59] JimBastard: perhaps you have a borked dependency ? [22:59] creationix: ACTION is heading out [22:59] mscdex: http://groups.google.com/group/nodejs/browse_thread/thread/fbdb6e20d45d4515 [22:59] gb|work: creationix: what's connect? [22:59] tjholowaychuk: gb|work: a middleware framework [23:00] satori: mischief: It's a v8 problem yeah? [23:00] tjholowaychuk: gb|work: for stuff like static file serving, cookie parsing etc [23:00] mischief: satori, i suppose [23:00] JimBastard: i need a good name for this library [23:00] JimBastard: i think im on to something here [23:00] mscdex: JimBastard: good luck with that, took me forever to come up with a name for mine [23:01] JimBastard: mscdex: ive got 201 more to go [23:01] mscdex: s/come up with/decide on [23:01] satori: mischief: i know little about waf, and less about scons, but the error seems to indicate a v8 compilation problem. Is there a v8 specific grp? [23:01] JimBastard: 300 OSS projects [23:01] JimBastard: raaaaar [23:01] freshtonic has joined the channel [23:01] mischief: satori, er, grp? [23:01] _announcer: Twitter: "Serverside javascript com # # # NodeJS and MooTools by @ davidwalshblog" [es] -- Joao Dubas. http://twitter.com/joaodubas/status/18388935586 [23:01] satori: group for v8 issues [23:02] bradleymeck_: i think you should make a talent tree ala diablo and just call it Talents [23:02] JimBastard: im debating going between acronym or mythical beast [23:02] JimBastard: you talking to me bradleymeck_ ? LOL? [23:02] mischief: oh.. i dont know :\. im curious what would happen if i compiled v8 as a stand-alone library [23:02] bradleymeck_: your roles lib, and funny business [23:02] gb|work: tjholowaychuk: / creationix: do we really need connect? we'd like to keep our distro lean. any way we can do w/o it? [23:02] ThePub has joined the channel [23:03] tjholowaychuk: gb|work: you can still use the middleware without it, but you loose some functionality in terms of async error handling etc [23:03] mscdex: ryah: any way to narrow down the cause of an error with mksnapshot when building v8? [23:03] JimBastard: ahahaha awesome [23:03] mischief: satori, seems like kind of a 'run-around' thing [23:03] tjholowaychuk: gb|work: and your "middleware" will be a big boomerang [23:03] JimBastard: im gonna work on the read me a bit more and see if it comes to me [23:03] bradleymeck_: each group and user gets a talent tree and viola you can have dependency based admin and can limit number of talents for a role etc in a fun way / example [23:03] JimBastard: yeah, but i also have groups with many to many inheritance [23:03] JimBastard: or something [23:04] gb|work: tjholowaychuk: boomerang? why [23:04] bradleymeck_: shouldnt affect the talent trees i would think [23:04] paul__ has joined the channel [23:04] mscdex: many to many = talent conference [23:04] JimBastard: i like the idea of a GUI though [23:04] mscdex: :P [23:04] JimBastard: let me get it working on paper first [23:04] mscdex: nobody uses paper anymore [23:04] satori: mischief: Yeah, but if it's a v8/BSD issue you may not get much traction here. [23:04] aurynn: I use paper all the time [23:04] JimBastard: paper = Readme.md [23:04] mscdex: epaper [23:05] JimBastard: aight good stuff, bbl [23:05] dgathright has joined the channel [23:05] bradleymeck_: later all~ [23:05] bradleymeck_ has left the channel [23:06] blaines has joined the channel [23:07] mscdex: i hope bradleymeck meant to close _utility [23:07] mscdex: heh [23:07] Determinist has joined the channel [23:08] satori: Does he run it? [23:08] mscdex: he's the author of it [23:08] satori: k [23:08] mscdex: not sure where the bot actually runs though [23:09] satori: nowhere atm :) [23:09] stepheneb has joined the channel [23:10] gb|work: creationix: getting error while installing connect!!!! ahh!! http://pastie.org/private/twntkclc5vgcvi5tzfhog [23:10] kloeri has joined the channel [23:11] gb|work: tjholowaychuk>: getting error while installing connect!!!! ahh!! http://pastie.org/private/twntkclc5vgcvi5tzfhog [23:11] tjholowaychuk: gb|work: shit, sorry ill fix that [23:11] tjholowaychuk: one sec [23:11] gb|work: thx :) [23:11] blaines has joined the channel [23:11] gb|work: ping me when it's checked in, thx for awesome work :) [23:11] tjholowaychuk: gb|work: done [23:11] gb|work: thx [23:13] blaines: how can I respond with jsonp in nodejs? (got disconnected) [23:13] blaines: how can I respond with jsonp in nodejs? (got disconnected) [23:14] TrisMcC_ has joined the channel [23:15] TrisMcC has left the channel [23:15] chrischris has joined the channel [23:15] blaines: jsonp :( [23:16] sechrist has joined the channel [23:16] satori: blaines: don't know much about that sry. [23:17] saikat has joined the channel [23:18] gb|work: tjholowaychuk: is there a log? i run connect -4, and nothing happens [23:18] gb|work: my app is called server.js [23:18] tjholowaychuk: gb|work: $ connect -n 4 [23:18] tjholowaychuk: or $ connect -v -n 4 [23:18] tjholowaychuk: to checkout verbose crap [23:18] blaines: where is the documentation for res.simpleJSON [23:19] Validatorian: does node depend on python? [23:19] blaines: I'm so confused about something so simple [23:19] satori: I don't really like the idea of jsonp much. Websockets are much more elegant. [23:19] blaines: it even says simple :( just want jsonp [23:20] gb|work: tjholowaychuk: what connect pass argv to the child process? my app is expecting argvs [23:20] mikeal: websockets don't hack around the same domain security policy [23:20] mikeal: jsonp does [23:20] mikeal: Validatorian: only the build script [23:20] franksalim: mikeal, websockets connect cross origin [23:20] satori: blaines: Surely you just need to handle your JSONP GET request and return a javascript to the client? [23:20] franksalim: so yes they do [23:20] chrischris has joined the channel [23:20] mikeal: they have rules [23:21] mikeal: like cross domain xhr does [23:21] franksalim: server decides who can connect [23:21] mikeal: jsonp doesn't [23:21] mikeal: and jsonp works in IE6 :) [23:21] mikeal: also, if you *just* want some json websockets is a bit much [23:22] mikeal: you could just use xhr, or cross domain xhr, and it would be easier than websockets [23:22] mikeal: you aren't pushing data the other way and you don't need a continuous connection [23:22] _announcer: Twitter: "Bay Area JavaScripters, meet the creator of Node.JS this Thursday! http://www.facebook.com/event.php?eid=106330769408119" -- Andrew Hedges. http://twitter.com/segdeha/status/18390254250 [23:22] mikeal: and that way you won't have to re-engineer chunked encoding if you don't know the size [23:24] mischief: satori, v8 builds fine. :( [23:24] franksalim: and you don't eval untrusted scripts in your context [23:24] satori: mischief: damn [23:24] franksalim: imho, websocket >> jsonp [23:24] mikeal: franksalim: if you just use xhr you don't have to eval, you can send the string to the native decoder [23:25] mikeal: just like you would with websocket [23:26] franksalim: yes, xhr2 is also better than cross origin script tags [23:26] technoweenie has joined the channel [23:26] mikeal: is there a plugin to get application/json added to the accept headers in chrome? [23:27] _announcer: Twitter: "I think node.js just broke my brain. Seriously... http://nodejs.org/#about" -- Chris Corcoran. http://twitter.com/chriscorcoran/status/18390536940 [23:27] _utility has joined the channel [23:27] technoweenie: ryah: hey did you see my patch about removing the slight mem leak when removing event listeners? i virtually signed the nda [23:27] technoweenie: the CLA rather [23:27] _frankie has joined the channel [23:28] ryah: technoweenie: no [23:28] technoweenie: ryah: http://groups.google.com/group/nodejs/browse_thread/thread/f99ae672fa46f4e5/bef4aa4250e12d14 [23:28] gb|work: : i get an error 'invalid application. must report a , ex: module.exports...' [23:28] technoweenie: guess i should prefix the subject with [PATCH] in the future [23:29] hassox has joined the channel [23:29] ryah: technoweenie: okay [23:29] technoweenie: im using event listeners as kind of an in-process pub/sub thing [23:29] BrianTheCoder has joined the channel [23:29] mmurz has joined the channel [23:29] _announcer: Twitter: "really cool multiuser sketchpad, built with node.js - http://bit.ly/c78bK9" -- Darren Hoyt. http://twitter.com/darrenhoyt/status/18390685051 [23:30] [[zz]] has joined the channel [23:31] mmurz: looks like theres a bunch of Node.js modules for databases - can anyone recommend a good dbms to use? Is Redis the fav? [23:31] mischief: satori, yea, all i did was grab the sauce out of SVN, install scons and run scons and it compiled perfect. :x [23:32] mischief: i cant understand why it doesnt build with node though [23:32] technoweenie: mmurz: if you just need a generic one, go with postgres or mysql [23:33] jakehow has joined the channel [23:33] satori: mischief: Any obvious diffs between standalone v8 buld and node's v8 build? [23:35] satori: mischief: Just a thought.... try using the standalone v8 as a shared lib? see if that works with node? [23:35] bradleymeck: mscdex yes, it was running on my work comp since it appears to have died the night before, was moving it over to home comp [23:35] mscdex: bradleymeck: ah [23:36] mischief: satori, i dont know if the scons build system will allow you to drop in a pre-build target [23:36] blaines: satori: yes [23:36] satori: I think node has a switch for using shared versions of deps [23:37] blaines: satori: yes - i just need to handle a jsonp request and return it to the client [23:38] satori: blaines: That is a matter of creating a node server to parse the GET request, and then return content of text/javascript type. Examples should get u started. [23:38] CIA-76: node: 03Jérémy Lal 07master * r4be4b5f 10/ tools/wafadmin/Tools/node_addon.py : lib/node, not lib/nodejs ! - http://bit.ly/9eEksy [23:38] CIA-76: node: 03Jérémy Lal 07master * rabd3f8a 10/ Makefile : make node.1 depend on make all - http://bit.ly/abnCN5 [23:38] CIA-76: node: 03rick 07master * rc9e5057 10/ lib/events.js : use delete for removing events after removing the final listener - http://bit.ly/btuITH [23:38] CIA-76: node: 03Peter Griess 07master * rac24042 10/ src/node.cc : Coverity stack size warnings in DefineConstants(). - http://bit.ly/9DSkNq [23:38] CIA-76: node: 03Peter Griess 07master * r99a5d1e 10/ src/node_crypto.cc : Free kbuf[] in Verify::VerifyFinal(). - http://bit.ly/aeSTP8 [23:38] mischief: ok satori it seems i naively built v8 the wrong way [23:38] mischief: i think scons snapshot=on library=shared mode=debug will work, and ill run the tests when its done [23:39] gb|work: any connect pros here? i'm having a problem with it [23:39] jsilver: hey guys [23:39] jsilver: i need more stuff to feed my parser [23:40] jsilver: look what my parseNode can generate now: http://gist.github.com/473226 [23:40] jsilver: :D [23:40] technoweenie: jsilver: is that js => coffee script [23:40] jsilver: ja [23:40] jsilver: :D [23:40] technoweenie: rad [23:40] jsilver: ^_^ [23:40] jsilver: ty [23:40] blaines: jsilver: nice - saw that last night too [23:41] jsilver: ty ty :) [23:41] beelzabub1: jsilver - what is that exactly? [23:41] jsilver: gonna try to give it sweet rules [23:41] beelzabub1: does it just minify the js [23:41] beelzabub1: ? [23:41] jsilver: no [23:41] jsilver: it turns it into coffeescript www.coffeescript.com [23:41] jsilver: for example, if you press "try coffeescript" on the site, you'll see it compile (hopefully) [23:42] malkomalko: why don't you take the examples from the coffeescript site jsilver ? [23:42] malkomalko: that's what I'd do [23:42] jsilver: :D [23:42] malkomalko: then verify that they turn into the coffeescript examples [23:42] jsilver: oh yeah malkomalko thanks for reminding me! i was sorta doing that [23:42] jsilver: im also going to try to implement some of the tricks [23:42] blaines: satori: I have a lot of res.simpleJSON in my code now, but I have no idea what simpleJSON is... [23:42] jsilver: like array comp [23:42] malkomalko: yah, not sure how you are thinking about doing that, but that might be fun [23:43] malkomalko: I like coffeescript :) [23:43] jsilver: to explain it though, it parses and creates an AST, and then begins a recursive function by calling "parseNode" on the root object [23:43] jsilver: after that it knows how to handle each node in the AST based on the type it came with [23:43] malkomalko: yah [23:43] jsilver: :D [23:44] jsilver: then it just indents whenever it enters and exits a scope [23:44] jsilver: and \n's when it's finished with a branch/statement/line [23:44] jsilver: (hopefully) [23:44] jsilver: lol [23:44] sechrist has joined the channel [23:45] blaines: does anyone know what simpleJSON is? [23:46] malkomalko: python json lib [23:46] blaines: malkomalko: in node? [23:47] mape: ryah: Nice, is digg using node? [23:47] mklappstuhl has joined the channel [23:47] mape: Or a talk at the offices? [23:47] ryah: mape: no [23:47] ryah: just a talk there [23:48] mape: Ah k, neat non the less [23:48] ryah: make [23:48] ryah: oops [23:49] blaines: malkomalko: i dont get it, python in node? [23:51] jsilver: okay guys [23:51] jsilver: i need things to feed my parser [23:51] jsilver: lol [23:51] jsilver: i guess i'll just come up with some stuff [23:51] jsilver: i know it doesnt have switch, for or while [23:51] jsilver: ill look at the site like u said malkomalko [23:51] jsilver: :) [23:51] bradleymeck: lazeroids [23:52] bradleymeck: thats coffeescript [23:52] jsilver: ? [23:52] jsilver: u trollin [23:52] jsilver: i should be by now [23:52] jsilver: ive been working on this since y esterday [23:52] jsilver: lol [23:52] jsilver: all night and shit [23:52] jsilver: i made parseNode last night [23:52] jsilver: i feel like I barely even know JS [23:52] bradleymeck: i troll while waiting on my gf ya [23:53] jsilver: but that doesnt sound perfectly logical [23:53] jsilver: how can I not know JS and make a parser generator [23:53] jsilver: :P [23:53] gb|work: creationix: u there? [23:53] jsilver: parser transformer* [23:53] jsilver: this is fun tho [23:53] jsilver: it stops on nodes it doesnt know [23:53] jsilver: im gonna fix the arg system tho [23:54] blaines: jsilver: i dunno I feel like I don't know js, can't even find documentation [23:54] jsilver: ya true [23:54] jsilver: w3schools [23:54] jsilver: chrome dev tools [23:54] blaines: ew [23:54] jsilver: node repl [23:54] blaines: no - for node js stuff [23:54] jsilver: theres just api.html [23:54] jsilver: i think [23:54] jsilver: right? [23:54] blaines: huh? [23:54] jsilver: i used talks to help me "get" it [23:55] blaines: oh - I get it - there's just no docs [23:55] jsilver: yea [23:55] jsilver: do u need the link? [23:55] jsilver: http://nodejs.org/api.html [23:55] jsilver: i used that too a little bit [23:55] jsilver: since I used readFileSync [23:55] olegp_ has joined the channel [23:56] blaines: loading... [23:57] blaines: bleh [23:57] mscdex: !api readfilesync [23:57] _api: mscdex: (File System) method: readFileSync(filename, [encoding]) -- Synchronous version of `fs.readFile`. Returns the contents of the `filename`. If `encoding` is specified then this function returns a string. Otherwise it returns a buffer. [ http://nodejs.org/api.html#fs-readfilesync-138 ] [23:57] mscdex: i need to update _api's markdown [23:57] mscdex: :S [23:58] blaines: jsilver: I've looked at that but it doesn't say what half the stuff I'm using do - like simpleJSON [23:59] mscdex: simpleJSON is not a part of node [23:59] mscdex: or v8