[00:00] SubStack: *d2 >_< [00:00] markwubben has joined the channel [00:00] jakehow has joined the channel [00:00] tjholowaychuk: i cant decide if i should laugh or kill myself [00:00] SubStack: yes, one of those [00:01] tjholowaychuk: i guess i already laughed [00:01] JimBastard: tjholowaychuk: thats usually what i think about things [00:01] Jezek: lol [00:01] JimBastard: http://en.wikipedia.org/wiki/Absurdism [00:02] JimBastard: Absurdism, therefore, is a philosophical school of thought stating that the efforts of humanity to find inherent meaning will ultimately fail (and hence are absurd), because no such meaning exists, at least in relation to the individual. As a philosophy, absurdism also explores the fundamental nature of the Absurd and how individuals, once becoming conscious of the Absurd, should react to it. [00:02] jesusabdullah: "The universe doesn't owe us meaning." --Richard Dawkins [00:05] mscdex: "node.js rules!" --me [00:05] SubStack: "You are not good enough for this universe. Potato." -- me [00:06] rauchg_ has joined the channel [00:06] SubStack: Now then, javascripts. [00:06] jesusabdullah: "Oh no what am I even doing I'm not very good at computers" -- me [00:06] mscdex: :S [00:06] SubStack: Javascript is illusory. [00:07] JimBastard: aight, next track is the node.js rap [00:07] aubergine has joined the channel [00:07] mscdex: ficky ficky [00:07] JimBastard: tjholowaychuk doesnt heckman do music? [00:07] jesusabdullah: He saves children but not the ruby children [00:07] SubStack: Obviously javascript couldn't have been designed because the design reflects an impossible madness that only mindless random processes could create. [00:07] JimBastard: i forget if he idles in here [00:07] tjholowaychuk: JimBastard: yeah, not sure what though [00:07] tjholowaychuk: I used to, drums, bass, etc [00:08] tjholowaychuk: but been a few years [00:08] JimBastard: got ya [00:08] JimBastard: i was thinking maybe do a community effort for the jam [00:08] JimBastard: i could drop acapella track and someone else fills in the beat [00:08] JimBastard: then get a bunch of footage from everyone to make the video [00:08] SubStack: work, but could be awesome [00:08] JimBastard: i can do all the heavy lifting [00:09] tjholowaychuk: haha I was part of a band's stop motion video like that [00:09] JimBastard: making a beat to acapella is easy [00:09] tjholowaychuk: it was interesting [00:09] MikhX has joined the channel [00:09] mscdex: node.js rap remix [00:09] mscdex: :D [00:09] JimBastard: upload it to github [00:09] JimBastard: yeah [00:09] jesusabdullah: I have a bass guitar, but I'm not very good [00:09] jesusabdullah: Also, no equipment otherwise [00:09] JimBastard: webcam? [00:09] mscdex: i've eaten a bass, but i'm not really into seafood [00:10] JimBastard: cheap webcams will be awesome if we can get a bunch of people [00:10] jesusabdullah: I have an infrared PS3eye that I can get ahold of [00:10] ysynopsis has joined the channel [00:10] jesusabdullah: That's about it [00:10] SubStack: ACTION has a webcam and a guitar [00:10] JimBastard: perfect [00:10] JimBastard: on both accounts [00:10] SubStack: oh shit jesusabdullah will be in the bay area too soon [00:10] jesusabdullah: actually, no, that guy's strapped to a project [00:10] SubStack: staying at my place [00:10] mscdex: i have an android tablet with a webcam! [00:10] jesusabdullah: Yeah, in just a few days! [00:10] JimBastard: i might be back in SF in Jan [00:10] JimBastard: or April [00:10] jesusabdullah: tsk tsk [00:10] jesusabdullah: I'm only there for next week [00:11] SubStack: also a dinky little keyboard [00:11] SubStack: for the awesome cheesy synth sounds [00:12] jesusabdullah: I'll just say "boop" [00:12] JimBastard: prob will be silent for all the footage [00:12] JimBastard: beat should prob just be made by one person [00:12] jesusabdullah: boop boop pish boop boop boop pish [00:13] JimBastard: you'll see [00:13] cjm has joined the channel [00:16] achiu has joined the channel [00:18] jesusabdullah: Zounds! CouchDBMan! [00:20] aubergine has joined the channel [00:20] aubergine has joined the channel [00:24] ysynopsis has left the channel [00:26] technowe_ has joined the channel [00:27] robotarmy has joined the channel [00:29] tim_smart has joined the channel [00:29] jherdman has joined the channel [00:30] mif86 has joined the channel [00:33] sprout has joined the channel [00:35] pt_tr_ has joined the channel [00:36] benburkert has joined the channel [00:39] hamsterspider has joined the channel [00:50] wasabist has joined the channel [00:51] stephenjudkins has joined the channel [00:52] hamsterspider: help - why get undefined for first lpop? - http://pastie.org/1366920 [00:52] hamsterspider: using redis_node [00:54] pquerna: ACTION plots making a dhcp server in node [00:55] softdrink has joined the channel [00:55] ryah: want [00:55] halfhalo: sounds fancy [00:56] ryah: i think dhcp is relatively simple [00:56] ryah: a passive dhcp module would be useful [00:57] aconbere: ooo [00:57] aconbere: ryah: I've got a pull request for a pretty basic test on net.Stream, it would unblock a patch that prevents net.Stream from decrementing the connection count on servers for ever destroy called [00:58] aconbere: I never know what the best way to champion this little changes is [00:58] aconbere: these [00:58] CIA-54: node: 03Ryan Dahl 07master * r32e8692 10/ (3 files): (log message trimmed) [00:58] CIA-54: node: Apply V8 r5951 to fix Mac build [00:58] CIA-54: node: From f3973972b727df480697443871d780596aba0201 Mon Sep 17 00:00:00 2001 [00:58] CIA-54: node: From: erik.corry@gmail.com [00:58] CIA-54: node: Date: Wed, 8 Dec 2010 16:23:25 +0000 [00:58] ryah: felixge: this should solve your problem--^ [00:59] ryah: compile problem [00:59] felixge: ryah: oh sweet :) [00:59] pquerna: plus, you can make an iphone join your dhcp network and have a socketio thing update the web browser or some shit [00:59] mraleph: hamsterspider: because callback to lpop was not executed when you print my_teemo? [00:59] pquerna: just a small matter of coding of course. [01:00] mscdex: it's always a small matter of coding [01:00] mscdex: :p [01:00] hamsterspider: mraleph - what change do I need to make to lpop.js ? [01:01] mraleph: hamsterspider: move puts into that callback i guess [01:01] hamsterspider: mraleph - ok - will try that - thank you [01:02] mikeal has joined the channel [01:03] hamsterspider: mraleph - yup that worked - much thanks [01:03] MikhX_ has joined the channel [01:03] brianleroux has joined the channel [01:03] eee_c has joined the channel [01:07] stepheneb has joined the channel [01:08] possibilities has joined the channel [01:08] spyrosl_ has joined the channel [01:08] mikeal has joined the channel [01:09] spyrosl_ has joined the channel [01:09] brianmario has joined the channel [01:14] brianleroux has joined the channel [01:16] brendang_ has joined the channel [01:16] aheckmann has joined the channel [01:16] brendang_ has left the channel [01:18] matt_c has joined the channel [01:19] TheEmpath: did the functionality of console.log change? it used to inspect an object, now it just returns [object Object] [01:19] SubStack: there's console.dir [01:20] TheEmpath: ACTION is frightened by Python still. [01:20] TheEmpath: console.dir still does [object Object] [01:20] SubStack: o_O [01:20] Floxxx: TheEmpath: console.log(sys.inspect(var)); [01:21] SubStack: oh right it doesn't do it all the way deeply [01:21] TheEmpath: isn't sys util now? [01:21] SubStack: v8: [[[[[[[[[[42]]]]]]]]]] [01:21] v8bot: SubStack: [[[[[[[[[[42]]]]]]]]]] [01:21] tlrobinson has joined the channel [01:22] derferman has joined the channel [01:22] Floxxx: TheEmpath: yeh [01:22] Floxxx: util.inspect [01:22] Floxxx: my bad [01:22] rauchg_: v8: [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[1]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] [01:22] v8bot: rauchg_: [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[1]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] [01:23] Floxxx: util.inspect(object, showHidden=false, depth=2) [01:24] techwraith: rauchg_, SubStack: Those are some crazy arrays [01:24] rauchg_: i've been trying to crash v8bot since day 1 [01:24] TheEmpath: thar she blows cap [01:24] TheEmpath: thanks [01:24] rauchg_: v8bot: for(;;){} [01:24] v8bot: rauchg_: Use v8: to evaluate code or "`v commands" for a list of v8bot commands. [01:24] rauchg_: v8: for(;;){} [01:24] v8bot: rauchg_: Error: Timeout [01:25] Floxxx: hehe [01:25] davidascher has joined the channel [01:25] Floxxx: v8: for(;;}{setTimeout(for(;;){},1)} [01:25] v8bot: Floxxx: SyntaxError: Unexpected token } [01:25] rauchg_: v8: setInterval(function(){ new Array(1000000).join(' ') }, 13) [01:25] v8bot: rauchg_: ReferenceError: setInterval is not defined [01:25] Floxxx: v8: for(;;){setTimeout(for(;;){},1)} [01:25] v8bot: Floxxx: SyntaxError: Unexpected token for [01:26] Floxxx: v8: for(;;){setTimeout(function() { for(;;){} },1)} [01:26] v8bot: Floxxx: ReferenceError: setTimeout is not defined [01:26] SubStack: v8: (function f (n, xs) { return f(n + 1, xs.concat(n)) })(1, []) [01:26] Floxxx: aww [01:26] v8bot: SubStack: Error: Timeout [01:26] broofa: Anyone have a good reference/examples for how to setup backpressure in streams (i.e. how to use 'drain' event to throttle writes)? (mjr_?) [01:26] MikhX has joined the channel [01:27] SubStack: ryah had one in his node roadmap vid I remember [01:27] SubStack: not easy to copy/paste though [01:27] mjr_: broofa: you want to use pump/pipe for sure [01:27] mjr_: If you can anyway [01:27] ossareh has joined the channel [01:27] SteveDekorte has joined the channel [01:28] mjr_: Check out what stream.pipe does: https://github.com/ry/node/blob/master/lib/stream.js#L10 [01:28] broofa: mjr_: I'm trying to do throughput tests, so just want to write data as fast as a stream will accept it. :P [01:29] mjr_: An example of pipe in use is here: https://github.com/ry/node/blob/master/test/simple/test-pipe.js [01:29] mtodd has joined the channel [01:29] mjr_: broofa: However, it's interesting to understand how node's output buffering works [01:30] mjr_: If the output stream can't accept data as fast as you want to write it, the write will still succeed. [01:30] mjr_: And node will just buffer that for you [01:30] mjr_: Which is often what you want. [01:30] mjr_: But if you build up a very large output buffer, then you use up your memory. [01:30] mjr_: And your GC time [01:31] springif` has joined the channel [01:31] broofa: mjr_: maybe naive question - at what point should I expect write() to return false on a net.Stream? I'm seeing it come back with that immediately (i.e. after first write()). [01:31] mjr_: For a great many tests, the fastest way to go is to just blindly write and let node's output buffering take care of it. [01:32] mjr_: It'll return false at first if the connection hasn't been established yet. [01:32] mjr_: You'll note that the stream is writable on the very tick when it was created [01:32] broofa: ah, of course. *dooh* [01:32] mjr_: Which is perhaps a bit too magical. [01:33] mjr_: But usually what you want. [01:33] broofa: mjr_: cool. thx again! [01:34] mjr_: I showed an example of streaming data from file to HTTP response here: https://github.com/mranney/node_talk_12_9_2010/blob/master/7.js [01:36] tim_smart: You could always delete it and re-provision [01:36] tim_smart: Wrong chat ... [01:36] TheEmpath: i have a vague bug that i'm still drilling down on [01:36] TheEmpath: using socket.io.... sockets connect, send data a few times, recieve data a few times... then they disconnect after 18 seconds [01:37] Dreamer3 has joined the channel [01:37] TheEmpath: its always 18 seconds [01:37] Floxxx: set heartbeat / longpolling to less than 18 seconds ;) [01:38] TheEmpath: not sure now in socket.io :( [01:38] TheEmpath: how [01:38] jashkenas has joined the channel [01:38] TheEmpath: my previous usage of socket.io kept a persistant connection [01:38] tim_smart: mjr_: Saw one of the redis devs made node bindings to hiredis [01:38] tim_smart: How does it perform? [01:38] TheEmpath: but that was a month ago.. i haven't been around to see any changes [01:39] alexfner has joined the channel [01:39] Floxxx: there's a bunch of options you can set for the transports [01:39] mjr_: tim_smart: yeah, I merged that in with node_redis. It's great for large mb replies. [01:39] mjr_: If you do "npm install hiredis", node_redis will find that and use it instead. [01:39] EyePulp has joined the channel [01:41] tim_smart: konobi: How, I got no more coupons. [01:41] muk_mb has joined the channel [01:41] tim_smart: konobi: Answer in #joyent haha [01:41] tim_smart: I'm a irssi noob [01:41] TheEmpath: hrmmm... how does socket.io go from persistent connections to timeouts? [01:42] Floxxx: TheEmpath: depends on your browser [01:42] Floxxx: only Chrome supports websocket [01:42] mattc has joined the channel [01:42] sprout has joined the channel [01:42] mjr_: OK, time to be done working. [01:43] Floxxx: TheEmpath: https://github.com/LearnBoost/Socket.IO-node/issues#issue/78 [01:43] TheEmpath: i see [01:43] TheEmpath: ty [01:43] TheEmpath: im using flashsocket mostly [01:44] Floxxx: never got that to work, so i dunno [01:44] TheEmpath: now that i think about it... [01:44] TheEmpath: this is a new build of ubuntu... [01:45] Floxxx: no flash yet? :p [01:45] TheEmpath: says i have 10.1.103.19 [01:45] TheEmpath: but dunno if ubuntu 10.10 has problems with flash [01:47] aklt has joined the channel [01:47] TheEmpath: lemme try websockets [01:48] Wyverald has joined the channel [01:48] sh1mmer has joined the channel [01:49] TheEmpath: i dunno how to try websockets :( [01:50] mikew3c has joined the channel [01:51] ajpi has joined the channel [01:51] Floxxx: TheEmpath: use Chrome [01:52] Floxxx: should automatically use websockets [01:52] TheEmpath: same problem... [01:53] TheEmpath: the server handles two messages and then refuses to handle further client messages [01:53] TheEmpath: very strange [01:55] JimBastard has joined the channel [01:57] muk_mb has joined the channel [01:57] TheEmpath: i know what may have happened [01:58] TheEmpath: i bound some of my fundamental server code to data in socket.io [01:58] TheEmpath: and a pretty heavy update came out [01:58] TheEmpath: which probably shattered my relationships [01:58] TheEmpath: poop [02:03] mikeal has joined the channel [02:03] vnguyen has joined the channel [02:04] CIA-54: node: 03Ryan Dahl 07master * rc444293 10/ (lib/tls.js test/simple/test-tls-client-verify.js): Start a simple TLS client verification test - http://bit.ly/dNfZno [02:04] CIA-54: node: 03Ryan Dahl 07master * r8ef683d 10/ (4 files): Rename the securepair test to be prefixed with tls - http://bit.ly/eSe6Lr [02:10] Zebra10 has joined the channel [02:12] rex_fernando has joined the channel [02:14] TheEmpath: i leave for one month and socket.io endures a commit spree [02:14] TheEmpath: ACTION angers. [02:15] ryah: openssl.. not the easiest library to use [02:15] TheEmpath: its about as awesome as oauth [02:16] dandean has joined the channel [02:16] joeshaw: ryah: just about the worst api ever [02:16] joeshaw: the only thing worse than the api are the docs [02:18] pt_tr has joined the channel [02:21] icono has joined the channel [02:22] icono: hi good night, I have a object that with sys.inspect return a "json" representation, but right now is showing the null fields, and I like to remove them or hidden them, how I can do? [02:24] MattDiPa_ has joined the channel [02:24] Zebra10: any idea why JSON.stringify would be emptying a nested array? [02:26] Zebra10: oh i see why... [02:26] Zebra10: nvm [02:31] iszak has joined the channel [02:31] iszak has joined the channel [02:32] viirya has joined the channel [02:32] Twyndyllyngs has joined the channel [02:32] Twyndyllyngs has joined the channel [02:34] TheEmpath: :/ [02:35] TheEmpath: i think i have to write my own socket handler [02:35] sugardav1 has joined the channel [02:35] Hello71 has joined the channel [02:35] lstrojny has joined the channel [02:36] whyme has joined the channel [02:38] iszak: TheEmpath, why? [02:38] TheEmpath: currently, socket.io only takes two requests per connection and then stops taking more requests [02:38] TheEmpath: then it times out every 18 seconds [02:38] iszak: is this on 3.x or 2.x? [02:38] TheEmpath: and now, if i sit and just hold f5 and spam refresh my page, socket.io takes a dump [02:39] kawaz_h has joined the channel [02:39] TheEmpath: node 0.3 [02:39] iszak: OH [02:39] iszak: socket.io [02:39] jlilly has joined the channel [02:40] iszak: make sure you're using the latest version and check if it supports that version of node, finally check for a setting. [02:40] siong1987_ has joined the channel [02:40] iszak: i doubt they'd make such a fundamental flaw. [02:40] TheEmpath: while i loathe having to write a solution like that from scratch, i dont think i have a choice [02:40] iszak: Are you running node.js on windows? [02:41] TheEmpath: ubuntu 10.10 [02:41] iszak: okay, [02:41] TheEmpath: if there are settings for socket.io, like 5 people know them [02:41] blowery_ has joined the channel [02:41] iszak: well do as i suggested, but i wouldn't expect Socket.IO to be limitedd to 2. [02:41] TheEmpath: it was fine a month ago [02:41] TheEmpath: now its all jacked [02:41] tim_smart: isaacs: Around? [02:42] iszak: So what changed in the last month TheEmpath ? [02:43] TheEmpath: socket.io went on a commit spree [02:44] TheEmpath: for the past 15 days, there has been new code to the repo every day [02:44] iszak: your repo that is? [02:44] TheEmpath: these are my application logs https://gist.github.com/737105 [02:44] TheEmpath: no, socket.io [02:44] iszak: oh, you're using a git copy? [02:44] TheEmpath: socket.io has undergone serious overhauls in the past 15 days [02:44] jan____ has joined the channel [02:44] TheEmpath: i can't get socket.io to work any other way [02:44] alexfner has joined the channel [02:45] TheEmpath: that log shows it handling 2 requests before dying 18 seconds later [02:45] TheEmpath: the client is sending 10 [02:45] iszak: i would checkout an older version then. [02:46] TheEmpath: git clone git://github.com/LearnBoost/Socket.IO-node.git /usr/local/lib/node/socket.io --recursive [02:46] TheEmpath: no doog? [02:46] TheEmpath: good [02:46] iszak: I don't use git. [02:46] tim_smart: :o [02:47] tim_smart: The git is hawt [02:47] iszak: haven't had any need for it. [02:47] TheEmpath: what is the prefered way to get socket..io? [02:47] TheEmpath: i swear i have to ask this question every 2 weeks [02:47] tim_smart: npm [02:47] tim_smart: npm install socket.io [02:48] iszak: If you can get npm to work [02:48] iszak: i personally think it should be baked into node.js goodness. [02:48] possibilities has joined the channel [02:49] ryah: well. isaac works about 5 feet from me - that's baked in enough :) [02:49] tim_smart: Naw. node.js should just be a runtime with a standard library [02:49] iszak: for you i s'pose. [02:49] dguttman_ has joined the channel [02:49] iszak: i just like everything chosen for me. [02:49] iszak: here are the tools, if you don't like it - deal with it, get cracking. [02:50] TheEmpath: bamf [02:50] TheEmpath: fixed [02:50] TheEmpath: you delicious people deserve cupcakes and bachi bazi [02:50] tim_smart: I has cookies [02:50] tim_smart: I made a batch yesterday and they are amazing. [02:51] tim_smart: Anyway... [02:51] possibilities: i have this situation where i have an instance buried deep within a hierarchy of instances and it needs to communicate an event to the outtermost instance... what's the best way to do this design-wise? i could pass it up through each layer but is there some way to avoid that? [02:51] iszak: what flavour? [02:51] tim_smart: Chocolate chip of course. [02:52] possibilities: it's a command line program... toying with the idea of emitting an event with process.emit [02:52] wasabist has joined the channel [02:53] stephenjudkins has joined the channel [02:53] tprice: whats the best xml to json module? [02:53] iszak: ughh [02:53] tim_smart: [node@timsmart ~/code]$ ping registry.npmjs.org [02:53] tim_smart: ping: unknown host registry.npmjs.org [02:53] tim_smart: My no.de machine is being silly [02:54] wasabist has joined the channel [02:54] tprice: no one has does xml to json then? [02:55] iszak: tim_smart, you have a dedicated node machine? [02:55] tim_smart: iszak: http://no.de/ [02:55] iszak: you own that? [02:55] tim_smart: Joyent owns that [02:55] iszak: OH [02:55] iszak: your machine on no.de, right. [02:56] iszak: i love having three machines. [02:56] iszak: tim_smart, i'm guessing your DNS isn't resolving? [02:56] tim_smart: Something like that [02:56] iszak: not to mention I can't ping registry.nrpmjs.org [02:57] tim_smart: Anyway, it means npm doesn't work [02:57] iszak: is there a param in npm for an alternative repo? [02:57] JimBastard has joined the channel [02:57] tprice: how do i get a coupon from no.de? [02:57] tprice: whats the queue like? [02:59] iszak: it's not hard to setup a VPS with node on it.. [02:59] iszak: i don't see people want to go with no.de [02:59] beta_ has joined the channel [03:00] CIA-54: node: 03Ryan Dahl 07master * rd4f1ab0 10/ lib/tls.js : [03:00] CIA-54: node: Add EncryptedStream and CleartextStream classes [03:00] CIA-54: node: Towards half-closed secure sockets. - http://bit.ly/hUNRg0 [03:00] tim_smart: iszak: Because with no.de you have the option of git deployment as well as standard deployment [03:00] iszak: you can set that all up on a vps anyway. [03:00] SubStack: I likes me some git push [03:01] SubStack: iszak: you could set up your own git repo over ssh too, or you could just use github [03:01] iszak: i don't want public hosted code, nor do I want to have to pay for github. [03:02] bingomanatee_ has joined the channel [03:03] iszak: I should really get into Git tho. [03:03] Yuffster has joined the channel [03:04] bpadalino: git is neat in that you can set it up very easily locally and if you ever want to push it elsewhere, it's very simple [03:04] tprice: what is the queue like on no.de? how long is the wait? [03:04] iszak: yeah, distributed vcs. [03:05] whyme: i don't quite buy the distributed vcs blah but git's pretty cool [03:05] TheEmpath: possibilities: event listeners [03:05] whyme: git stash, easy branch-and-merge, staging [03:06] TheEmpath: git makes branching as easy as camwhores on 4chan [03:10] iszak: aha [03:10] iszak: i'm a noob. [03:13] isaacs: ACTION expecting about 150 new support requests this weekend... [03:13] dandean has joined the channel [03:14] iszak: isaacs, why's that? [03:15] isaacs: iszak: an email is going out to all the node-camp attendees telling them to get node and npm installed on their laptops. [03:15] iszak: haha [03:15] iszak: nice [03:17] sugardave has joined the channel [03:17] SubStack: ACTION adds 50 new npm tickets that all amount to "It doesn't work." [03:17] iszak: why did I have to ls my session directory. [03:18] isaacs: SubStack: heh [03:18] isaacs: "It doesn't work" is the first thing in `npm faq` [03:18] SubStack: but it doesn't work! [03:18] isaacs: oh, no, second thing [03:19] SubStack: when stuff doesn't work, it's like a MURDER MYSTERY [03:19] techwraith has left the channel [03:19] SubStack: except YOU are probably the killer [03:19] isaacs: SubStack: i know, i LOE [03:19] isaacs: LOVE that [03:19] achiu has joined the channel [03:19] isaacs: my favorite thing is to try to figure out the issue given teensy tiny clues. [03:20] isaacs: preferably over twitter or SMS, so that I can't readily get more information and spoil the surprise. [03:20] SubStack: the suspense! [03:20] reid: how fun [03:20] isaacs: what's awesome is when there's a surprise twist, and you find out the user didn't even follow ANY instructions in the first place! [03:21] hornairs has joined the channel [03:21] SubStack: and by leaving off the version number, it's like reading the same great novel over and over again! [03:21] isaacs: SRSLY! [03:21] Floxxx: user> "my printer isn't working" [03:21] Floxxx: admin> "is it on?" [03:21] Floxxx: user> "ehhhh..." [03:22] isaacs: btw, i got ircretary keeping logs now. [03:22] isaacs: http://isaacs.couchone.com/ircretary/_design/logs/_list/listMessages/messages?room=node.js [03:22] SubStack: huzzah [03:23] SubStack: test [03:23] isaacs: for some reason the vhost routing on couchone isn't working, though, so i can't get a nicer url than that [03:23] SubStack: what no websocket auto update? [03:23] isaacs: nah [03:23] SubStack: refreshing, how delightfully primitive [03:23] Floxxx: oh no, my ramblings posted publically on the internet... [03:23] isaacs: you can build that if you want, though. it's just a couchdb. replicate it. [03:24] SubStack: perhaps! [03:24] SubStack: I should really learn the couch [03:24] reid: re: version number, i just added the node.js version in addition to everything else in my uncaughtException handler [03:24] pengwynn has joined the channel [03:24] SubStack: this replication business has piqued my interest [03:24] reid: most of the small amount of bugs i get just have 4 lines of the crash. nothing else :/ [03:25] isaacs: the db has all the info, too, not just the text [03:25] norviller has joined the channel [03:25] isaacs: SubStack: http://isaacs.couchone.com/ircretary/NODE-JS-2010-12-11T03-23-50-865Z [03:25] isaacs: so if anyone ever wants to do analytics or whatever, it's there. [03:26] isaacs: it's ignoring join/leave, though [03:26] isaacs: anything but PRIVMSG [03:26] SubStack: sweet [03:27] Floxxx: isaacs: you're just parsing your irc logs i assume? or did you write a whole client in node? [03:27] isaacs: Floxxx: i use irc-js [03:27] isaacs: ircretary: hello [03:27] ircretary: isaacs: Hello :) [03:27] Floxxx: ah [03:27] Floxxx: nice [03:27] iszak: invasion of privacy or what [03:27] Floxxx: iszak: are you on SSL? [03:28] isaacs: iszak: huh? [03:28] iszak: i don't like chat logs. [03:28] dgraunke has joined the channel [03:28] iszak: for that exact reason "oh no, my ramblings posted publically on the internet..." [03:28] tzmartin has joined the channel [03:28] Floxxx: better unplug that CAT5 cable :p [03:28] isaacs: iszak: if you send bytes to another person's computer, you should assume that they may stay there. [03:28] iszak: It's wireless, but if I were to have a cable, it'd be CAT5e! [03:28] SubStack: but when you die how are we supposed to seed a markov bot in your memory? [03:29] iszak: hmm that's a good idea. [03:29] isaacs: when you write something in irc, it's already "posted publicly on the internet" [03:29] iszak: we should be able to add our name to an exclude list. [03:29] alkema has joined the channel [03:29] Floxxx: all your bytes are belong to us? [03:30] reid: the exclude list is /part [03:30] Floxxx: reid: or better yet, /quit ;) [03:30] iszak: So I found out that because I had a 25 MB session folder, grep was taking agess. [03:30] halfhalo: theres like 85 logging things in this node.js chatlog [03:30] halfhalo: chat* [03:30] reid: floxxx: yup, better. :) [03:30] Floxxx: halfhalo: assume there's 366 logging ;) [03:31] icono has joined the channel [03:31] halfhalo: lol [03:31] Floxxx: then it can only get better [03:31] creationix has joined the channel [03:32] Floxxx: so better not talk about what how you dress up as a woman on saturday nights ;) [03:32] isaacs: reid++ [03:32] v8bot: isaacs has given a beer to reid. reid now has 1 beers. [03:33] reid: just what i need! [03:33] reid: i'm happy v8bot is the bartender [03:33] isaacs: v8bot++ [03:33] v8bot: isaacs has given a beer to v8bot. v8bot now has 7 beers. [03:33] isaacs: ircretary++ [03:33] reid: lol [03:33] v8bot: isaacs has given a beer to ircretary. ircretary now has 0 beers. [03:33] ircretary: isaacs: I'm not sure what to do with that command. Ask for help in PM and I'll tell you what I can do. [03:33] isaacs: ircretary++ [03:33] ircretary: isaacs: I'm not sure what to do with that command. Ask for help in PM and I'll tell you what I can do. [03:33] v8bot: ircretary is getting too many beers. Don't let ircretary get drunk! [03:34] isaacs: she's a lightweight! [03:34] reid: yeah, too many at 0? [03:34] SubStack: wheee rackspace [03:34] SubStack: enough of this ec2 performance nightmare [03:34] SubStack: unless rackspace is just as bad :/ [03:34] isaacs: oh, hah, ircretary doesn't log her own messages. [03:35] isaacs: i guess that makes sense. [03:36] iszak: What do people think of a log analyzer in node.js? [03:36] breccan_ has joined the channel [03:36] isaacs: iszak: for what kind of logs? [03:36] iszak: well it'll be able to be dynamic to support multiple. [03:36] reid: isaacs: i might have some time to conjure up that npm enhancement this weekend, can i throw the site on no.de? [03:37] iszak: possibly to have adapters for say nginx/apache but perhaps find common ground. [03:37] isaacs: reid: npm enhancement? (i forgot what that was about) [03:37] reid: oy, user reset [03:37] isaacs: oh, right [03:37] isaacs: hellz yeah, dude [03:38] langworthy has joined the channel [03:42] matt_c has joined the channel [03:42] masahiroh has joined the channel [03:45] noahcampbell has joined the channel [03:49] _mythz has joined the channel [03:49] cardona507 has joined the channel [03:54] BHSPitMonkey has joined the channel [03:56] ceej has joined the channel [03:56] alkema has left the channel [03:57] BHSPitMonkey: Anyone here used node-canvas? When I create an Image and set its source, its onload isn't being fired [03:58] hamsterspider has left the channel [04:00] max_ has joined the channel [04:03] tzmartin has joined the channel [04:03] dguttman has joined the channel [04:03] DTrejo has joined the channel [04:03] DTrejo: hi everyone [04:03] DTrejo: what's the best way to profile my node program? [04:03] smtlaissezfaire has joined the channel [04:03] DTrejo: (meaning, figure out where the slowness is) [04:03] yozlet has joined the channel [04:04] BHSPitMonkey: DTrejo: log messages whenever major parts of the execution are entered? [04:04] Floxxx: console.log? [04:04] Floxxx: ^^ [04:04] BHSPitMonkey: use sys.log [04:04] Floxxx: oh yeh [04:05] BHSPitMonkey: it auto-timestamps messages [04:05] DTrejo: I'm gonna try node-profiler [04:05] Floxxx: or util.log ;) [04:05] tzmartin has joined the channel [04:05] DTrejo: ohh [04:05] DTrejo: node --prof application.js [04:05] lstrojny_ has joined the channel [04:08] ajpiano has joined the channel [04:13] wasabist has joined the channel [04:24] breccan_ has joined the channel [04:30] Dreamer3 has joined the channel [04:31] jvolkman-work has joined the channel [04:33] meck has joined the channel [04:36] mr_daniel has joined the channel [04:36] eee_c has joined the channel [04:36] dgraunke has left the channel [04:37] tylerstalder has joined the channel [04:39] saikat has joined the channel [04:43] davidascher has joined the channel [04:44] dgathright has joined the channel [04:47] Insanity5902 has joined the channel [04:48] sivy has joined the channel [04:49] saikat_ has joined the channel [04:51] Ond has joined the channel [04:55] datapimp has joined the channel [04:55] saikat_ has joined the channel [04:56] alexfner has joined the channel [04:58] mikew3c has joined the channel [05:00] bart2 has joined the channel [05:05] tylerstalder has joined the channel [05:07] davidascher has joined the channel [05:07] ericvicenti has joined the channel [05:09] datapimp has joined the channel [05:13] marienz has joined the channel [05:14] dguttman has joined the channel [05:17] stephenjudkins has joined the channel [05:19] breccan__ has joined the channel [05:21] Aikar: ryah: i thought you added process.hostname? [05:21] Aikar: coulda swore i saw that [05:22] Aikar: maybe i was dreaming [05:24] breccan_ has joined the channel [05:26] muk_mb has joined the channel [05:27] AAA_awright: Aikar: I remember saying no it doesn't work like that...? [05:27] AAA_awright: Wishful thinking/false memory? [05:30] isaacs has joined the channel [05:35] mbrochh has joined the channel [05:35] mbrochh has joined the channel [05:44] smtlaissezfaire has joined the channel [05:45] Yuffster has joined the channel [05:46] sid has joined the channel [05:47] mattcodes has joined the channel [05:48] mikeal has joined the channel [05:50] ryah: Aikar: i told someone they could make a require('os').getHostname() [05:51] Aikar: i must of been dreaming about process.hostname, but maybe you could make that dream true :P imo would be nice to have it sync read on start [05:52] marienz has joined the channel [05:52] datapimp has joined the channel [05:56] Aikar: no [05:56] Aikar: mt [05:56] ivan has joined the channel [05:59] m14t has joined the channel [05:59] m14t: evening all [05:59] ryah: Aikar: sync read on start? [05:59] Aikar: of the hostname [05:59] ryah: m14t: evening [06:00] iszak has joined the channel [06:01] m14t: just got my email for camp.nodejs.org, pretty excited [06:02] ryan[WIN] has joined the channel [06:02] mscdex: isn't getting the hostname just a matter of calling gethostname() in C++ land? [06:02] iszak: bleh [06:03] iszak: why can't I live in SF. [06:04] _mythz has left the channel [06:05] chrischris has joined the channel [06:07] bingomanatee_ has joined the channel [06:09] Aikar: yes [06:09] Aikar: mt [06:14] brianmario has joined the channel [06:14] ivan has joined the channel [06:17] mscdex: ryah: is there an 'os' module started somewhere? [06:23] bruce has joined the channel [06:23] mjr_ has joined the channel [06:24] Aikar: ryah: i was wanting to dynamically load config files based on hostname, would be cool if it was built into node as either auto populated to process or a sync call :3 [06:25] ryah: mscdex: there is not [06:25] ryah: making a new file sounds like so much work :) [06:26] mscdex: ryah: should there also be a separate node_os.cc file? [06:26] mscdex: or should something like gethostname go in an existing file? [06:26] mscdex: :S [06:26] cagdas has joined the channel [06:27] jherdman has joined the channel [06:28] ryah: yeah [06:32] bruce: Q for anyone... in 3.1 it's util.inherits() instead of sys.inherits() ? [06:33] SubStack: affirmative [06:33] bruce: thx [06:37] m14t has left the channel [06:37] m14t has joined the channel [06:40] bruce: Ah, I see it in my own build tree, but not the public 0.3.1 api doc. [06:41] tim_smart: bruce: s/sys/util/g for >0.3 [06:41] m14t_ has joined the channel [06:41] bruce: thanks, that's good to know. [06:42] bruce: I'm bootstrapping myself from "a little jQuery here and there" to node, and I have to admit the learning curve is steep. [06:45] SubStack: bruce: just a few new interfaces and idioms is all [06:46] bruce: I suppose, but I haven't found a really good document that pulls much of this together yet. [06:47] bruce: I'm not complaining, I definitely have gotten my money's worth. [06:47] SubStack: http://nodejs.org/api.html is super useful [06:49] boaz has joined the channel [06:49] bruce: Thanks, I think I'll sit down and read a bunch of that now. I think I started a little too deep. [06:50] ryah: ssl closing semantics are super annoying [06:52] sivy has joined the channel [06:56] creationix has joined the channel [06:59] muk_mb has joined the channel [06:59] smtlaissezfaire has joined the channel [07:03] datapimp has joined the channel [07:06] datapimp has joined the channel [07:06] possibilities has joined the channel [07:07] amerine has joined the channel [07:10] achiu has joined the channel [07:10] achiu1 has joined the channel [07:13] netminder has joined the channel [07:14] breccan__ has joined the channel [07:14] faust45 has joined the channel [07:15] possibilities has joined the channel [07:16] cagdas: hi everyone, I have a question about jade [07:16] cagdas: can we check if a local variable is defined or not in jade templates [07:16] SubStack: typeof var === 'undefined' [07:17] cagdas: thanks SubStack [07:20] creationix has left the channel [07:22] dguttman has joined the channel [07:22] jesusabdullah: I forget that all the time for some reason <_> idk why [07:23] SubStack: well it's not something you want to use a whole lot [07:23] SubStack: outside of templates you have more control over how the lexicals are defined [07:29] cloudhead has joined the channel [07:29] netminder has left the channel [07:29] twoism has joined the channel [07:31] ossareh has joined the channel [07:33] mattcodes has joined the channel [07:36] smtlaissezfaire has joined the channel [07:36] sechrist has joined the channel [07:37] sveimac has joined the channel [07:40] mscdex: argh, i can't figure out what i'm missing while including this new module [07:40] mscdex: "Error: No such module" when doing process.binding() [07:40] mscdex: :\ [07:40] mscdex: i'm pretty sure it's getting compiled in [07:41] okuryu has joined the channel [07:41] sudoer has joined the channel [07:45] mikew3c_ has joined the channel [07:47] mscdex: ryah: i know the binding is getting compiled, i've edited node_extensions.h, and it shows up in the node_natives.h. what am i missing? [07:49] ryah: mscdex: hm *shrug* [07:49] ryah: mscdex: make sure you initialize it correctly [07:49] aubergine has joined the channel [07:50] sechrist: Is there a way to spawn a window with node, on a mac, and render a png? [07:51] mscdex: ryah: i've got the call to NODE_MODULE() at the end of the cc and the initialize function calls NODE_SET_METHOD. is there anything else? [07:51] chapel: hmm [07:51] sh1mmer has joined the channel [07:51] chapel: you could open preview [07:51] sechrist: nah I need about 30fps [07:51] chapel: oh [07:51] sechrist: in place [07:52] chapel: i have no idea [07:52] tekky has joined the channel [07:53] mgutz has left the channel [07:53] aurynn has joined the channel [07:54] mscdex: ryah: here's what i have: https://gist.github.com/737240 [07:58] sechrist: SubStack: you there? [07:58] ryah: mscdex: you added it to wscript? [07:58] mscdex: yeah [07:58] SubStack: pow [07:58] ryah: mscdex: and reconfigured? [07:58] mscdex: yes [07:58] SubStack: sechrist: I am making a better bufferlist [07:58] sechrist: SubStack: what is the easiest way to view a stream of frames generated in node? websockets + canvas? [07:59] sechrist: SubStack: nice! [07:59] SubStack: what manner of frames? [07:59] sechrist: pngs generated by node, via node-canvas [07:59] sechrist: I want to view them at 30fps [07:59] ryah: mscdex: hm.. donno [07:59] SubStack: 30! [07:59] SubStack: that is hard [07:59] sechrist: well ok at least 15 [08:00] SubStack: one trick is you can use base64 encoded uris [08:00] sechrist: that won't give me 30fps [08:00] sechrist: will it? [08:00] SubStack: this http://en.wikipedia.org/wiki/Data_URI_scheme [08:00] sechrist: I figured painting with canvas would be the fastest way [08:00] mscdex: :S [08:01] sechrist: which is kind of funny [08:01] sechrist: I would be going from node-canvas to real canvas [08:01] SubStack: could try with raw canvas [08:02] sechrist: I've never really used it, is it easy to paint a png in a browser with it? [08:02] sechrist: without base64ing it? [08:02] SubStack: it's not bad [08:03] SubStack: oh, well with base64 I mean it's not bad [08:03] sechrist: ctx.drawImage(bigassb64string,0,0) [08:03] sechrist: daaamn [08:04] SubStack: protip: never use ec2 ever if performance matters at all [08:04] sechrist: no this is a POC for something that would be deployed on a cloud [08:04] sechrist: a real cloud of i7s [08:04] SubStack: oh this was something different [08:04] SubStack: just moved browserling to rackspace cloud for some tests [08:04] SubStack: so much faster [08:04] sechrist: how much better is it? [08:04] sechrist: told you [08:05] SubStack: probably did! [08:05] SubStack: oh also there's http://github.com/pkrumins/node-video [08:05] SubStack: for your video thing [08:05] sechrist: that's kind of awesome [08:05] sechrist: no streaming [08:05] sechrist: argh [08:10] mscdex: ryah: oh jeez... i know what i was doing wrong... i'm just going to blame it on being late here :> [08:18] alexfner has joined the channel [08:20] Druid_ has joined the channel [08:21] tlrobinson has joined the channel [08:22] mscdex: ryah: here's the patch: https://gist.github.com/737252 [08:23] Fullmoon has joined the channel [08:24] mjr_: SubStack: remember how we were all like, uhhh, probably move away from EC2 if you want CPU cycles. [08:26] matjas has joined the channel [08:30] SubStack: yes well I wasn't the one doing the deployments [08:31] masahiroh has joined the channel [08:32] adambeynon has joined the channel [08:33] mscdex: ahh coffee [08:35] bruce: Hmm... this EC2 discussion interests me, as I was thinking of setting up some stuff there. How bad is it? I thought they guaranteed you like 1.7GHz xeon performance or something. [08:36] mjr_: Some people try to convince me that "cafe americano" is the same as coffee. [08:36] jchris has joined the channel [08:36] bruce: if it was, wouldn't they call it coffee? [08:36] mjr_: bruce: pretty bad. I estimate that SoftLayer is about 4X to 8X better price/performance. [08:37] mjr_: People say similar things about Rackspace or Joyent. [08:37] bruce: wow. [08:38] bruce: not good. [08:38] mjr_: Amazon has a great API, and are the IBM of hosting. [08:38] mjr_: Nobody ever got fired for deploying on EC2, etc. [08:38] mscdex: yet! [08:38] mscdex: :D [08:38] mjr_: ha! [08:38] mjr_: Great point. [08:39] mjr_: Once Joyent gets their no.de service out of beta, I think that'll be the ticket for node hosting. [08:39] mjr_: Until then, I'd check out SoftLayer or Rackspace. [08:39] ryah: mscdex: python tools/cpplint.py src/node_os.cc [08:40] ryah: at least fix the braces around the if [08:42] chapel: well I am looking forward to nodejitsu [08:42] pquerna: i'm looking forward to runit [08:42] iszak: meh. [08:43] chapel: Im looking forward to node 1.0 [08:43] chapel: :P [08:43] iszak: node 1.0 is vapour ware. [08:44] tim_smart: I'm looking forward. [08:44] chapel: node vapor.0 [08:44] bruce: What if you have to run some legacy crap on Windows... Joyent doesn't have that, right? [08:44] iszak: an extra server. [08:44] iszak: or vps or w/e at another location? [08:46] pquerna: that is one advantage to rackspace/ec2 etc, you can boot windows boxes in the same datacenters [08:46] iszak: why don't people just get a VPS and setup node.js I don't see why they want cloud hosting. [08:47] pquerna: the difference between a vps and cloud hosting is just one of scale [08:47] pquerna: they are all on xen [08:47] mjr_: It's just one of buzzwordery. [08:47] pquerna: or another hypervisor [08:47] wao: :) [08:47] mjr_: These days, "hosting" takes many shapes. [08:47] iszak: i'd rather have a fixed rate charge. [08:47] wao: neither [08:48] mscdex: ryah: updated: https://gist.github.com/737252 [08:48] chapel: well with node, I could see cloud services really advantageous [08:48] pquerna: cloud stuff is, if you leave it on :) [08:48] pquerna: * joyent doesn't use a hypervisor, because they are cheating with solaris, but anyways [08:48] chapel: since you aren't really focusing on individual machine performance, you leave that up to the OS layer, so you just spawn processes as you need them, depending on how you architect your application [08:49] ryah: mscdex: thanks [08:49] chapel: so if you build your app with that kind of expandability a cloud infrastructure would be very powerful and scaleable [08:49] mjr_: eval(solaris === cheating); // true? [08:50] chapel: I haven't touched solaris, what is so great about it? [08:50] mscdex: assert.ok(solaris !== cheating); [08:50] mscdex: :p [08:50] pquerna: at the very least its an unfair advantage [08:50] mjr_: ha [08:50] tlrobinson has joined the channel [08:50] mjr_: Yeah, how dare it be a better operating system. [08:50] pquerna: dtrace, zfs. [08:50] pquerna: freebsd has em, so i'll die happy. [08:50] mjr_: With terrible userspace tools. [08:50] pquerna: just as soon as freebsd runs on the cloud [08:50] mjr_: That are different than every other Unix ever. [08:50] pquerna: which might be any day now [08:51] pquerna: any day! [08:51] mjr_: keep hope alive [08:51] mscdex: i'm waiting for paidbsd [08:51] andrzejsliwa has joined the channel [08:51] mscdex: a commercial distro [08:51] chapel: its called osx [08:51] mjr_: BSDi tried that in the past. It was adorable and cute. [08:52] mjr_: Got bless 'em, they tried. [08:52] mscdex: chapel: but you can't just buy the os :S [08:52] chapel: yeah you can :) [08:52] chapel: maybe not officially [08:52] mscdex: heh [08:52] chapel: but it is almost as complicated as running linux from 8 years ago on odd hardware :) [08:52] mscdex: i don't think the psystar method is preferred :P [08:53] chapel: eh, I run my own hackintosh [08:53] CIA-54: node: 03Ryan Dahl 07master * r70baeba 10/ (lib/tls.js src/node_crypto.cc src/node_crypto.h): Add receivedShutdown() binding - http://bit.ly/iecQHw [08:53] CIA-54: node: 03Ryan Dahl 07master * rdc65cbd 10/ lib/tls.js : Factor out some _cycle functionality into Cleartext and EncrypteStreams - http://bit.ly/g14e4K [08:53] CIA-54: node: 03Brian White 07master * rf1762ff 10/ (9 files in 6 dirs): Add os module and getHostname - http://bit.ly/eaAn9T [08:53] chapel: but I own osx, and have a macbook (this machine) [08:53] iszak: meh, i think cloud hosting is over rated. [08:53] mscdex: Aikar: ^^^ [08:54] pquerna: suck and blow, really :P [08:55] ryah: too much? :) [08:55] jan___ has joined the channel [08:55] SamuraiJack has joined the channel [08:56] tim_smart: VPS and Cloud hosting are pretty much the same thing [08:56] pquerna: ryah: https://github.com/ry/node/commit/f1762ff815da22aaafffab7f9eba8aa2cd88604e#L2R5 [08:56] iszak: maybe i just don't fully understand cloud hosting. [08:56] ryah: yes [08:57] mjr_: iszak: "cloud" hosting is just hosting. The novelty is that more recent providers can easily sell you capacity with very little delay from when you order it to when it is available. [08:57] mjr_: That's what makes it "cloud" [08:57] CIA-54: node: 03Ryan Dahl 07master * r4f2ab03 10/ doc/api/os.markdown : Fix typo - http://bit.ly/hT3QQZ [08:58] jameshome: also, "cloud" sounds kind of near [08:58] jameshome: neat [08:58] iszak: mjr_, my VPS was setup instantly. [08:58] ryah: better than 'grid' [08:58] jameshome: never underestimate the importance of sounding kind of neat [08:58] ryah: grid computing never took off. [08:58] jameshome: it didn't sound neat. [08:58] chapel: well cloud also means high availability of multiple 'nodes' [08:58] chapel: depending on how they are setup [08:58] chapel: ec2 being machine based [08:59] chapel: rackspace the same [08:59] mscdex: wasn't there even another name before grid computing? [08:59] pquerna: mainframe :P ? [08:59] chapel: but there are some that work more 'magically' obscuring individual machines [08:59] mscdex: not that far back ;-) [08:59] pquerna: so, something else ibm would sell you. hmmm. [08:59] pquerna: Linux? [08:59] pquerna: they would sell you linux for awhile after mainframes, but before grid. [09:00] tim_smart: Hmm what is more awesome than clouds? Moon maybe? Moon hosting... [09:00] mscdex: "moon hosting -- it's out of this world!" [09:00] mscdex: ;-) [09:01] iszak: i just feel the whole "cloud" hosting is a buzz word. [09:01] mikeal has joined the channel [09:01] tim_smart: "Our secure facility is located in a bunker on the moon. Asteroid downtime may ensue." [09:01] pquerna: its not, I mean, there is something different. [09:01] bruce: I guess I'll have to dig into Rackspace a bit more and figure out if it will work for me. I need Linux + Windows, so that does limit my options. [09:01] matjas has joined the channel [09:02] iszak: bruce, that sucks :( [09:02] pquerna: old world VPS you couldn't boot 20 machines in 5 minutes [09:02] iszak: probably not. [09:02] mscdex: bruce: why windows? [09:02] twoism has joined the channel [09:02] bruce: iszak - you don't know the meaning of the word *suck* until you see the clunky old crap software I have to run on Windows. [09:03] tim_smart: mscdex: Microsoft Paint, duh. [09:03] iszak: ahaha [09:03] iszak: bruce, probably not, what is it? [09:03] mscdex: why not run it under wine? :> [09:03] bruce: oh it's some internal stuff for a client. some of the code base is 40 years old, I kid you not. [09:03] iszak: time to kill some children. [09:04] iszak: as in, children processes. [09:04] bruce: mscdex: I tried wine, it didn't work very well. [09:04] tim_smart: bruce: Huh, windows was around 40 years ago? [09:04] bruce: no, but this is zombie software... it shuffles around and refuses to die [09:05] mscdex: then maybe dosbox or dosemu or something [09:05] mscdex: heh [09:05] tim_smart: You can kill zombies by shooting them in the head. [09:05] mscdex: i dunno [09:05] tim_smart: Maybe try it with your client. [09:05] mscdex: i've had pretty good luck with old windows software and wine [09:05] bruce: the old stuff is in Fortran and used to take its input as a bunch of fixed format 80 char lines. now it's all wrapped in a horrible Windows GUI written by sadistic monkeys. [09:06] chapel: why not rewrite it? [09:06] chapel: code that old, if its vital, might as well make it future proof [09:06] bruce: I tell you it's the worst crap software I've ever seen. And I hope to push it into the back of a data centre and wrap it in a node-powered web service [09:07] bruce: not my code, and rewriting isn't an option. [09:07] bruce: I just have to plug my nose and make it work, somehow. [09:07] chapel: why isn't it an option? [09:07] chapel: does it interface with old components or something? [09:08] bruce: how to put it... all I can really say is "government client", which is to indicate inflexibility more than secrecy. [09:09] chapel: ah, all you had to say was government [09:09] bruce: yeah, pretty much. [09:10] bruce: enough about that... node is some awesome stuff, amirite? [09:10] chapel: idk, node.js is better [09:10] bruce: I wish I could always work in interesting environments like node programming. [09:11] bruce: ACTION sighs [09:11] mscdex: you have to sneak it in [09:11] mscdex: :P [09:11] iszak: How do people manage restarting a service when by restarting it although it may only take 5 seconds, a 100 requests went unanswered. [09:11] mscdex: that's how i get to use node at work [09:11] mscdex: :> [09:12] bruce: yeah, I don't exactly have my plans approved yet either. :) [09:13] mscdex: i'm not really using it for anything especially exciting though, just mostly to automate command-line tools and provide feedback through websockets/etc [09:13] bruce: iszak - could you start a new copy on another port and use some sort of port forwarding to switch over? [09:13] iszak: that could work [09:14] iszak: lovely the server just became unresponsive. [09:14] arrty has joined the channel [09:14] d0k has joined the channel [09:14] pdelgallego has joined the channel [09:15] mohiam has joined the channel [09:15] mscdex: iszak: slap it around a bit with a large trout [09:15] bruce: I think I'd be able to pull of that kind of switch with OpenBSD's pf, should be doable with other firewalls and such. [09:15] iszak: it shouldn't have stopped responding :l it's got like a octocore and 16 GB of RAM with a load of < 1 [09:16] bruce: maybe it got bored? [09:16] bruce: core the size of a planet and all that? [09:16] iszak: and started to do some grid computing? [09:16] mscdex: it started playing tic-tac-toe against itself [09:17] iszak: my god [09:17] iszak: think of all the requests not being handled. [09:18] bruce: shoulda used EC2. [09:18] mscdex: The only winning move is not to play. [09:18] bruce: at least then you couldn't get fired. [09:18] iszak: I can't get fired. [09:18] iszak: this is my server, for my site. [09:19] mscdex: heh [09:19] iszak: It gets like 80,000 unique / month, not too bad. [09:19] bruce: mscdex - want to play a game of chess? [09:19] bruce: that was a War Games reference, was it not? [09:20] mscdex: yes, as was the tic-tac-toe comment ;-) [09:20] chapel: what site iszak ? [09:20] iszak: doesn't matter, it's not on node.js [09:20] bruce: yeah, I thought so [09:21] iszak: it's with PHP, I was contemplating switching to node.js but it'd be a massive rewrite. [09:21] iszak: and there's really no structure in coding in node.js yet IMHO, so it'd be like spaghetti code. [09:21] mscdex: mmm italian [09:21] iszak: UGH [09:22] chapel: well I still want to know your site :P [09:22] bruce: iszak - http://developer.yahoo.com/yui/theater/video.php?v=yuiconf2010-croucher [09:22] chrischris has joined the channel [09:22] CIA-54: node: 03Ryan Dahl 07master * r953561a 10/ (lib/tls.js test/simple/test-tls-client-verify.js): Factor out CryptoStream.end; support data on end() - http://bit.ly/ic2Ezy [09:22] bruce: some people claim spaghetti shouldn't be an issue in node.js at least [09:22] CIA-54: node: 03Ryan Dahl 07master * r66767ed 10/ lib/tls.js : Add CryptoStream.destroy() - http://bit.ly/escCe5 [09:23] iszak: bruce, thanks. [09:23] bruce: don't thank me unless you can follow his code ;) [09:23] iszak: the guy reminds me of jamie oliver. [09:23] SubStack: no structure what? [09:23] chapel: yeah I dont think it is a big deal unless you are releasing the code publicly [09:23] SubStack: what does that even mean [09:24] bruce: SubStack - you're suggesting you've never seen JS spaghetti? [09:24] bruce: it's some bad stuff. [09:25] SubStack: but you've got lambdas so you can make whatever abstractions you need [09:25] iszak: i am so pissed atm. [09:28] bruce: SubStack - Yes, I'm sure you're right. I'm low on the learning curve for that stuff myself. [09:28] bruce: My problem, not node.js's or JavaScript's. [09:29] aurynn: but spaghetti code is so much FUN [09:29] aurynn: D: [09:29] bruce: Sure, as long as someone else gets to maintain it. :) [09:30] iszak: Okay [09:30] iszak: so people tell me about this cloud mumbo jumbo, do I only pay for what I use? and how is this measured? [09:31] SubStack: iszak: somebody from the cloud provider stands over your shoulder with a stopwatch and a clipboard [09:31] iszak: i like the sound of that. [09:31] iszak: no but I'm serious, how does it work. [09:31] SubStack: price per hour mostly [09:32] iszak: but my site never sleeps, that's the thing. [09:32] SubStack: and bandwidth and disk space [09:32] ewdafa has joined the channel [09:32] iszak: like there is ALWAYS someone hitting my site, ALWAYS. [09:32] SubStack: well, it's useful if your tech needs multiple servers [09:32] SubStack: and can shard painlessly, perhaps automatically [09:33] aurynn: the cloud works in that you pay for the capacity you use [09:33] bruce: I'd say clouds are best for variable loads. If you've got a fairly steady load, I'm not sure the economics work out in a cloud environment. [09:34] jchris has joined the channel [09:34] steffkes has joined the channel [09:37] bentomas has joined the channel [09:37] iszak: WOO load average: 9.30, 8.52, 5.07 [09:38] mytrile has joined the channel [09:38] chapel: wow [09:38] chapel: thats a lot [09:38] iszak: yep [09:38] chapel: is your site custom? [09:38] iszak: custom built? [09:38] iszak: yes. [09:38] chapel: yeah [09:38] chapel: all php? [09:38] iszak: ya with APC. [09:38] chapel: hmm, you tried php-fpm? [09:38] iszak: I'm using that. [09:38] iszak: nginx + php-fpm [09:38] chapel: nginx [09:38] iszak: Way ahead of you. [09:39] chapel: ah, did you notice improvements? [09:39] iszak: no. [09:39] iszak: the old server was running cPanel (because of the partner which I had to buy out) [09:39] iszak: so it's hard to compare. [09:39] chapel: ah [09:39] fly-away has joined the channel [09:39] chapel: are you running php+db on the same machine? [09:40] yozlet has joined the channel [09:40] iszak: unfortunately so. [09:40] iszak: but I doubt db would cause that much of a bottleneck [09:40] iszak: from < 1 to ~8 [09:40] iszak: Just plain MySQL with MyISAM (mostly SELECTS than UPDATES/DELETES) [09:40] chapel: if you are having performance issues though, best to separate the two [09:40] iszak: well this is the first time. [09:41] iszak: i don't even run a DNS or Mail server on it [09:42] iszak: seems to be going down [09:43] chapel: are you profiling mysql? [09:43] iszak: no, however I was in the process of profiling the app with xdebug [09:43] chapel: it could just be an oddity, or a hardware issue [09:43] iszak: locally though. [09:44] CIA-54: node: 03Ryan Dahl 07master * r6636bfa 10/ lib/tls.js : TLS: Simplify code from suck and blow - http://bit.ly/iio599 [09:45] iszak: yay [09:45] iszak: SSH froze again [09:46] ryah: i like this cryptostream abstraction [09:46] iszak: Wrote into support, got a 4 minute reply of "I am checking this, kindly hold on" now it's nearly 20 minutes later and nothing. [09:48] bentomas has left the channel [09:49] kkaefer: is there currently a way to switch to an encrypted connection from a plaintext connection? [09:49] kkaefer: e.g. for STARTTLS in imap [09:50] ryah: kkaefer: on head there is [09:50] ryah: it's not a very pretty api though [09:51] ossareh_ has joined the channel [09:51] kkaefer: I'd have to run [09:51] kkaefer: pair.encrypted.pipe(socket); [09:51] kkaefer: socket.pipe(pair.encrypted); [09:51] kkaefer: ? [09:51] bruce: gotta run. nice chatting with you all! [09:52] ryah: kkaefer: yeah, basically [09:52] ryah: kkaefer: https://github.com/ry/node/blob/6636bfaa0ab3005ae50219e7ebe06fee5f50ff3f/lib/tls.js#L614-640 [09:52] ryah: kkaefer: something along those lines [09:52] ryah: create a pair, pipe it [09:52] ryah: (in both directions) [09:52] ryah: then wait for pair to emit "secure" [09:52] ryah: (that means the handshake is done) [09:52] ryah: and use pair.cleartext from then on [09:52] kkaefer: ok... are there any plans to provide a better api for that? [09:53] ryah: kkaefer: yeah, seems like it's needed [09:53] kkaefer: i.e. is there someone working on that? [09:53] ryah: cleartext = tls.upgrade(socket, function () { /* after handshake */ }); [09:53] ryah: ? [09:54] ryah: just trying to think of a decent api [09:55] romeo_ordos has joined the channel [09:55] kkaefer: hm [09:55] kkaefer: what about using a regular (non-tls) server [09:55] breccan_ has joined the channel [09:55] romeo_ordos has left the channel [09:55] kkaefer: and adding a function that transforms it to a tls server [09:55] kkaefer: not sure if thats feasible though [09:55] kkaefer: but it'd seem most natural [09:56] ryah: like what? [09:56] ryah: would you really want to upgrade a whole server? [09:56] SubStack: not so keen on this server module pattern sh1mmer is advocating [09:56] kkaefer: well, the way STARTTLS usually works is that you open a plaintext connection with the server [09:56] kkaefer: the server announces its features [09:56] SubStack: why use patterns when you can abstract them out into libraries? [09:56] kkaefer: and if it supports STARTTLS, the client upgrades to TLS [09:57] ryah: kkaefer: right - that's per connection [09:57] ryah: kkaefer: or maybe i don't understand what you're suggesting. [09:57] ryah: kkaefer: do a gist :) [09:57] kkaefer: yeah, per connection [09:58] noahcampbell has joined the channel [10:00] derren13 has joined the channel [10:06] zomgbie has joined the channel [10:06] sh1mmer: SubStack: specifically? [10:08] ntelford has joined the channel [10:08] jchris has joined the channel [10:10] mscdex: yeah it'd be nice to an easy api to do STARTTLS in node-imap [10:10] mscdex: *have [10:10] SubStack: sh1mmer: instead of making that big hairy skeleton, why not write a module that takes a builder function as an argument? [10:10] sechrist: wow node-canvas is fast [10:11] SubStack: then you can build on previous work without having to start from a messy canvas [10:11] sechrist: with simple stuff anyway [10:11] sh1mmer: SubStack: what do you mean by builder function? [10:11] sechrist: @substack that was my first idea for improving performance of bufferlist [10:12] SubStack: perhaps a function that takes in a Request function as a handler [10:12] sechrist: have like a bufferpool [10:12] sechrist: lol [10:12] sechrist: have you done any simple tests with it? [10:12] sh1mmer: SubStack: you don't have to use the whole skeleton [10:12] sh1mmer: but the point is to logically organise [10:12] SubStack: sh1mmer: it's more a rejection of skeletons [10:12] sh1mmer: so that it's easy to follow the flow of callbacks [10:12] sh1mmer: and you get a sense of ownership [10:13] sh1mmer: so if I'm doing X is belongs to this set of things [10:13] SubStack: I don't see the point of skeletons where higher-order functions do the trick without having to duplicate code later [10:13] jetienne has joined the channel [10:15] SubStack: more basically, I see a design pattern ripe for destruction by some higher-order combinator [10:15] sh1mmer: SubStack: I'm happy to be wrong [10:15] sh1mmer: do you have some examples I should look at? [10:16] CIA-54: node: 03Ryan Dahl 07master * re3d1808 10/ (4 files in 2 dirs): [10:16] CIA-54: node: Rename node::SecureStream to node::crypto::Connection [10:16] CIA-54: node: node::SecureStream is definitely not a "stream" in the Node sense. Renaming [10:16] CIA-54: node: it to avoid ambiguity. (Adding namespace to not confuse with some other [10:16] CIA-54: node: Connection object.) - http://bit.ly/gB8xlf [10:16] qFox has joined the channel [10:16] sh1mmer: SubStack: I mean, you could hang your higher-order functions off the skeleton as a logic place to collect the ones associated with different parts of the system [10:17] sh1mmer: the goal was to create a way that the code "defined" the life-cyles [10:17] sh1mmer: so that even though it isn't "linear" because of the callbacks it was still easy to follow [10:17] SubStack: well this is a fun thread: http://stackoverflow.com/questions/327955/does-functional-programming-replace-gof-design-patterns [10:17] SubStack: life cycles? [10:17] sh1mmer: SubStack: Did you see that fun Koan from HackerNews about Closures vs. Objects? [10:18] sh1mmer: A request has a life-cycle [10:18] sh1mmer: the things that need to be done to do that request [10:18] sh1mmer: the point was to associate all of those things in one place [10:18] SubStack: haven't read the closures vs objects thing but I can imagine how the argument might go [10:18] SubStack: since you can emulate objects with closures but not vice-versa [10:18] sh1mmer: http://people.csail.mit.edu/gregs/ll1-discuss-archive-html/msg03277.html [10:19] sh1mmer: last paragraph after the *** [10:19] SubStack: my sense of aesthetics has really been warped by doing lots of haskell [10:19] sh1mmer: ah well... [10:19] sh1mmer: it's been ages since I did any Haskell [10:20] sh1mmer: I'm going to do the 7 langauges in 7 weeks book soon [10:20] sh1mmer: maybe starting at christmas [10:20] ntelford has joined the channel [10:22] SubStack: oh and here is an example of something related to abstracting over a common module design I've been working on lately: https://github.com/substack/node-chainsaw [10:22] SubStack: same kind of approach I think would be useful for attacking the server spaghetti problem [10:23] romeo_ordos has joined the channel [10:23] romeo_ordos has left the channel [10:24] SubStack: basically a module that generates a DSL to solve the secondary problem [10:27] faust45 has joined the channel [10:27] CIA-54: node: 03Ryan Dahl 07master * r5bdcec6 10/ doc/api/tls.markdown : Add docs for tls.connect() - http://bit.ly/eK1X1Z [10:29] SubStack: I guess mostly I'm just not satisfied until the complexity is all packaged up and on npm where I don't need to look at it anymore [10:30] chapel: so explain the main use cases for chainsaw and seq SubStack ? [10:31] SubStack: chainsaw is for building modules with fluent, chainable interfaces [10:32] SubStack: Seq is built with chainsaw [10:32] SubStack: so is node-binary now too [10:33] peutetre has joined the channel [10:33] SubStack: Seq is just a flow control library like Step, except it's chainable instead of taking lists and it has some functions to manage parallel operations on lists [10:33] CIA-54: node: 03Ryan Dahl 07master * rc9e5cfc 10/ (5 files): Random doc fixes - http://bit.ly/eBV2vI [10:34] sh1mmer: SubStack: tbh I don't find that heavy chaining style very readable [10:34] SubStack: I do like event emitters for the server stuff though [10:34] sh1mmer: and I don't think it's always easy to maintain [10:34] sh1mmer: but that's me [10:35] SubStack: sh1mmer: it keeps the logic flatter at least [10:35] SubStack: like this: https://github.com/substack/rowbit/blob/master/bin/server.js [10:35] SubStack: if you have a bunch of actions you want to do in parallel it's great [10:35] sh1mmer: sure [10:35] SubStack: and that is the main use-case for seq [10:36] sh1mmer: if that works for you, great [10:36] SubStack: I like functional pipeline style because it removes points from the computation [10:36] chapel: I have a usecase for it [10:36] SubStack: it's not for everyone, certainly [10:36] chapel: for processing data from an api [10:36] SubStack: if you like haskell though, it's superficially rather like a monad [10:37] sh1mmer: right [10:37] chapel: I have been doing the flow manually, but it just isn't working as expected [10:37] stride: morning guys [10:37] iszak: chapel, want an update [10:37] chapel: sure [10:37] sh1mmer: SubStack: I think the main thing is like any tool it can be over used [10:37] sh1mmer: SubStack: I feel like using it too much makes code harder to read [10:38] SubStack: sometimes, but then for some stuff it's really appropriate [10:38] sh1mmer: oh definately [10:38] SubStack: like the rfb decoder I made with bufferlist [10:38] SubStack: it's basically one huge nested function chain [10:38] SubStack: but it's been super easy to add stuff [10:39] tim_smart: Nested functions can lead to memory problems :/ [10:40] sh1mmer: ok [10:40] sh1mmer: I'm going to bed [10:40] sh1mmer: since it's 2.30 and I just finished the code I was writing [10:40] sh1mmer: night all [10:40] SubStack: tim_smart: nested like this https://github.com/substack/node-rfb/blob/master/lib/rfb.js#L185 [10:41] SubStack: not really "nested" in the usual javascript sense [10:41] chapel: iszak: update? [10:42] felixge has joined the channel [10:42] felixge has joined the channel [10:42] murz has joined the channel [10:43] jchris has joined the channel [10:45] jetienne: anybody familiar on how nodejs install itself when "make install" is done? [10:45] jetienne: in particular, how the libraries are handled ? is it static linking ? or more shared lib in its own dir ? [10:46] CIA-54: node: 03Ryan Dahl 07master * ra59483b 10/ (lib/tls.js test/simple/test-tls-junk-closes-server.js): TLS: server should die on junk - http://bit.ly/fxRL3t [10:48] lianj: jetienne: try it yourself, export PREFIX=test_install_dir; ./configure; make; make install; ls test_install_dir [10:48] Blink7 has joined the channel [10:49] jetienne: lianj: it seems to be static linking. but would like to be sure [11:01] sechrist: nice [11:01] sechrist: I have canvas animations rendering in node [11:01] sechrist: and showing in my browser over websockets [11:04] SubStack: ACTION does that [11:04] SubStack: sechrist: base64? [11:04] sechrist: yeah fuck that [11:04] sechrist: it's consuming all my cycles [11:04] sechrist: 70% of the cpu usage is that shit [11:04] SubStack: ! [11:05] sechrist: unless socket.io is adding that [11:05] sechrist: and doubt it [11:05] sechrist: (I took out the client send and cpu usage dropped to nearly nothing) [11:05] jchris has joined the channel [11:05] sechrist: pretty much dropped from 60% of one of my cores.. to 4.2% [11:06] jan____ has joined the channel [11:07] sechrist: actually it's exactly 70% [11:07] sechrist: now that I look at it [11:07] sechrist: hah [11:09] aklt: yay [11:10] sechrist: wow I can calculate cpu usage based on fps [11:10] danslo_ has joined the channel [11:11] sechrist: SubStack: are you using a library on top for animations? I changed a few lines of DoodleJS and got it running [11:11] sechrist: Processing.JS looks promising but it looks tied to a browser pretty hard [11:12] SubStack: nope, just regular canvas [11:12] sechrist: I'm not gonna make my guys write GUI in pure canvas [11:12] sechrist: I gotta find something [11:13] sechrist: http://glimr.rubyforge.org/cake/canvas.html#Circles omg that cool [11:13] jetienne: you do anymation in node.js ? how do you display the result? [11:13] sechrist: right now, websockets to a browser [11:13] sechrist: in the actual use case i'm trying to fill, it will be over a video infrastructure [11:15] herbySk has joined the channel [11:16] sechrist: wooo cake is a lot of code [11:17] zorzar_ has joined the channel [11:18] SubStack: raphael is fun too [11:18] sechrist: wait you got raphael to work in njs? [11:18] SubStack: on the browser side [11:18] sechrist: that's my favorite but it's based around svg [11:18] sechrist: agh [11:18] SubStack: I thought that was what you were doing [11:19] sechrist: nah I'm rendering in nodejs [11:19] sechrist: http://jsbin.com/doodle-demo-2/2 [11:19] sechrist: I have this rendering in njs and sending it's frames to a browser [11:20] icono has joined the channel [11:22] augustl has joined the channel [11:27] killfill has joined the channel [11:28] stagas has joined the channel [11:29] wasabist has joined the channel [11:32] killfill has joined the channel [11:33] danslo_ has joined the channel [11:35] christophsturm has joined the channel [11:36] stephank has joined the channel [11:40] andrzejsliwa has joined the channel [11:40] mraleph has joined the channel [11:46] torvalamo has joined the channel [11:47] Garo_: o/ [11:50] jchris has joined the channel [11:51] killfill has joined the channel [11:54] stagas: is there a twitter-node that works with v0.3.x? [11:54] mattcodes has joined the channel [11:55] stagas: or another module with a firehose? [11:55] wasabist has joined the channel [11:58] torvalamo has joined the channel [12:00] xla has joined the channel [12:00] stagas: nm this one works: https://github.com/patmcnally/twitter-node [12:00] chapel: stagas [12:00] chapel: been waiting all day for you [12:00] chapel: :) [12:00] stagas: chapel: I'm here! :P [12:00] chapel: so thanks for the help last night [12:00] stagas: chapel: did you get it working then? [12:00] chapel: yeah, used timeouts [12:01] chapel: just wrapped the db.set in a timeout, and that block in an if statement [12:01] stagas: cool [12:02] chapel: not pretty https://gist.github.com/7ef763722a2b484c5170 [12:02] chapel: but it works :) [12:03] killfill has joined the channel [12:04] stagas: hehe [12:04] chapel: any tips to make the code better? [12:04] chapel: like I see people doing shorter if statement code [12:04] chapel: but I never understood it [12:09] stagas: chapel: here https://gist.github.com/8b9ff86cecea1e8bf36e [12:10] killfill has joined the channel [12:10] stagas: chapel: though it's a bit different [12:10] Blink7 has joined the channel [12:11] chapel: so basically if it keeps getting called, it doesn't fire the db set [12:11] stagas: chapel: yours will save every 10 secs, mine will save after 10 secs of inactivity :) [12:11] chapel: maybe there could be a fall back, of a longer timeout, in case something does happen [12:12] chapel: I like your version, and its cleaner [12:12] spyrosl has joined the channel [12:12] chapel: mine definitely is a bruteforce method [12:13] chapel: really though, the stats aren't that important in the grand scope of things [12:13] chapel: so losing some isn't a huge deal [12:13] SubStack: hooray now I have a benchmark that tells me that node-binary is really faster than bufferlist/binary [12:13] chapel: :) [12:13] chapel: did you write the benchmark yourself? [12:14] SubStack: yes [12:14] SubStack: but I was also trying to show that the new code was faster, so I might be running into expectation bias [12:14] stagas: chapel: I've edited now it's the same [12:15] stagas: chapel: the one advantage is that you now have a saveDb function that you can call from elsewhere when you want to be sure something gets saved without a timeout [12:15] andrzejsliwa has joined the channel [12:15] chapel: yeah [12:15] chapel: I am wondering if I can use a similar system for loading user data [12:16] chapel: so instead of reading the db every time someone accesses a part that needs data from the db, it would read once, and sit in memory for a set amount of time, and then be flushed [12:16] oal has joined the channel [12:16] femtoo has joined the channel [12:17] stagas: chapel: edited again now it resets the timeout when it's actually saved [12:17] chapel: nice [12:17] SubStack: chapel: that sounds a little like permafrost ^_^ [12:18] chapel: permafrost? [12:18] chapel: ive heard the name [12:18] SubStack: db experiment of mine [12:18] chapel: (in a node sense) [12:19] SubStack: reads everything into memory and then writes changes to disk as the data structures are modified [12:19] SubStack: using harmony proxies [12:19] chapel: as it stands, my app hits the db every time someone accesses a url that is tied to the db [12:19] SubStack: I still need to get it stable and to support more key/value stores [12:20] SubStack: after I write this proxy thing for browserling [12:20] chapel: which normally wouldn't be a big deal, but the point of the app is to redirect to different images, so if a user has their image on 10 sites, and there are hundreds of people, the load can be huge [12:23] SubStack: yep good to have that stuff in memory [12:23] SubStack: let the OS figure out how to swap pages to disk [12:24] chapel: I was thinking, I could use chaos' watch [12:24] chapel: as added security that data is always fresh [12:25] chapel: stagas: what are hset/get and so on? [12:26] SubStack: key/value stores are pretty all over the place interface-wise right now [12:27] stagas: chapel: hkeys are like a collection similar to redis' hkeys. it has an extra 'field' parameter. in reality it creates a directory 'key' and puts all 'fields' as files. but watch won't work there iirc [12:27] chapel: ah, just curious [12:28] chapel: I dont mind doing the object stuff myself [12:28] chapel: key/val [12:28] stagas: chapel: jkeys is like node-dirty (json based files) but spread to several files, it's only good if the values are small and you have a lot of keys [12:28] chapel: though, is using json okay? is there a better approach? [12:28] SubStack: stagas: sounds excellent! [12:28] SubStack: for my purposes [12:29] chapel: https://github.com/stagas/chaos [12:30] stagas: SubStack: it's append only though, if you set a lot it'll grow and grow and become really slow at some point :) no delete, you can only jset with null or something :) [12:30] SubStack: oh that is a little bit pesky [12:30] SubStack: are there any compaction methods? [12:31] stagas: SubStack: not yet but you can write one and send a pull :) [12:31] SubStack: noted! [12:32] chapel: so anyways, is using json advisable stagas ? [12:32] stagas: but really you shouldn't use chaos for any real apps :) it's ok for dev but you should switch to a real db on production [12:32] chapel: or should I use csv or something, maybe custom regex store [12:32] chapel: you just don't want liability :P [12:33] SubStack: stagas: great, people shouldn't use permafrost yet either [12:33] SubStack: so chaos seems plenty good enough [12:33] SubStack: must get sleep [12:33] stagas: I just made it so I can build up quickly apps without messing with dbs, it can break any time :P [12:33] chapel: Im liking it [12:34] chapel: I haven't had any issues with chaos [12:34] chapel: memory usage is stable [12:35] stagas: chapel: json is good enough [12:35] SubStack: being able to prototype with stand-in databases is super useful I think [12:36] killfill has joined the channel [12:36] stagas: SubStack: that's the point, I also wanted it to be similar to redis so you could switch to it later [12:38] chapel: yeah, that was my thought behind using chaos [12:39] chapel: performance wise, redis is the only thing that would work large scale [12:39] jchris has joined the channel [12:39] ph^ has joined the channel [12:39] omni5cience_ has joined the channel [12:39] chapel: and chaos really fit the bill, and has been super simple to prototype with [12:43] mscdex: "Yeah hi Peter, whaaaat's happening. If there's any way to use a codepage other than 1252 that would be great. Thaaaanks." [12:43] mscdex: haha [12:43] mscdex: gotta love the pidgin developers [12:45] liar has joined the channel [12:46] MattJ has joined the channel [12:47] killfill has joined the channel [12:51] altamic has joined the channel [12:59] kriszyp has joined the channel [13:02] killfill has joined the channel [13:03] stephank has joined the channel [13:04] stephank has joined the channel [13:05] spetrea has joined the channel [13:14] killfill has joined the channel [13:14] andrzejsliwa has joined the channel [13:15] jchris has joined the channel [13:19] killfill has joined the channel [13:22] jsj has joined the channel [13:36] steffkes has joined the channel [13:38] lstrojny has joined the channel [13:41] fangel has joined the channel [13:42] pekim has joined the channel [13:45] mikew3c_ has joined the channel [13:45] Gruni has joined the channel [13:50] V1 has joined the channel [13:51] wasabist has joined the channel [13:52] jchris has joined the channel [13:54] Aikar: mscdex: thank you [13:55] sveimac has joined the channel [13:58] romeo_ordos has joined the channel [13:58] romeo_ordos has left the channel [14:02] killfill has joined the channel [14:04] mscdex: anyone know where i can find a good function that strips html but keeps any text content contained within? [14:06] ysynopsis has joined the channel [14:06] V1: why don't you just use a regexp? [14:07] killfill has joined the channel [14:07] tahu has joined the channel [14:08] V1: Something like: /(?<=^|>)[^><]+?(?=<|$)/gi would read out all the content between the tags mscdex [14:08] mscdex: hmm [14:12] V1: or if you really want to remove all the tags.. str.replace( /<[^<]+?>/g, '' ) mscdex [14:17] jashkenas has joined the channel [14:19] jvolkman has joined the channel [14:19] springify has joined the channel [14:27] pt_tr has joined the channel [14:29] stagas has joined the channel [14:30] mraleph: V1: sanitizing HTML with regexpes opens the Gates of Hell. [14:30] mraleph: v8:"<< >welcome-to-hell>".replace( /<[^<]+?>/g, '') [14:30] v8bot: mraleph: "" [14:30] mraleph: V1: ^^^ [14:31] V1: mraleph: that's not html ;), [14:31] mraleph: V1: Hell Markup Language :-) [14:32] Aikar: hopefully twitter will be nice, had to submit a request to claim an inactive name. [14:33] spetrea: v8bot: '<'+'3' [14:33] v8bot: spetrea: Use v8: to evaluate code or "`v commands" for a list of v8bot commands. [14:33] spetrea: v8:'<'+'3' [14:33] v8bot: spetrea: "<3" [14:34] spetrea: v8: 22*11 % 7 [14:34] v8bot: spetrea: 4 [14:36] jchris has joined the channel [14:40] torvalamo has joined the channel [14:43] andrzejsliwa has joined the channel [14:44] ph^_ has joined the channel [14:46] indutny has joined the channel [14:47] matt_c has joined the channel [14:48] jashkenas has joined the channel [14:48] ph^ has joined the channel [14:50] springify has joined the channel [14:51] faust45 has joined the channel [14:54] MattJ has joined the channel [14:54] wdperson has joined the channel [14:56] Anti-X has joined the channel [14:57] ntelford has joined the channel [14:58] ph^ has joined the channel [15:03] lizza` has joined the channel [15:04] lizza`: hi all, is there any place i can see the nodejs knockout entries live? it all seemed to be taken down [15:04] pdelgallego has joined the channel [15:06] indutny: lizza`: http://swarmation.com/ [15:06] indutny: should work [15:06] felixge: mraleph: hi, you around? [15:06] felixge: mraleph: adding --trace-bailout --trace-opt produces no additional output for me [15:06] MattJ has joined the channel [15:06] felixge: mraleph: makes me think that no optimization / bailout is taking place? [15:06] mraleph: hmm. [15:07] felixge: the test is running for 4seconds, is that enough to trigger the optimizations? [15:07] mraleph: if trace-opt does not produce anything yep that means nothing gets optimized. [15:07] mraleph: 4 secs should be enough to optimize at least something. [15:08] mraleph: are you running 32bit version? [15:08] felixge: mraleph: yes, running on a 32bit Ec2 instance [15:09] felixge: mraleph: the code in question is mostly this: https://github.com/felixge/node-mysql/blob/master/lib/mysql/parser.js [15:09] felixge: I'm not familiar enough with the optimizations crankshaft does to judge if there should be some optimization attempts [15:10] springify has joined the channel [15:11] felixge: I mean the code is meant to be fairly optimized already, but I'm not sure if v8 would see it that way as well : ) [15:11] mraleph: he just profiles what functions are executed and then optimizes them [15:11] felixge: right, the parser.write function is definitely called a lot [15:11] felixge: well, probably ~thousands of times [15:13] felixge: mraleph: anyway, given that --trace_opt produces no output - it's safe to assume crankshaft shouldn't make things faster in that benchmark? [15:14] postwait has joined the channel [15:16] mraleph: yes. [15:16] felixge: ok, thanks [15:16] mraleph: but that's a bit strange that nothing get's optimized. [15:17] hellp has joined the channel [15:18] felixge: mraleph: erik asked me if I could derive a standalone v8 benchmark from my mysql driver [15:19] felixge: mraleph: but he never got back to my follow up email about it [15:19] felixge: mraleph: if there is still interest I can try to take some time to work on this at some point [15:19] mraleph: I will ask him on Monday. [15:19] mraleph: Maybe he just missed it. [15:20] felixge: mraleph: sounds great. I was about to write a little analysis for the node mailing list, but I guess I'll hold off until this has been analyzed further [15:21] cjm has joined the channel [15:21] felixge: mraleph: I might just have used the wrong email, I got it from some v8 readme or commit message [15:22] springify has joined the channel [15:22] jchris has joined the channel [15:23] Hello71 has joined the channel [15:23] Hello71 has joined the channel [15:25] mbrochh has joined the channel [15:32] Sembiance: So the V8 team has made it very clear that they do not intend to add support for JavaScript 1.7 or 1.8 features (http://code.google.com/p/v8/issues/detail?id=890) [15:32] meandi has joined the channel [15:32] Sembiance: meanwhile tracemonkey and other JS engines continue to add support for new javascript features. [15:33] Sembiance: Has anyone tried to make a node.js that sits on top of tracemonkey or squirrelfish? [15:33] MattJ has joined the channel [15:34] felixge: Sembiance: that would be a huge undertaking, but yes I think people have started such projects [15:34] eee_c has joined the channel [15:35] felixge: at least I think I've seen some stuff on GitHub [15:35] Sembiance: felixge: I wonder if it would be less work to patch V8 to suppor tthe new JavaScript 1.7 and 1.8 improvements [15:36] felixge: Sembiance: why would you want those? [15:36] Aria has joined the channel [15:36] Sembiance: felixge: the only feature I want right now is 'let' to allow me to set block level scope for variables [15:37] Sembiance: felixge: it would reduce the complexity of my code in terms of having closures inside of for loops [15:37] felixge: Sembiance: you might be better off simplifying your code instead of complicating the language : ) [15:38] felixge: Sembiance: but anyway, as far as node.js extending the V8 with new language constructs: It's not going to happen [15:39] felixge: Sembiance: This ruins a few of my dreams as well, like expanding an objects properties as variables in the current scope [15:39] felixge: Sembiance: but if you're planning to use node, you shouldn't hope for any language features outside of what v8 is offering [15:40] Sembiance: aye. unless I patched V8 myself and built node against it heh [15:40] felixge: Sembiance: that being said: CoffeScript is IMO a good drug for syntax sugar addiction [15:40] felixge: Sembiance: sure, have fun maintaining that :) [15:40] matjas has joined the channel [15:40] Sembiance: hehe [15:40] Sembiance: wishful thinking on my part ;) [15:41] Sembiance: felixge: I'm working on converting the back end to my site from apache+php+postgres to nginix+node.js+redis :) [15:41] arpegius has joined the channel [15:41] felixge: Sembiance: why? [15:43] izz has joined the channel [15:44] augustl has joined the channel [15:44] Sembiance: felixge: one my use of Apache/PHP/Postgres is vast overkill. I'm basically just making simple AJAX calls to update and fetch counters and lists. The site gets 3.7 million requests a month and the overhead for going through apache and php to postgres just to read a counter is too high [15:45] Sembiance: felixge: two, I want to use node.js and redis in future projects and converting an existing project to use them is a good way for me to get more familiar witht hem from both a development and production/maintenance standpoint [15:45] Sembiance: flexige: three, because it's exciting and fun :) [15:46] felixge: Sembiance: in that case: rock on : ). Sounds like a good use case [15:47] jashkenas: Sembiance: for the record -- CoffeeScript does handle the block-scope-variables-instead-of-closures-inside-of-for-loops-case. [15:47] Sembiance: felixge: nginix will server the static CSS/index.html/JS files. it will forward /node/* requests to a local node.js instance which will connect to redis. I'm thinking of using 'feugue' https://github.com/pgte/fugue so that if I have some bugs in my node.js server things can recover better :) [15:47] jashkenas: Sembiance: check out the difference between the main loop in this translation from Zepto. https://gist.github.com/736920 [15:48] Sembiance: jashkenas: I've had people tell me to check out coffeescript in the past, it seems to have some fans :) [15:49] matt_c has joined the channel [15:51] micheil has joined the channel [15:52] mattc has joined the channel [15:54] arpegius has joined the channel [16:00] demolithion has joined the channel [16:01] tahu has joined the channel [16:01] jchris has joined the channel [16:11] matjas has joined the channel [16:12] andrzejsliwa has joined the channel [16:13] stepheneb has joined the channel [16:14] isaqual has joined the channel [16:17] dnolen has joined the channel [16:19] trotter has joined the channel [16:27] Insanity5902 has joined the channel [16:27] aurynn has joined the channel [16:28] jherdman has joined the channel [16:30] datapimp has joined the channel [16:31] gf3 has joined the channel [16:38] arrty has joined the channel [16:39] jesusabdullah has joined the channel [16:39] c4milo1 has joined the channel [16:39] matt_c has joined the channel [16:40] cha0s has joined the channel [16:40] cha0s has joined the channel [16:42] spetrea has joined the channel [16:44] aconbere has joined the channel [16:45] possibilities has joined the channel [16:49] cronopio has joined the channel [16:51] andrzejsliwa has joined the channel [16:53] yarinb has joined the channel [16:58] murz has joined the channel [16:58] slaskis has joined the channel [17:00] bartmax has joined the channel [17:00] bartmax has joined the channel [17:01] V1 has joined the channel [17:08] davidascher has joined the channel [17:08] rhythm has joined the channel [17:09] bbttxu has joined the channel [17:10] rhythm: How do i get the first element of a variable? [17:11] indutny: what do you mean? [17:11] indutny: a[0] ? [17:11] rhythm: hm. [17:11] indutny: "1235".charAt(2) [17:12] rhythm: I want to add a watcher at jerk like 'command definition explanation about definition' [17:12] rhythm: but definition can have more than 1 word [17:12] rhythm: like [17:12] rhythm: command "definition a b c" explanation about definition [17:13] InsDel has joined the channel [17:14] rhythm: indutny got it? [17:15] sprout1 has joined the channel [17:15] rhythm: v8bot: a = "add \"testing one two three\" definition about testing one two three"; console.log(a[0] [17:15] v8bot: rhythm: Use v8: to evaluate code or "`v commands" for a list of v8bot commands. [17:15] rhythm: v8: a = "add \"testing one two three\" definition about testing one two three"; console.log(a[0] [17:15] v8bot: rhythm: SyntaxError: Unexpected end of input [17:15] rhythm: v8: a = "add \"testing one two three\" definition about testing one two three"; console.log(a[0]) [17:15] v8bot: rhythm: CONSOLE: ["a"], OUTPUT: undefined [17:15] Aria has joined the channel [17:16] indutny: you better use .charAt [17:16] indutny: v8: "add".charAt(0) [17:16] v8bot: indutny: "a" [17:16] indutny: or [17:16] indutny: v8: "add sub dub".explode(" ")[0] [17:16] v8bot: indutny: TypeError: Object add sub dub has no method 'explode' [17:16] indutny: v8: "add sub dub".split(" ")[0] [17:16] v8bot: indutny: "add" [17:16] rhythm: v8: a = "add \"testing one two three\" definition about testing one two three"; console.log(a.split(" ")[0]) [17:16] v8bot: rhythm: CONSOLE: ["add"], OUTPUT: undefined [17:17] rhythm: v8: a = "add \"testing one two three\" definition about testing one two three"; console.log(a.split(" ")[1]) [17:17] v8bot: rhythm: CONSOLE: [""testing"], OUTPUT: undefined [17:17] rhythm: it must catch testing one two three [17:18] Floxxx: v8: a = "add \"testing one two three\" definition about testing one two three"; console.log(a.split("\"")[1]) [17:18] v8bot: Floxxx: CONSOLE: ["testing one two three"], OUTPUT: undefined [17:19] indutny: Floxxx: "add \"a b c\" sub".match(/\"([^\"]*)\"/g) [17:19] Floxxx: v8: a = "add \"testing one two three\" definition about testing one two three"; console.log(a.split("\"")[1].split(" ")) [17:19] v8bot: Floxxx: CONSOLE: [["testing", "one", "two", "three"]], OUTPUT: undefined [17:19] indutny: v8: "add \"a b c\" sub".match(/\"([^\"]*)\"/g) [17:19] v8bot: indutny: [""a b c""] [17:19] yarinb has joined the channel [17:19] indutny: v8: "add \"a b c\" sub".match(/\"([^\"]*)\"/g)[1] [17:19] v8bot: indutny: undefined [17:19] indutny: v8: "add \"a b c\" sub".match(/\"([^\"]*)\"/g) [17:19] v8bot: indutny: [""a b c""] [17:21] dguttman has joined the channel [17:21] possibilities has joined the channel [17:21] jspiros has joined the channel [17:22] stepheneb has joined the channel [17:22] possibilities: in connect's session middleware the session is saved in the writehead hook... isn't there an edge case chance that it will take some time and not be ready by the next request? [17:23] Floxxx: possibilities: only if you do a request before it reaches writehead i'd say [17:24] rhythm: indutny how do i strip that " "s? [17:24] possibilities: i think it's happening in my tests [17:24] boaz has joined the channel [17:24] Floxxx: possibilities: that's possible, if you start flooding the server with concurrent requests it could happen [17:25] Floxxx: shouldn't happen in real life though, and if it does your code is doing something bad ;) [17:25] Floxxx: well [17:25] Floxxx: or connect is just crap that way ;) [17:26] possibilities: thanks floxxx, knowing is half the battle... or something (; [17:26] richcollins has joined the channel [17:26] Floxxx: but i've noticed the same when running nodeload [17:26] mgutz has joined the channel [17:26] indutny: rhythm: learn regexps [17:26] indutny: :) [17:26] indutny: v8: JSON.stringify("add \"a b c\" sub".match(/\"([^\"]*)\"/g)) [17:26] v8bot: indutny: "["\"a b c\""]" [17:26] indutny: fck [17:27] possibilities: for me it isn't actually the session, i have a database model that i'm using the same technique to save at the end of the request [17:27] kriszyp has joined the channel [17:27] rhythm: indutny the trouble is that definition must have quotes OR not [17:28] indutny: v8: "abc".match(/\b/) [17:28] v8bot: indutny: [""] [17:28] Floxxx: well yeh, if you start saving stuff in the db and you do another request while it hasn't done that yet, it will be bad for your data [17:28] indutny: v8: " abc ".match(/\b/) [17:28] v8bot: indutny: [""] [17:28] indutny: hm... [17:28] jspiros has joined the channel [17:29] c4milo2 has joined the channel [17:29] c4milo2 has left the channel [17:29] maushu has joined the channel [17:29] possibilities: yeah, i think i'll stop doing that (: one step closer to async thinking [17:30] Floxxx: that's the drawback of async coding, you can't execute in a serial way [17:30] Floxxx: you'll have to catch that in some way [17:30] rhythm: any tip, indutny? [17:31] Floxxx: just strip the quotes after the regexp? [17:31] possibilities: i can't wait for an async call in the writehead hook, or can i? [17:31] cardona507 has joined the channel [17:31] Floxxx: possibilities: no idea if you can add a listener to writehead [17:32] Floxxx: but that might be an option [17:32] dnolen has joined the channel [17:32] possibilities: thanks again, back to fiddling [17:32] Floxxx: np [17:37] sugardave has joined the channel [17:39] jakehow has joined the channel [17:40] matjas has joined the channel [17:41] matjas_ has joined the channel [17:43] Blink7 has joined the channel [17:48] bingomanatee: does anyone know if the request variable itself is available in views (in express) or do I have to embed it as a local to have access to it? [17:49] bingomanatee: I specifically want access to req.session [17:51] creationix has joined the channel [17:51] Floxxx: bingomanatee: doubt it's a global, so it will only be available if it's passed as a var [17:51] creationix has left the channel [17:52] bingomanatee: k thx [17:52] bingomanatee: for that matter -- is globals available inside templates? [17:53] bingomanatee: basically want to embed logged in user object for view (acutally view AND layout) object without having to repeat myself for ever request handle. [17:53] Floxxx: no idea tbh [17:54] rhythm: v8: "a s d".replace(/['"]/g,''); [17:54] v8bot: rhythm: "a s d" [17:54] rhythm: v8: "a s d".replace(/['"]/g,a); [17:54] v8bot: rhythm: ReferenceError: a is not defined [17:54] rhythm: v8: "a s d".replace(/['"]/g,'a'); [17:54] v8bot: rhythm: "a s d" [17:54] cloudhead has joined the channel [17:54] rhythm: v8: "a s d".replace(/['\"]/g,'a'); [17:54] v8bot: rhythm: "a s d" [17:55] markwubben has joined the channel [17:55] slaskis has joined the channel [17:55] indutny: rhythm: what are you trying to replace [17:55] indutny: ? [17:56] indutny: ' "text in quotes" '.replace(/"([^"]+)"/g, '$1'); [17:56] rhythm: strip " " [17:56] indutny: v8: ' "text in quotes" '.replace(/"([^"]+)"/g, '$1'); [17:56] v8bot: indutny: " text in quotes " [17:56] indutny: v8: '"text in quotes"'.replace(/^"([^"]+)"$/g, '$1'); [17:56] v8bot: indutny: "text in quotes" [17:56] indutny: cloudhead: hey! how it's going? [17:56] matt_c has joined the channel [18:03] isaacs has joined the channel [18:03] arrty has joined the channel [18:07] arpegius has joined the channel [18:10] jashkenas has joined the channel [18:12] rhythm: indutny Is insert a char to split like 'command topic bla bla @ definition [18:12] rhythm: a better way to handle? [18:14] sudoer has joined the channel [18:14] tylerstalder has joined the channel [18:15] aconbere has joined the channel [18:19] jmar777 has joined the channel [18:21] femtoo has joined the channel [18:23] indutny: rhythm: may be [18:23] indutny: just learn regexps [18:23] indutny: and javascript [18:23] indutny: :) [18:23] rhythm: ok. [18:24] wasabist has joined the channel [18:26] possibilities has joined the channel [18:28] hamcore: indutny, http://pastie.org/1368331 [18:28] hamcore: indutny, is there a way to reload json on the fly? [18:28] polotek has joined the channel [18:29] hamcore: (its an irc bot) [18:29] indutny: arghh! [18:29] indutny: comma first [18:29] indutny: damn it [18:29] hamcore: comma first? [18:29] indutny: comma first style [18:29] polotek: isaacs: you there? [18:29] isaacs: yessir [18:30] polotek: is there a way to have nave build node_g? [18:30] liar has joined the channel [18:30] hamcore: indutny: better? [18:30] isaacs: polotek: that's a good idea. i think you need to supply the --debug flag to the ./config call. [18:30] isaacs: polotek: nave should just do that. [18:30] isaacs: polotek: if you send me a pull req, i'll accept and publish it. [18:30] polotek: isaacs: agreed [18:31] isaacs: polotek: it's just one shell script. grep through it for "./configure", i think it's only in one or two places. [18:31] polotek: isaacs: word [18:31] isaacs: ACTION doesnt' touch nave much. it Just Works. [18:32] isaacs: polotek: you may also need to have it manually move the node_g file to $install_target/bin [18:32] isaacs: (not sure on the name of the var, but i think `make install` doens't actually install node_g` [18:32] jashkenas: isaacs: you seem to be able to push out upgrades to npm frequently ... what's your secret? Got a handy "make release" script stashed somewhere? [18:33] jchris has joined the channel [18:33] polotek: isaacs: it does [18:33] isaacs: polotek: oh, ok, then [18:33] indutny: he is using "make it work without bugs" command [18:33] indutny: suppose [18:33] isaacs: jashkenas: nah. that's a good idea, though [18:34] isaacs: jashkenas: i actually kinda like doing it manually. change the package.json, make sure it passes all my tests, git tag -s vWhatEver, `npm publish` [18:34] indutny: isaacs: may be add auto-versioning? [18:34] isaacs: indutny: `npm version` [18:34] jashkenas: isaacs: darn. [18:34] isaacs: it doesn't sign commits, though, because that fails if you don't have a key setup [18:34] indutny: like $VERSION$ in version property [18:35] isaacs: indutny: npm version 1.2.3 [18:35] indutny: ok ok [18:35] indutny: :) [18:35] isaacs: will bump the package.json, commit it, tag it [18:35] indutny: thanks [18:35] davidascher has joined the channel [18:39] polotek: did you know there's no way to get the open file dialog in os x to show hidden files/folders [18:39] polotek: how awesome is that [18:39] isaacs: polotek: there is, i forget how to do it, though.. [18:39] possibilities: some apps have a lil checkbox, there's a way to see them everywhere too [18:39] polotek: all I found was Shift-Cmd-G will let you enter a path manually [18:40] polotek: possibilities: you can turn it on in Finder proper [18:40] polotek: that works fine [18:40] polotek: but the open dialog [18:40] polotek: in other apps [18:40] polotek: I've had no luck [18:40] matjas has joined the channel [18:40] isaacs: polotek: Cmd-Shift-. [18:41] davidascher has joined the channel [18:41] possibilities: ah rite, that [18:41] isaacs: File > Open > cmd-shift-period, voila [18:41] jashkenas: Just to throw it out there one last time: there's no chance in hell that Node will change process.ARGV to reflect the arguments you actually pass to the script, at this point, is there? [18:41] isaacs: jashkenas: nah, it is what it is [18:41] isaacs: jashkenas: process.argv is the arguments passed to the process, just like it is in c programs. [18:41] indutny: jashkenas: use optimist, @SubStack [18:41] isaacs: jashkenas: ruby is actually the oddball there. [18:41] indutny: npm install optimist [18:41] jashkenas: lowercase is different? [18:41] isaacs: jashkenas: lowercase is preferred, but they're the same object. [18:42] isaacs: jashkenas: like process.env vs process.ENV [18:42] jashkenas: Right -- I mean having the first two arguments be useless... [18:42] isaacs: jashkenas: they're not useless, though [18:42] isaacs: they're reality [18:42] isaacs: it's a standard that's been passed down through the ages. [18:42] jashkenas: Not useless, but should be exposed in a different fashion... [18:42] jashkenas: But thanks for the info -- I just wanted to ask. [18:42] isaacs: sure, like maybe process.execPath and __filename... [18:43] isaacs: they're useless in C programs, too. [18:43] bingomanatee_ has joined the channel [18:43] isaacs: and don't even *try* to compare to {ba,}sh's "nameless" variable. [18:43] isaacs: $@, $* etc [18:44] indutny: isaacs: can you enable jsonp for your repo? [18:44] isaacs: indutny: sure. http://registry.npmjs.org/npm/latest/-/jsonp/foo [18:44] isaacs: indutny: tack /-/jsonp/FunctionName onto any registry url [18:45] jakehow has joined the channel [18:45] zomgbie has joined the channel [18:46] polotek: isaacs: can I just email you this patch instead? [18:48] tapwater has joined the channel [18:48] polotek: nm, I'll fork [18:54] polotek: can you only send pull requests from the master branch? [18:54] kjeldahl has joined the channel [18:54] ryah: ACTION declares tls kind of working [18:55] tylerstalder has joined the channel [18:55] ryah: ACTION goes off to use it [18:55] achiu has joined the channel [18:56] polotek: apparently you can only send pull requests from master [18:56] Hello71 has joined the channel [18:57] markwubben has joined the channel [18:57] polotek: I'm sure I'm missing something about it, but I don't like the github pull request system [18:57] polotek: isaacs: anyway, you got it [18:57] isaacs: polotek: sure, i speak patch. [18:58] isaacs: polotek: just please make it a git format-patch, not some random diff. [18:58] isaacs: i like giving credit :) [18:58] polotek: too late, you got a pull request [18:58] isaacs: ha [18:58] isaacs: that's fine, too [19:03] richcollins has joined the channel [19:06] xla has joined the channel [19:06] matt_c has joined the channel [19:07] jchris has joined the channel [19:08] andrzejsliwa has joined the channel [19:10] ajpi has joined the channel [19:11] dguttman has joined the channel [19:16] Kirsch has joined the channel [19:17] Kirsch: hey all - i'm trying to use the node-inspector and whenever i visit the site, it crashes node inspector saying "debug" is undefined, (trying to do debug.request) i completely removed node and reinstalled it and its still not working, i have been able to use it in the past (yesterday in fact) and now it wont start up. any ideas? [19:17] yozlet has joined the channel [19:18] Kirsch: here's the exception: http://pastebin.com/4HqErxLD [19:18] tekky has joined the channel [19:21] polotek: Wow, instruments on OS X is pretty awesome [19:21] mape: Used with node? [19:21] polotek: mape: yep [19:22] polotek: I've spent the last hour getting to run properly [19:22] polotek: but now that it does, I'm getting some sweet data [19:22] mape: Like? :) [19:22] polotek: memory leaks :) [19:22] polotek: lots of em [19:22] seanbo has joined the channel [19:22] polotek: oh, I guess I should point out that it's not tracing the js [19:22] polotek: only hte C/C++ stuff [19:22] mape: Oh :/ [19:23] seanbo: Does anyone know how I can use Jasmine to test my routes in express, to verify they're returning the HTML I expect? [19:23] polotek: dtrace isn't working on v8 js quite yet [19:23] polotek: ryah? ^ [19:24] polotek: anyway, one hurdle out of the way, time to run [19:24] naneau has joined the channel [19:24] naneau has joined the channel [19:24] polotek: later folks [19:24] polotek has left the channel [19:24] mape: later [19:27] c4milo1 has joined the channel [19:28] matt_c has joined the channel [19:28] maushu has joined the channel [19:30] Me1000 has joined the channel [19:30] rburhum has joined the channel [19:31] mikeal: i have to share this [19:31] mikeal: this is a fake critereon cover for a movie idea that was in an episode of Extras [19:31] mikeal: http://i.somethingawful.com/u/garbageday/photoshop_phriday/2010_12_10/wyoming_02.png [19:31] arrty has joined the channel [19:32] c4milo2 has joined the channel [19:32] mikeal1 has joined the channel [19:34] Sembiance: v8: if(true) [19:34] v8bot: Sembiance: SyntaxError: Unexpected end of input [19:34] Sembiance: v8: return 1==1; [19:34] v8bot: Sembiance: SyntaxError: Illegal return statement [19:34] Sembiance: v8: (1==1) [19:34] v8bot: Sembiance: true [19:35] BHSPitMonkey has joined the channel [19:35] BHSPitMonkey: Anyone here used node-canvas? When I create an Image and set its source, its onload isn't being fired [19:36] richcollins has joined the channel [19:39] omygawshkenas has joined the channel [19:40] hamcore: Anyone with a good "jerk module" knowledge? [19:40] jashkenas has left the channel [19:40] jashkenas has joined the channel [19:41] Max-Might has joined the channel [19:41] indutny: hamcore-- [19:41] v8bot: indutny has taken a beer from hamcore. hamcore now has -1 beers. [19:41] hamcore: indutny-- [19:41] v8bot: hamcore has taken a beer from indutny. indutny now has -1 beers. [19:43] isaacs: you guys and your beer thievery [19:43] isaacs: that's not nice [19:43] indutny: isaacs-- [19:43] v8bot: indutny has taken a beer from isaacs. isaacs now has 5 beers. [19:43] indutny: :D [19:43] mape: isaacs++ [19:43] v8bot: isaacs is getting too many beers. Don't let isaacs get drunk! [19:43] ajpiano has joined the channel [19:43] mape: Hehe [19:43] isaacs: ACTION stumbles [19:43] cjm has joined the channel [19:43] hamcore: hamcore++ [19:43] v8bot: hamcore: Don't cheat! You can't give a beer to yourself. [19:43] hamcore: 10:14/ [19:44] hamcore: gimme a bear, indutny [19:44] indutny: hamcore++ [19:44] v8bot: indutny has given a beer to hamcore. hamcore now has 0 beers. [19:44] indutny: np [19:45] dguttman has joined the channel [19:45] hamcore: ty. [19:46] eee_c has joined the channel [19:47] cjm has joined the channel [19:49] tylerstalder has joined the channel [19:50] andrzejsliwa has joined the channel [19:53] mikew3c has joined the channel [19:53] stagas has joined the channel [19:59] dguttman has joined the channel [20:01] Epeli has joined the channel [20:02] HAITI has joined the channel [20:02] HAITI has joined the channel [20:06] Yuffster has joined the channel [20:08] matjas has joined the channel [20:13] langworthy has joined the channel [20:13] naneau has joined the channel [20:15] cjm has joined the channel [20:16] jchris has joined the channel [20:16] webyay has joined the channel [20:22] strixv has joined the channel [20:26] Wizek has joined the channel [20:26] Wizek: Hello! [20:26] Anti-X: probably [20:27] keyvan has joined the channel [20:27] Wizek: How can I use Mongoose's .count() function? [20:27] wasabist has joined the channel [20:27] lorinc has joined the channel [20:29] xslashxr has joined the channel [20:30] fly-away has joined the channel [20:38] inimino: isaacs ⋱ ping [20:38] isaacs: inimino: hi [20:38] inimino: hey, got an npm question [20:38] isaacs: kk [20:39] inimino: if I do `npm link .`, then later on, I can't uninstall that linked version, because of dependency conflicts, even though there is another version installed. Is that a bug? [20:39] Aria has joined the channel [20:39] isaacs: inimino: well, kinda [20:40] isaacs: inimino: what it should do is try to find any other versions that would satisfy the dep, and then point the dependent package at that, and allow the removal [20:40] isaacs: inimino: but it's kind of an edge case. [20:40] inimino: I would expect it to fall back to the previous version. [20:40] isaacs: inimino: right [20:40] inimino: ok [20:40] isaacs: inimino: you can do that manually. npm update-dependents name@other-version [20:40] isaacs: and then npm rm name@9999.0.0-LINK-blah [20:40] inimino: ah [20:41] isaacs: link packages are a pita [20:41] inimino: I didn't know about that. [20:41] isaacs: super convenient sometimes, but annoying to manage, since they change under your nose. [20:41] isaacs: that's why the crazy version number. [20:41] inimino: yeah, I went back to using `npm install .` after having that problem... [20:42] aconbere has joined the channel [20:42] matt_c has joined the channel [20:42] isaacs: inimino: you can also `npm rm name@whatever --recursive` to remove dependent packages as wekk [20:42] isaacs: *well [20:42] isaacs: or --force to just say screw it and corrupt the data. [20:42] isaacs: but that's not recommended ;) [20:42] inimino: oh, I didn't know that either [20:42] lowik has joined the channel [20:42] isaacs: yeah, i gotta go through and add the relevant config options to each command's manpage [20:43] inimino: ah [20:43] isaacs: they're all explained in `npm help config` but that page has gotten really long [20:43] inimino: link packages are convenient but seem kind of hacky [20:44] isaacs: yep. [20:44] inimino: I guess they complicate how things are installed too [20:45] liar has joined the channel [20:45] inimino: I have to run some commands to test changed code anyway, so an extra `npm install .` is little extra trouble. [20:47] inimino: ...and you could always edit the installed files in place for the same effect [20:47] isaacs: the better way would be to maybe give the version folder a name like just "LINK-" and then always read the package.json to get the effective version number, but then if ti's a dep for something else, then it could change, and break the dependency [20:47] isaacs: inimino: sure [20:47] isaacs: there's even an `npm edit` command for doing that :) [20:47] inimino: oh [20:47] inimino: maybe you should just nuke the link feature then [20:47] isaacs: haha [20:47] isaacs: nah, i use it too much [20:48] inimino: ok [20:48] tekky has joined the channel [20:52] jakehow has joined the channel [20:52] jchris has joined the channel [20:54] altamic has joined the channel [20:56] lowik has joined the channel [20:57] lowik: Hello! I'm just stared using node.js and I want to ask where I can find the best description of architecture and concepts ? What is the best tutorial about node ? [20:57] lowik: *started [20:57] Yuffster_ has joined the channel [20:59] mikeal has joined the channel [20:59] inimino: lowik ⋱ Did you read the documentation? [20:59] BHSPitMonkey: lowik: the examples and documentation on nodejs.org are good... [20:59] Kami_: lowik: there are some articles on howtonode.org [20:59] tahu has joined the channel [21:00] lowik: I'm just reading http://nodejs.org/docs/v0.3.1/api/ [21:00] inimino: :) [21:01] smtlaissezfaire has joined the channel [21:01] lowik: inimino: but probably I'll bored in 15minutes and I'm trying to find some good examples/articles [21:02] inimino: Tutorials are a poor substitute for documentation. [21:02] inimino: Chances are if you read that page you won't need to waste time with any tutorials and can start using node right away. [21:03] webyay has joined the channel [21:05] webyay has joined the channel [21:05] Aria: And there's always howtonode, which has just enough exciting to get you moving. [21:05] Aria: The barrier to node's not that high [21:07] dguttman has joined the channel [21:08] lowik: I'll start with the docs then. I'm so fucking excited ;) Thanks [21:08] netminder has joined the channel [21:12] twoism has joined the channel [21:13] matt_c has joined the channel [21:20] webflo has joined the channel [21:21] altamic has joined the channel [21:23] andrzejsliwa has joined the channel [21:25] jchris has joined the channel [21:30] aconbere: hmpf [21:40] possibilities has joined the channel [21:40] Hello71 has joined the channel [21:40] Hello71 has joined the channel [21:42] langworthy has joined the channel [21:42] mattc has joined the channel [21:46] HAITI has joined the channel [21:47] isaacs has joined the channel [21:47] jakehow has joined the channel [21:49] naneau has joined the channel [21:50] possibilities has joined the channel [21:51] Dreamer3 has joined the channel [21:51] isaacs: jameshome: you dig the ircretary message? [21:52] sechrist has joined the channel [21:52] Dreamer3 has joined the channel [21:52] isaacs: sweet, logs in couchdb, up at http://irc.npmjs.org/node.js/2010-12-11 [21:53] indutny: cool [21:54] isaacs: the couch is here: http://isaacs.couchone.com/ircretary [21:55] dguttman has joined the channel [21:55] ph^ has joined the channel [21:56] V1: Oh, even in near realtime ;) [21:56] aschw has joined the channel [21:59] aschw: I'm getting an md5 checksum mismatch when I try to "brew install npm" -- anyone seen that before? [21:59] V1 has left the channel [21:59] isaacs: aschw: awesome. [21:59] isaacs: aschw: don't use homebrew. [21:59] isaacs: or, at least, don't use it for node, don't use it for npm. [21:59] jchris has joined the channel [21:59] aschw: excellent [22:00] isaacs: aschw: https://github.com/isaacs/npm/issues/#issue/441/comment/605072 [22:00] isaacs: er, wrong (but ironically enough, very relevant) link. meant this: https://gist.github.com/579814 [22:00] UHMA has joined the channel [22:01] aschw: cool -- I'll rm node from Cellar and install from the gist. [22:01] isaacs: brew rm node [22:01] isaacs: should work fine [22:02] jesusabdullah: Cellar? [22:03] aschw: brew installs stuff in /usr/local/Cellar [22:04] sechrist has joined the channel [22:05] jesusabdullah: ahh [22:05] jesusabdullah: Still haven't used a mac [22:05] jesusabdullah: :/ [22:05] jesusabdullah: I feel like a backwater creature ;) [22:06] jpiche has joined the channel [22:06] lorinc has joined the channel [22:07] sepehr1 has joined the channel [22:09] isaqual has joined the channel [22:09] mape: isaacs: Any news if joyent is throwing together a npm page? or is it worth spending time on making the current ones betteR? [22:10] indutny: mape: oh, you're here [22:10] isaacs: mape: an improved npm page is on the roadmap. however, the npm team is also busy working on the no.de service, and maintaining npm itself, so we're very happy to receive any kidn of help that the community wants to offer. [22:10] indutny: have you received message? [22:10] isaacs: mape: in other words, yes. :) [22:11] mape: indutny: Yeah [22:11] isaacs: and when i say "the npm team", i mean "me" [22:11] isaacs: and when i say "the community", i mean "you" [22:11] mape: Hehe k [22:11] isaacs: also, evanmeagher has done a bit of exploration of a docs site, indutny here is working on a thing that listens to the couchdb _changes feed, etc. [22:11] indutny: haha :) [22:12] indutny: isaacs: thanks for inclusing in our small community [22:12] indutny: :D [22:12] indutny: at least 3 persons [22:12] indutny: lol [22:12] isaacs: the docs thing is the only one that i'm really personally invested in at all. exploration/discovery is important too, but docs, man, those are just scattered all over the place. [22:12] wilmoore has joined the channel [22:12] isaacs: mape: also, apparently, having my update function post the date into a separate db is just not possible. [22:13] isaacs: so indutny's thing is probably the best way to feed in "last updated" stats. [22:13] mape: hmm k [22:15] bingomanatee_ has joined the channel [22:15] indutny: join me at Oakland chat! :) [22:15] indutny: http://mapchat.me/#/point/37.76/-122.24 [22:16] indutny: kinda offtop [22:16] indutny: :D [22:20] aschw: isaacs: thanks for setting me straight re: homebrew [22:20] isaacs: aschw: np [22:20] aschw: isaacs: see you at node camp! [22:20] brianleroux has joined the channel [22:21] isaacs: i'd add a warning about it in the npm source, but they'd just gsub it out. [22:27] JimBastard has joined the channel [22:27] aschw: oh well, installing from that gist was painless. [22:28] lowik has joined the channel [22:28] isaacs: awesome [22:28] springify has joined the channel [22:32] WakiMiko_ has joined the channel [22:33] kawaz_home has joined the channel [22:34] JimBastard: hey isaacs [22:34] isaacs: heya, JimBastard [22:34] JimBastard: i'm going to try something with npm in node_mailer [22:34] JimBastard: maybe its dumb, you tell me [22:35] isaacs: oh? [22:35] isaacs: whatcha gonna try? [22:35] JimBastard: want to write a little script that will load the package.json manifest and copy its contents to exports.npm or exports.package [22:35] JimBastard: so when you require('mailer'); [22:35] JimBastard: you get mailer.fullnpmpackgejson [22:35] JimBastard: get it? [22:35] JimBastard: mailer.npm.version [22:35] JimBastard: etc [22:35] indutny: what will be in mailer.package [22:36] indutny: ? [22:36] JimBastard: a 1:1 copy of the package.json [22:36] JimBastard: if it exists [22:36] indutny: ok, cool [22:36] isaacs: JimBastard: so... you'll get require("mailer").package.version [22:36] JimBastard: isaacs: exactly [22:36] smtlaissezfaire has joined the channel [22:36] isaacs: that's kinda kewl, i guess [22:36] JimBastard: isaacs: well then you can easily do version detection in code and stuff [22:36] isaacs: yeah, that'd be cool. [22:36] JimBastard: and throw if you done fucked up [22:37] isaacs: i'm not sure how i'd feel about making that automatical, though [22:37] JimBastard: i should i attack it? [22:37] isaacs: it'd be rad to have something like require("mailer/package") to get that info [22:37] JimBastard: err, how should i [22:37] indutny: may be [22:37] indutny: require("mailer:package") [22:37] JimBastard: that sounds interesting isaacs [22:37] indutny: this package name can't be used [22:37] indutny: while mailer/package can [22:37] indutny: oh [22:38] isaacs: JimBastard: hm... well, if you want it just for mailer, then you could just use the utility at require("npm/utils/read-json") [22:38] indutny: sorry :) time for sleep, writing stupid things [22:38] JimBastard: isaacs: i was gonna try it on one project first [22:38] isaacs: and then readJson("./package.json", function (er, data) { ... }) [22:38] isaacs: but, to do it globally, we could have something like require("mailer/package.json"), and i can just generate a module there. [22:39] JimBastard: isaacs: i think that would be way better [22:39] isaacs: first step is probably to post an issue on npm, then :) [22:39] JimBastard: 10-4 [22:39] isaacs: second step would be to implement it. [22:39] isaacs: the modules hash gets generated in lib/utils/load-package-defaults.js, or something [22:40] isaacs: and things get built in lib/build.js [22:40] isaacs: so when it generates the moduels, it should also generate a package.json file that does module.exports=JSON.stringify(data) [22:40] isaacs: maybe package.json.js just so that it's not confused with an actual json file [22:41] sepehr has joined the channel [22:41] isaacs: but only if there isn't already a modules : { "package.json" : "something" } [22:44] augustl has joined the channel [22:44] JimBastard: isaacs: https://github.com/isaacs/npm/issues/issue/446 [22:45] indutny: ACTION goes sleeping [22:46] Gruni has joined the channel [22:47] isaacs: JimBastard: awesome. [22:47] isaacs: JimBastard: i can probably bang that out pretty quick, if you don't feel like taking it. [22:48] saikat has joined the channel [22:48] googol has joined the channel [22:49] JimBastard: isaacs: there isnt a rush on it. i would think it would take you factors of less time then me [22:49] isaacs: indeed. [22:50] JimBastard: see what you can do :-p [22:50] JimBastard: did i tell you i started working on the node.js rap, you got a shoutout [22:50] isaacs: orly? awesome. [22:50] JimBastard: here is a snippet [22:50] JimBastard: need to install packages, use the module system it was built by isaacs a man of knowledge and wisdom [22:50] JimBastard: :-D [22:50] isaacs: :D [22:51] JimBastard: npm install foo, now you rocking require foo in any script you be dropping [22:51] possibilities has joined the channel [22:51] JimBastard: it sounds better when i rap it, i swear [22:53] spyrosl has joined the channel [22:55] [[zz]] has joined the channel [22:57] lstrojny has joined the channel [22:59] matt_c has joined the channel [23:04] lowik has joined the channel [23:10] spyrosl has joined the channel [23:12] ysynopsis has joined the channel [23:15] Nohryb has joined the channel [23:15] micheil has joined the channel [23:15] smtlaissezfaire has joined the channel [23:17] HAITI has joined the channel [23:21] lowik has left the channel [23:26] cronopio has joined the channel [23:31] jashkenas has joined the channel [23:40] namelessnotion has joined the channel [23:46] markwubben has joined the channel [23:50] torvalamo has joined the channel [23:51] tylerstalder has joined the channel [23:54] Anti-X has joined the channel [23:55] sid__ has joined the channel