[00:00] secoif: makes the , seem important or something
[00:00] tjholowaychuk: secoif: it is important
[00:00] tjholowaychuk: if you omit it, you have a global :)
[00:00] tjholowaychuk: personally I think consistency at the beginning of a line looks good
[00:00] yozgrahame has joined the channel
[00:00] SubStack: greetings nodelings!
[00:01] unomi has joined the channel
[00:01] SubStack: tjholowaychuk: poke guillermo about landing that var io = this.io = ... thing for me
[00:01] ChrisPartridge: ACTION waves
[00:01] tjholowaychuk: SubStack: they are setting up the new office or somethinh
[00:01] SubStack: ah
[00:01] SubStack: waiting on that to push out dnode v0.6 to master
[00:02] secoif: but
[00:02] secoif: , it's like
[00:02] ajpiano has joined the channel
[00:02] secoif: , not natural
[00:02] tjholowaychuk: secoif: and {} is ?
[00:02] tjholowaychuk: hey() whats() { up() }
[00:02] secoif: {sure} it is
[00:02] secoif: lol ok
[00:02] SubStack: leading commas are common in haskell-land too
[00:03] SubStack: not that I use them
[00:03] perlmonkey2: Ah, the problem with 4square's guids was ""Shard key order and insertion order are different. This prevents data from being moved in contiguous chunks.""
[00:03] crodas has joined the channel
[00:03] SubStack: but I do like to leave on trailing commas so I can more easily add lines and move lines around
[00:04] fugoki: god
[00:04] fugoki: im bored
[00:04] fugoki: dont get me started buying shit
[00:04] fugoki: WOOPS
[00:04] fugoki: ACTION wrong window
[00:04] fugoki: sorry all!
[00:04] SubStack: fugoki: write more node libs
[00:04] SubStack: go go
[00:04] SubStack: so many of those I want to write but am bogged down with other stuff right now
[00:05] secoif: what would you write SubStack
[00:05] secoif: ?
[00:06] fugoki: SubStack: :D yeah good idea, new to this though, watching, learning
[00:06] fugoki: ...and typing in teh wrong window
[00:06] SubStack: pure-javascript graph database
[00:06] SubStack: replication plugin for dnode
[00:06] eyesUnclouded has joined the channel
[00:06] secoif: replication of a server?
[00:06] SubStack: dnode peering system
[00:06] chapel has joined the channel
[00:07] SubStack: data structure replication
[00:07] secoif: oh
[00:07] secoif: I see
[00:07] secoif: ACTION investigates
[00:07] SubStack: although right now I'm hacking up an ssh server so that's fun too
[00:07] SubStack: just taking a while to figure this all out
[00:08] secoif: wow, dnode looks cool
[00:08] hij1nx_ has joined the channel
[00:11] secoif: really simple
[00:11] SubStack: check out the v0.6 branch readme
[00:12] malkomalko: what does everyone use to store their sessions for their apps? I was using connect-mongodb, but I think I want a change
[00:12] SubStack: https://github.com/substack/dnode/tree/v0.6
[00:12] SubStack: malkomalko: I use sesame!
[00:12] tjholowaychuk: malkomalko: I use connect-redis
[00:12] SubStack: I also wrote it >_>
[00:13] zzak: substack: grats
[00:13] adrian_berg has joined the channel
[00:13] malkomalko: interesting, I'll have a look at both
[00:13] SubStack: zzak: about incorporation?
[00:14] tim_smart: Hmmm getting "socket hang up" errors in https.request
[00:14] tjholowaychuk: malkomalko: just note that connect-redis 1.0.0 will only work with connect >= 1.0.0
[00:15] adrian_berg: this is my attempt to understand the stdin/stdout: http://pastie.org/private/mhvpv03u8akt3yht5lmfq
[00:15] malkomalko: when did 1.0.0 come out? recently? any major differences from 0.5.5?
[00:15] zzak: substack: no on 0.6.0 :)
[00:15] SubStack: ah
[00:15] devinus: what would you guys call the opposite of a callback?
[00:16] malkomalko: I don't even see 1.0.0 listed heh
[00:16] tjholowaychuk: tim_smart: read 1239 of htp.js, I had that a while back too
[00:16] tjholowaychuk: malkomalko: its coming out soon
[00:16] mikegerwitz: adrian_berg: Put line 5 within the callback on line 4
[00:16] Kudos: devinus: a callforward?
[00:16] malkomalko: SubStack: what database backend do you use with sesame?
[00:16] malkomalko: any major changes?
[00:16] miketaylr has joined the channel
[00:16] warz has joined the channel
[00:17] tjholowaychuk: malkomalko: near rewrite but the api is more or less the same
[00:17] loob2: anyone else having problems with the redis module not exiting?
[00:17] tjholowaychuk: not much for a migration
[00:17] malkomalko: anice... I like
[00:17] dguttman has joined the channel
[00:17] adrian_berg: mikegerwitz: aha!
[00:17] malkomalko: cluster is working like a glove in production btw, awesome sauce on that
[00:17] adrian_berg: thank you mikegerwitz \o/
[00:17] malkomalko: did I just hear the restart bug get fixed in a recent commit?
[00:17] bentruyman has joined the channel
[00:18] mikegerwitz: adrian_berg: np, enjoy :)
[00:18] tjholowaychuk: malkomalko: cool man. haha yeah, it was a tiny bug with a massive impact
[00:18] tjholowaychuk: but should be fixed
[00:18] tim_smart: tjholowaychuk: How did you get around it?
[00:18] kei has joined the channel
[00:18] malkomalko: nice, I'll have to pull in those changes
[00:18] malkomalko: our app is almost ready for public consumption, running with express/cluster
[00:18] wyattisimo has joined the channel
[00:18] malkomalko: if we make a bunch of money, I'm giving you some
[00:18] malkomalko: :)
[00:19] tjholowaychuk: malkomalko: ahaha woot!
[00:19] malkomalko: I use to be a rails guy, now I can't even freaking look at it anymore
[00:19] tjholowaychuk: tim_smart: cant remember exactly what my problem was to be honest haha been a while now
[00:19] malkomalko: it feels so damn bloated
[00:20] sveimac_ has joined the channel
[00:20] adrian_berg: any idea how to get extract three words on stdin from the user?
[00:20] adrian_berg: s/get//
[00:21] adrian_berg: it looks like on any data that stdin receives is used as the output
[00:21] tmpvar has joined the channel
[00:21] adrian_berg: i'd like to reference each word somehow
[00:23] mikegerwitz: adrian_berg: that callback is called every time a chunk of data is received from stdin. From my experience on a GNU/Linux system, that's whenever 'return' is pressed. You'll have to concatenate the chunks together until you get all the data you want. chunk.split( ' ' ) will split on spaces, which will give you an array of words.
[00:23] trotter has joined the channel
[00:23] Vekz: Hey guys. Whats the status of node.js and mysql. I started a new project in node and it looks like it will require some communication to mysql in the future.
[00:23] mikegerwitz: adrian_berg: Are you new to JavaScript or just node?
[00:23] possibilities has joined the channel
[00:24] possibilities has joined the channel
[00:25] SubStack: malkomalko: sesame works with supermarket and nStore right now
[00:25] SubStack: it would work with more but every db system has its own special interface
[00:25] BillyBreen has joined the channel
[00:25] tjholowaychuk: mikegerwitz: nstore will limit you to one core though so if you are using cluster dont use that
[00:25] tjholowaychuk: shit
[00:25] tjholowaychuk: malkomalko ^
[00:26] malkomalko: same thing with supermarket I'm assuming
[00:26] tjholowaychuk: redis is perfect for sessions
[00:26] malkomalko: I'm having some weird ass session sharing happening right now, people logging in and seeing themselves as other people, only thing I can think it is is using connect-mongodb with session store via mongo on another server
[00:27] malkomalko: should I wait until connect 1.0.0 though?
[00:27] tjholowaychuk: wtf lol you are getting that via the mongodb store?
[00:27] malkomalko: yup, I can't explain it
[00:27] tjholowaychuk: messed
[00:27] malkomalko: it just started happening
[00:27] tjholowaychuk: cant say ive seen that
[00:28] malkomalko: I don't think I'm doing anything weird
[00:28] malkomalko: I just have a little route helper that finds a current user before sending the request
[00:28] malkomalko: nothing crazy
[00:31] adrian_berg: mikegerwitz: new to node, and i guess javascript though i've been through all of the mozilla documentation
[00:31] adrian_berg: http://pastie.org/private/n76lzziasmum1r8g6agwrg
[00:33] italic has joined the channel
[00:33] softdrink has joined the channel
[00:34] markwubben has joined the channel
[00:34] italic: what would be a good way to distribute a node based app as a standalone app?
[00:34] brweber2 has joined the channel
[00:34] bingomanatee_ has joined the channel
[00:35] possibilities has joined the channel
[00:36] losing has joined the channel
[00:39] davem has joined the channel
[00:40] davem: node.js + redis + nginx ?
[00:41] Hello71 has joined the channel
[00:41] Hello71 has joined the channel
[00:41] sprout has joined the channel
[00:42] davem: node.js seems to crash really easily
[00:42] ChrisPartridge: davem: - nginx
[00:42] davem: nginx to split off socket.io on port 80
[00:43] c4milo: davem: are you using modules that are actually bindings to C/C++ libraries?
[00:44] c4milo: davem: because nodejs itself is pretty stable
[00:44] davem: only using the redis module
[00:45] ChrisPartridge: davem: and what version of node?
[00:45] adrian_berg: changing 'data' to 'chunk' in if(data === 'yes') {...}; makes it work, though 0all the output isn't working as intended
[00:47] davem: setup as follows: socket.io -> nginx splits /socket.io to node.js, and rest to tomcat. Tomcat pushes to redis, redis pushes to node.js back to browser. Loaded with a few hundred clients can push a few hundred requests per second through all of this (nginx, tomcat, redis, node, socket.io) - though the load is mainly on the browsers, if tested on separate machines would be far more than that I suspect. However, node.js seems real
[00:47] davem: brittle, very easy to crash it - easily the weakest link in the above chain - surprisingly
[00:48] Tom-Tomaso has joined the channel
[00:48] davem: latest version of node: 0.4.1
[00:48] konobi: davem: and you're handling all the error cases of nginx disconnecting from node?
[00:49] konobi: (since it doesn't really handle long polling easily by default)
[00:49] davem: @konobi: no, am using the simple node+redise+socket.io demo on the web.
[00:49] konobi: (nginx that is)
[00:50] pquerna: https://groups.google.com/forum/#!topic/spdy-dev/TCOW7Lw2scQ
[00:50] davem: oh, regarding nginx: am using reverse_proxy module, with no cache - seemed to work fine in the above setup.
[00:50] kawaz_air has joined the channel
[00:50] konobi: proxy_buffering?
[00:50] davem: buffering off
[00:51] davem: proxy_buffering off;
[00:51] konobi: large timeouts?
[00:51] davem: though interestingly, didn't seem to matter.
[00:51] davem: timeout 65;
[00:52] pquerna: didn't realize the Goog had started actually shipping things with spdy on
[00:52] mraleph has joined the channel
[00:53] konobi: proxy_send, proxy_read, send_timeout, proxy_connect, etc?
[00:53] davem: problem seems to start with socket.io, for some reason randomly switches to xhr_long polling, then runs out of resources in node
[00:53] insin: ACTION wonders why the qunit port which just failed to build via npm install needed to invoke the C compiler at all :/
[00:54] davem: @konobi: what do you recommend as the ideal nginx settings for unbuffered reverse proxy?
[00:54] konobi: davem: tried with just nodejs at the front?
[00:54] konobi: you can always put it on a seperate port
[00:55] davem: @konobi: yes have tried with just node.js, seemed to have the same problem - I'll replicate again, and post errors.
[00:56] davem: ps: am looking to hire someone to help me evaluate node for comet (ie to replace existing xhr polling solution)
[00:56] ChrisPartridge: insin: to build node-jscoverage by the looks of it
[00:57] davem has left the channel
[00:57] insin: can you tell npm to ignore dependencies? I'm trying to install jquery-tmpl, I really don't care how it was tested :)
[00:57] jpick has joined the channel
[00:58] tjholowaychuk: insin: yeah people should not be putting test deps in there :s
[00:58] isaacs: insin: no, but jquery-tmpl should put its test dep in devDependencies.
[00:58] bingomanatee has joined the channel
[00:58] tjholowaychuk: or that ^
[00:58] isaacs: insin: complain to the authr
[00:58] davem has joined the channel
[00:58] insin: cheers
[00:58] bubbafat has joined the channel
[00:59] reid: how do you install dev deps?
[01:00] SubStack: bug all these people: for pkg in $(npmdep req vows); do npm -s view $pkg author; done | sort | uniq
[01:01] isaacs: reid: either `npm link` or `npm install blah --dev`
[01:01] sh1mmer has joined the channel
[01:01] isaacs: reid: of course, you can also `npm config set dev true`
[01:01] reid: ACTION checks the npm HISTORY
[01:01] kriskowal has joined the channel
[01:01] isaacs: history?
[01:02] SubStack: hey marak and indexzero are in that list
[01:02] SubStack: they should know better!
[01:02] reid: isaacs: looking for npm's changelog, but missed it. what version did --dev work?
[01:02] sivy_ has joined the channel
[01:02] isaacs: reid: oh, i see. npm help changelog
[01:02] isaacs: not sure what version it showed up in
[01:03] isaacs: reid: but it's pretty ancient
[01:03] isaacs: like, 0.1ish
[01:03] reid: isaacs: nice, ok. i'm still on ancient versions.
[01:03] sivy has joined the channel
[01:03] isaacs: :)
[01:03] kriskowal: ryah: for what it's worth, the fix to setWindowSize didn't fix my html5 vt100. tty.open is giving me a stream that appears to stall after the first data.
[01:07] fugoki: adrian_berg: you're forgetting teh newline @ the end of your input: 'input_text\n'
[01:08] bingomanatee_ has joined the channel
[01:09] bingomanatee_: Okay - soneone asked a while ago what constrians the maximum number of connectcions (tcp &/or http) and whether or not you can adjust this maximum - any thoughts on this?
[01:10] yozgrahame has joined the channel
[01:12] davem has joined the channel
[01:12] ntelford has joined the channel
[01:12] davem has left the channel
[01:13] ChrisPartridge: bingomanatee_: depends on your hardware in the end, you may run into other limits imposed by the OS, such as open file handles and such
[01:13] bingomanatee: Assuming Ubuntu.
[01:13] bingomanatee: so it sounds like the environment, not Node as such, dictates that.
[01:13] ChrisPartridge: bingomanatee: more or less
[01:14] bingomanatee: Alright - thanks.
[01:14] ryah: bingomanatee: you'll hit OS limits first
[01:15] SubStack: many of those limits are configurable
[01:15] ryah: nfiles per process, number of ephemeral ports, TIME_WAIT time
[01:16] bingomanatee: So the question I should be asking is what is the maximum number of connections Ubuntu/Linux et all is set up to accept.
[01:16] ryah: bingomanatee: well there's a hard limit in TCP itself - there is only 16 bits of port address space
[01:17] ryah: the aboslute maximum number of clients per IP is less than 2^16
[01:17] ryah: probably you can get above that with multiple interfaces?
[01:18] SubStack: for connections to a server?
[01:18] ryah: yes
[01:18] bingomanatee: right - can !-- should
[01:18] SubStack: don't multiple clients all share the same port?
[01:18] SubStack: incoming to a port
[01:18] ryah: SubStack: no
[01:18] ziro` has joined the channel
[01:19] SubStack: pretty sure they do
[01:19] SubStack: we could be talking about different things
[01:19] SubStack: when a client connects to a server, the client uses a new temporary port
[01:19] SubStack: but the server uses the same one
[01:20] ryah: SubStack: sorry - yeah
[01:20] Yuffster_work has joined the channel
[01:20] malkomalko: tjholowaychuk: after the 0.3.0 update of cluster, it looks like when I do a node server.js status/restart, whatever, that it's now hanging and not closing
[01:21] zentoooo has joined the channel
[01:21] tjholowaychuk: malkomalko: hmmMM
[01:21] SubStack: although I do forget which tcp headers the server uses to keep track of all of that
[01:21] malkomalko: looks like it's requiring the whole server.js file, and since I open up a db connection, it just stays open
[01:21] tjholowaychuk: malkomalko: oh
[01:21] tjholowaychuk: yeah
[01:21] tjholowaychuk: it does, it has to
[01:21] SubStack: might be a hard limit in that
[01:22] tjholowaychuk: malkomalko: it was probably working before because I was accidentally sending SIGTERM instead of SIGQUIT
[01:22] tjholowaychuk: so it appeared to work
[01:22] malkomalko: lol
[01:22] ryah: i was thinking about when generating load always running out of ephemeral ports - but that's client side
[01:22] strmpnk has joined the channel
[01:22] tjholowaychuk: malkomalko: do cluster = cluster(server).listen(blahblah); if (cluster.isWorker) { var db = whatever }
[01:23] tjholowaychuk: malkomalko: no point opening connections for master
[01:23] tjholowaychuk: but the same file is executed 1 + N times
[01:23] malkomalko: right, I'm looking at that right now
[01:23] malkomalko: master + num of workers
[01:23] tjholowaychuk: I will try and write up some docs though I've had that question a few times
[01:23] dshaw has joined the channel
[01:24] malkomalko: I basically open up a db connection in my main server.js, so now I'm trying to figure if that's why I have some weird session stuff going on, trying to make any sense of why this is happening
[01:24] malkomalko: I'm going to try that if (cluster.isWorker), brb
[01:25] tjholowaychuk: malkomalko: alternatively dont do requires like that in your main app.js or whatever
[01:25] tjholowaychuk: and leave that to only cluster related stuff
[01:25] tjholowaychuk: maybe I should add cluster(server).in('worker', function)
[01:26] TheEmpath has joined the channel
[01:26] tjholowaychuk: just to make it more accessible
[01:26] malkomalko: trying to imagine the best way to structure that
[01:26] linkmauve has joined the channel
[01:26] iszak has joined the channel
[01:26] hornairs has joined the channel
[01:26] ChrisPartridge: tjholowaychuk: that would be cool
[01:27] arpegius has joined the channel
[01:29] tjholowaychuk: malkomalko: thisis what we are doing https://gist.github.com/848422
[01:29] tjholowaychuk: malkomalko: the .do() thing is just an ad-hoc callback
[01:29] tjholowaychuk: for the specified env
[01:29] malkomalko: if you have to pass cluster your main app file, if you are using a session store that keeps an open socket you are boned too..
[01:29] malkomalko: let me take a look
[01:29] tjholowaychuk: but I could add .in('worker') as an alternative
[01:30] adrian_berg: fugoki: i don't understand, are you saying it shouldn't be in there?
[01:30] malkomalko: are you just creating a basic express app skeleton there? then boot sets up more config options and the rest of your requires?
[01:31] fugoki_ has joined the channel
[01:31] adrian_berg: i liked italic's question, not sure if anyone answered it
[01:31] adrian_berg: 18:34 < italic> what would be a good way to distribute a node based app as a standalone app?
[01:31] tjholowaychuk: malkomalko: yeah boot() is the meat
[01:31] tjholowaychuk: we need it abstracted for testing anyway but yeah
[01:32] tjholowaychuk: basically master doesnt do anything with the server
[01:32] tjholowaychuk: only the workers do
[01:32] malkomalko: I like that
[01:32] malkomalko: gonna try implementing that now
[01:32] tjholowaychuk: it's not really ideal, I will have to document that a bit so people dont get confused
[01:32] dgathright has joined the channel
[01:33] malkomalko: little confusing, but makes sense with an explanation
[01:33] tjholowaychuk: maybe it would be better to accept a path, only required to grab the server in the worker
[01:33] tjholowaychuk: so cluster('./app').listen()
[01:34] tjholowaychuk: even though cluster(server) works fine as long as you dont have an active event loop
[01:34] tjholowaychuk: neither is very elegant haha
[01:36] mraleph has joined the channel
[01:38] piscisaureus: isaacs: the latest npm master, does that use node_modules now?
[01:38] isaacs: piscisaureus: yeah
[01:38] isaacs: piscisaureus: it's still installing globally
[01:38] isaacs: but the dep folders have been called "node_modules" for quite some time now
[01:38] samcday: Hi all. Does anyone know if it's possible to get the name of a property being accessed from a NamedPropertyAccessor if I'm trying to get the property like this from javascript: "console.log(myObject["aproperty"]);"
[01:39] piscisaureus: isaacs: so it still relies on symlinks?
[01:39] samcday: The name of the property in the callback is just "inspect" =\
[01:39] iszak: piscisaureus, I hope not
[01:39] sivy_ has joined the channel
[01:40] bingomanatee has joined the channel
[01:41] sprout has joined the channel
[01:41] breccan has joined the channel
[01:41] brweber2 has joined the channel
[01:41] samcday: Anyone?\
[01:42] malkomalko: tjholowaychuk: https://gist.github.com/848447 it looks like the do block is only getting called for the master process, and then an infinite loop happens
[01:43] tjholowaychuk: hm :s
[01:43] m14t has joined the channel
[01:43] tjholowaychuk: malkomalko: i think this will be the best fix https://github.com/learnboost/cluster/issues/45
[01:44] ChrisPartridge: samcday: essentially trying to iterate and objects keys?
[01:44] ChrisPartridge: s/and/an
[01:44] piscisaureus: isaacs: meh. on win32 it just quits without doing anything. not even an error
[01:44] malkomalko: have it happen transparently .. that seems like a good idea
[01:44] isaacs: piscisaureus: yeah, i'm guessing that it won't work at all for a while
[01:45] isaacs: piscisaureus: you could try setting the loglevel=silly or something
[01:45] isaacs: piscisaureus: put "loglevel = silly" in ~/.npmrc
[01:45] tjholowaychuk: malkomalko: yea that will be the easiest, i will keep the old support for my tests etc and it works good for small examples
[01:45] isaacs: piscisaureus: or set %npm_config_loglevel% to "silly" in the environment
[01:45] tjholowaychuk: but this will be ideal for tests that want to use the exported server etc too
[01:46] piscisaureus: c:\> dir ~/
[01:46] piscisaureus: File not found
[01:46] piscisaureus: ^-- not on windows
[01:46] malkomalko: I think most people probably have all their stuff/db opens right in server.js
[01:47] tjholowaychuk: malkomalko: yeah I agree
[01:47] tjholowaychuk: it is cleaner
[01:47] insin: can a module's index.js require and export other modules itself, or only point to a main?
[01:48] brianc: insin: index.js is a full-fledged file and can do anything it pleases
[01:48] samcday: ChrisPartridge: Yeah, I figured out what it was, Node (or V8 internals) were trying to check if inspect was set on my object before my actual userland code was running :P
[01:48] samcday: Which is why the named accessor was coming up as "inspect" for the property name
[01:48] samcday: (derp)
[01:49] insin: sweet
[01:50] tjholowaychuk: malkomalko: done :) releasing 0.3.1
[01:50] EyePulp: trying to learn mongoose a bit more -- If I have an array of objects that *should* map to a schema, is there some way to use $pushAll() to create all those docs at once, and then do a mass save(), or am I misunderstanding $pushAll()?
[01:50] tjholowaychuk: then im out for a bit
[01:50] malkomalko: that was a little too slow bro
[01:50] isaacs: piscisaureus: it should be doing process.env.HOME
[01:50] isaacs: piscisaureus: not ~
[01:50] malkomalko: btw, you saw this right? http://placekitten.com/
[01:50] piscisaureus: isaacs: ah :-)
[01:50] piscisaureus: thnx
[01:50] tjholowaychuk: malkomalko: woah! haha
[01:51] tjholowaychuk: that is awesome hahah
[01:51] malkomalko: I know you like kitties.. I do too, and saw that on HN
[01:51] malkomalko: lol
[01:52] malkomalko: http://placekitten.com/800/300
[01:52] SubStack: quick, somebody write kitten middleware
[01:52] malkomalko: lol
[01:52] piscisaureus: ryah: you think your admin is going to be mad at me if I disable UAC on the build bot?
[01:53] ryah: UAC?
[01:53] TheEmpath has joined the channel
[01:53] brianc: user account control
[01:53] brianc: the most awesome thing EVAR
[01:54] piscisaureus: user account control.
[01:54] piscisaureus: in linux terms, no UAC = sudo everything
[01:54] ryah: reid: no
[01:54] ryah: er
[01:54] ryah: piscisaureus: no
[01:54] brianc: piscisaureus: I like your description.
[01:55] piscisaureus: so do I
[01:56] piscisaureus: node.js:116
[01:56] piscisaureus: throw e; // process.nextTick error, or 'error' event on first tick
[01:56] piscisaureus: ^
[01:56] piscisaureus: Error: WSAEACCES, An attempt was made to access a socket in a way forbidden by its access permissions.
[01:57] thebard has joined the channel
[01:57] piscisaureus: :-/
[01:57] colinsullivan has joined the channel
[01:57] piscisaureus: No such thing as privileged ports on posix?
[01:59] warz: sudo! :p
[02:00] mscdex: sudo make me a sandwich
[02:00] rfay_ has joined the channel
[02:00] piscisaureus: make: *** No rule to make target `me'. Stop.
[02:01] mscdex: :S
[02:01] brianc: haha
[02:01] mscdex: it worked for xkcd!
[02:01] gbot2 has joined the channel
[02:02] piscisaureus: http://xkcd.com/149/
[02:02] micheil has joined the channel
[02:02] skm has joined the channel
[02:03] eyesUnclouded has joined the channel
[02:04] boaz has joined the channel
[02:06] jpstrikesback has joined the channel
[02:07] alex_b has joined the channel
[02:07] mlncn has joined the channel
[02:10] pyrony has joined the channel
[02:17] Emmanuel_ has joined the channel
[02:20] sudoer has joined the channel
[02:21] Nevtus has joined the channel
[02:21] Nevtus has joined the channel
[02:21] pekim has joined the channel
[02:22] dguttman_ has joined the channel
[02:23] rfay_ has joined the channel
[02:24] nornagon_ has joined the channel
[02:25] springmeyer has joined the channel
[02:26] brweber2_ has joined the channel
[02:26] statianzo has joined the channel
[02:27] statianzo has left the channel
[02:29] Yuffster has joined the channel
[02:29] brweber2 has joined the channel
[02:29] jamesarosen has joined the channel
[02:30] briznad has joined the channel
[02:31] paulrobinson has joined the channel
[02:32] zachsmith has joined the channel
[02:32] dingomanatee has joined the channel
[02:33] clarkfischer has joined the channel
[02:38] briznad1 has joined the channel
[02:41] nornagon_ has joined the channel
[02:42] jpstrikesback has left the channel
[02:43] comster has joined the channel
[02:43] mikeal has joined the channel
[02:44] Ond has joined the channel
[02:46] lukegalea has joined the channel
[02:46] ChrisPartridge: SubStack: ping
[02:46] ajnasz has joined the channel
[02:46] SubStack: pong
[02:47] ChrisPartridge: Your SSH server is giving me ideas... iptables like firewall in node would be cool
[02:47] arpegius has joined the channel
[02:48] SubStack: a wrapper around iptables?
[02:48] ryah: ssh server?
[02:48] SubStack: ryah: http://github.com/substack/node-ssh-server
[02:48] SubStack: work in progress
[02:48] ryah: god.
[02:49] ryah: uh, why? :)
[02:49] ChrisPartridge: ryah: why not!!!!
[02:49] ryah: sounds really hard
[02:49] SubStack: I have my highly specific reasons
[02:49] SubStack: I want people to be able to use ssh as a super easy vpn client to reverse proxy their localhost or intranet server to browserling for testing
[02:49] ryah: why not telnet over ssl
[02:50] SubStack: telnet doesn't have multiple channels and tunneling baked in
[02:50] konobi: SubStack: or ssh -D
[02:50] ryah: SubStack: why not fork to ssh
[02:50] SubStack: konobi: I'm targeting -R
[02:51] SubStack: ryah: I don't follow
[02:51] ryah: SubStack: probably there's some way you could start ssh as a subprocess
[02:51] SubStack: um eww
[02:51] ryah: and forward the data along your connection
[02:52] SubStack: the point of this is that users won't have to deploy any code
[02:52] SubStack: since most every developer has ssh already installed
[02:52] SubStack: the interface will just give them an ssh command to copy/paste
[02:52] dthompson has joined the channel
[02:52] konobi: SubStack: oh
[02:52] eschaton has joined the channel
[02:52] konobi: SubStack: you mean like using an ssh process like gitosis does?
[02:52] konobi: where it's just STDIN at the server side?
[02:53] SubStack: I'm not familiar with how gitosis does it
[02:53] eschaton: Is there a way to do synchronous stdout in node? I'm trying to print some stuff before a line with an error using console.log, but it gets halfway through printing before dying.
[02:53] SubStack: but I want hooks
[02:53] SubStack: and openssh sucks for that
[02:53] SubStack: it's too entangled with the underlying operating system
[02:53] SubStack: auth hooks, connection hooks
[02:54] mlins_ has joined the channel
[02:54] cloudhead has joined the channel
[02:54] SubStack: and I want to build out a token authorization system for streaming to tie a user account to a reverse-proxied stream
[02:54] ryah: eschaton: stderr is sync
[02:54] insin: ACTION can't believe he got tripped up by callbacks for everything for his Hello World+ demo, even though he was expecting it
[02:54] konobi: SubStack: authorized_keys and "command="
[02:55] SubStack: konobi: and hooks for tunneling?
[02:55] Evet: is node-proxy module right way to make nodejs multi-threaded?
[02:55] ProLoser has joined the channel
[02:55] SubStack: anyhow I've almost got this working
[02:55] SubStack: so :p
[02:55] ProLoser: hello
[02:56] ProLoser: i'm brand spankety new to node
[02:56] ryah: SubStack you're brave :)
[02:56] ProLoser: and i'm on windows
[02:56] konobi: poor bastard
[02:56] ProLoser: any recommendations for a starting point?
[02:56] ryah: SubStack: i hope it works
[02:56] Evet: ProLoser: yes, virtualbox
[02:56] ryah: would be awesome
[02:56] ChrisPartridge: install virtualbox
[02:56] SubStack: already the diffie-hellman key exchange works
[02:56] Evet: heh
[02:56] ProLoser: seriously? do i gotta?
[02:56] SubStack: that's what I wrote bigint for
[02:56] SubStack: right now I'm abstracting out the key handling algorithms and parsing
[02:57] ChrisPartridge: ProLoser: you don't have to, but if you want to write cool code instead of messing about with building in cygwin, then yes
[02:57] ryah: SubStack: it will be awesome if it actually works
[02:57] SubStack: dss is like 20 lines
[02:57] SubStack: with bigint
[02:57] ProLoser: is node work ONLY as a server?
[02:57] SubStack: just had to find the right spec sheets
[02:58] ProLoser: like can i have it run in a webpage?
[02:58] Aria: "in" as in "in a browser", no.
[02:58] zoite has joined the channel
[02:58] ChrisPartridge: ProLoser: are you cakephp user? (i swear i've seen your name before)
[02:58] SubStack: ProLoser: node is just a wrapper around v8 to do file and network i/o
[02:58] mikegerwitz: ProLoser: One of the servers at my company is still on a Windows system (our production is fortunately not). One of the other developers came acrossthis website: http://node-js.prcn.co.cc/
[02:58] Aria: Not without c++ bindings to webkit, which we have much better as "chrome"
[02:58] ProLoser: ChrisPartridge: yes
[02:58] dnolen has joined the channel
[02:59] Evet: ryah: when will you implement widget toolkit?
[02:59] ProLoser: let me explain my goal and perhaps you can better direct me
[02:59] mikegerwitz: ProLoser: We do not use that binary in production, but it seems to run the production code reasonably well
[02:59] konobi: Evet: HA... feck off
[02:59] ProLoser: i want to develop an irc extension for google chrome
[02:59] ProLoser: i kinda thought that i could use node for that
[02:59] ProLoser: i found an irc lib for node and thought i could run that in a background file
[02:59] ProLoser: and then put the visual gui in the frontend file
[02:59] ChrisPartridge: ProLoser: very unlikely
[02:59] ProLoser: but i guess i'm slightly confused
[02:59] mikegerwitz: ProLoser: Ah, nvm then :) No
[02:59] ProLoser: damn
[03:00] konobi: ProLoser: s/php/nodejs/
[03:00] mikegerwitz: ProLoser: Node uses V8, the same JS engine as Chrome. But that's as far as it goes.
[03:00] konobi: voila
[03:00] ProLoser: i was sorta hoping that although node is intended for server side, it could be used client-side
[03:00] ProLoser: guess i was wrong
[03:00] insin: doesn't Chrome have websockets?
[03:00] Ond: Yep
[03:00] ProLoser: i don't want to run a server
[03:00] mikegerwitz: insin: Yes, you can develop an IRC client using web sockets
[03:00] ProLoser: i just want to create a client frontend
[03:01] mikegerwitz: But that has nothing to do with node
[03:01] Aria: Frontend for what?
[03:01] insin: indeed
[03:01] ProLoser: for irc
[03:01] Aria: Aaaah.
[03:01] Evet: irc client built in chrome
[03:01] ProLoser: i want a chrome extension for irc
[03:01] Aria: You'd need something to convert websockets to sockets.
[03:01] SubStack: ProLoser: why do you want an extension instead of just a webpage?
[03:01] ProLoser: ?
[03:01] Aria: Node is good for that. Then Chrome could do the rest.
[03:01] ProLoser: SubStack: web page is problematic
[03:01] ProLoser: here's the thing
[03:01] ProLoser: i'm in webchat right now
[03:01] ProLoser: i tried putting it into an extensions
[03:02] ProLoser: but it destroys the window when the extension minimizes
[03:02] ProLoser: so i was thinking of keeping a connection alive with a background file
[03:02] ProLoser: and then just kinda screening into it from the front end
[03:02] konobi: chrome extensions are _just_ webpages
[03:02] ProLoser: when i found the node lib on irc i thought it was a start
[03:02] SubStack: ProLoser: you can build what you wnat with a web page
[03:02] Evet: npm install python-gtk
[03:02] Evet: oops
[03:02] ProLoser: konobi: i know, and (usually) so is js
[03:02] Evet: node-gtk
[03:02] SubStack: much easier
[03:03] Aria: ProLoser: Sounds like you want webworkers.
[03:03] konobi: ProLoser: chrome gives you a little more... but it was designed to be that way
[03:03] ProLoser: ACTION googles
[03:03] ProLoser: konobi: be what way?
[03:03] piscisaureus: Looks like a #chromium / #chromium-extensions topic
[03:03] ProLoser: i have no problem with extensions being web-pages
[03:03] ProLoser: i have a problem with extensions destroying the session
[03:03] konobi: Aria: nah... IRC requries a constant connection... you need a contant connection
[03:03] Evet: okay, there is a fact that people want to use nodejs in client-side
[03:03] ProLoser: konobi, Aria : chrome lets you run a background file
[03:03] konobi: and since chrome doesn't give you direct socket access... ain't gonna happen
[03:03] ProLoser: i thought the background file could hold the connection open
[03:03] Aria: Exactly.
[03:04] ProLoser: but i don't know what more i can do from there
[03:04] Aria: Then you pass messages to the frontend, and it rebuilds its display from that when it opens.
[03:04] konobi: you have to proxy via something
[03:04] ProLoser: i need to get a visual interface from background to foreground
[03:04] ProLoser: Aria: ya pretty much
[03:04] ProLoser: but i don't know how i would do that part
[03:04] ProLoser: i suppose i should look for vanilla js scripts
[03:04] ProLoser: but they seem to be fairly lacking
[03:08] mlins has joined the channel
[03:08] Apes has joined the channel
[03:10] dshaw has joined the channel
[03:11] ncb000gt has joined the channel
[03:16] lukegalea has joined the channel
[03:17] sivy has joined the channel
[03:23] sechrist has joined the channel
[03:24] malkomalko has joined the channel
[03:26] miketaylr has joined the channel
[03:26] lukegalea has joined the channel
[03:26] Utkarsh_ has joined the channel
[03:26] eyesUnclouded has joined the channel
[03:27] pyrotechnick has joined the channel
[03:27] pyrotechnick: morning
[03:28] ChrisPartridge: ACTION waves
[03:28] pyrotechnick: just picking a new test library for a new project
[03:28] pyrotechnick: was just going to roll with assert but this will be a relatively large one
[03:28] pyrotechnick: what's everyone
[03:28] pyrotechnick: recommendations?
[03:29] Ond: What's the new project
[03:29] sh1mmer has joined the channel
[03:29] pyrotechnick: html5 poker client
[03:29] pyrotechnick: they have java server/client atm we're basically in here to replace it all eventually
[03:29] pyrotechnick: but for now we're backing onto the java via a node proxy
[03:30] jesusabdullah: test framework?
[03:30] pyrotechnick: yeah
[03:30] jesusabdullah: Probably either expresso or vows
[03:30] pyrotechnick: i've used vows and tobi
[03:30] pyrotechnick: expresso
[03:30] pyrotechnick: thanks i havent heard of that one
[03:30] jesusabdullah: orly?
[03:30] jesusabdullah: It's a pretty common one
[03:30] jesusabdullah: I understand that it's less verbose than vows
[03:30] jesusabdullah: I haven't used vows though
[03:30] pyrotechnick: vows is sick
[03:30] unomi has joined the channel
[03:31] jesusabdullah: It seems like people either love vows or hate it
[03:31] ncb000gt: pyrotechnick: i've also used nodeunit
[03:31] jesusabdullah: If you like vows, I'm sure it's up to snuff for handling a larger project
[03:31] pyrotechnick: i wouldnt mind something that can fudge http requests
[03:31] pyrotechnick: like tobi or zombie
[03:31] pyrotechnick: we will have soda tests too
[03:32] pyrotechnick: but it would be nice to have some headless ones
[03:34] ProLoser: headless zombies?
[03:35] pyrotechnick: haha
[03:35] pyrotechnick: maybe that's why it's called zombie...
[03:36] DTrejo has joined the channel
[03:36] DTrejo: two modules published in less than 31 minutes! https://github.com/DTrejo/gss https://github.com/DTrejo/tictoc **double kill!**
[03:38] DTrejo: is it a good idea to include a license with your code?
[03:38] SubStack: I don't think it matters very much either way
[03:39] DTrejo: ok, cool, cus I haven't been including any lately
[03:39] SubStack: setting license in the package.json should be good enough
[03:39] SubStack: shit I need to remember to do that
[03:39] DTrejo: ACTION goes to look up how to do that
[03:39] Spion_ has joined the channel
[03:39] daveluke has joined the channel
[03:40] DTrejo: it's not in here: https://github.com/isaacs/npm/blob/master/doc/developers.md#readme
[03:41] BillyBreen has joined the channel
[03:41] DTrejo: oh well whatever
[03:41] SubStack: that's the spirit!
[03:41] DTrejo: npm has a license in it
[03:41] DTrejo: https://github.com/isaacs/npm/blob/master/doc/developers.md#readme
[03:41] DTrejo: hehe
[03:41] DTrejo: oops wrong link
[03:41] DTrejo: https://github.com/isaacs/npm/blob/master/package.json
[03:42] DTrejo: I suppose I could add an mit license to them
[03:44] mikegerwitz: DTrejo: It's usually best to include a mention of the license in the header of every source file and is courtesy to include a LICENSE file containing the license. I'm unsure if you're asking for best practice or simply what's required to license your code
[03:45] DTrejo: I'm just wondering about best practive
[03:45] DTrejo: *practice
[03:45] secoif: anything like cucumber for node?
[03:45] lukegalea has joined the channel
[03:45] secoif: I've seen https://github.com/nodejitsu/kyuri
[03:45] ossareh has joined the channel
[03:45] secoif: not sure if production ready
[03:45] tmpvar has joined the channel
[03:45] daveluke_ has joined the channel
[03:46] SubStack: mikegerwitz: I absolutely HATE it when source files have bullshit boilerplate at the top
[03:47] mikegerwitz: SubStack: It's important to place the license within every source file, so that if the file is distributed independently (which is permitted with most licenses), the license is still clear
[03:47] AAA_awright: I'm with SubStack
[03:47] SubStack: if the license is unclear then don't fucking use it
[03:47] pyrotechnick: yeah
[03:48] SubStack: track down the original package
[03:48] pyrotechnick: i'm with you SubStack
[03:48] jacobolus has joined the channel
[03:48] AAA_awright: You shouldn't be using a license that's going to get someone in trouble because they distributed it the wrong way
[03:49] mikegerwitz: AAA_awright: A license exists for a reason. Unless you intend on releasing the code into the public domain, there's no point in using a license. "Getting someone in trouble" is hardly the purpose.
[03:50] mikegerwitz: If there's no interset in claiming copyright, then you needn't worry about it.
[03:50] AAA_awright: Exactly my point.
[03:50] AAA_awright: mikegerwitz: http://unlicense.org/ if you do go with a license, a liberal one like what Node.js has, or BSD, etc.
[03:51] DTrejo: mikegerwitz, AAA_awright : I just did put the MIT license on them, just like npm
[03:51] unlink has joined the channel
[03:51] unlink has joined the channel
[03:51] mbrochh has joined the channel
[03:51] mbrochh has joined the channel
[03:51] SubStack: also, pedant here, MIT is ambiguous
[03:51] SubStack: MIT the institution uses many licenses
[03:51] SubStack: MIT/X11 or MIT/Expat is more clear
[03:51] DTrejo: oh, well actaully I didn't use mit, hmm
[03:51] DTrejo: https://github.com/isaacs/npm/blob/master/LICENSE
[03:51] SubStack: not that it matters
[03:51] DTrejo: whatevvs
[03:51] mikegerwitz: AAA_awright: I feel I should mention I am a member of the Free Software Foundation
[03:52] mikegerwitz: Thus my emphasis on licensing
[03:52] mikegerwitz: I don't care what others license their code as. I was just providing input for DTrejo .
[03:53] unomi has joined the channel
[03:53] w0rse_ has joined the channel
[03:53] DTrejo: shameless plug for 20 line modules: in case you wanted to see what I actually wrote: https://github.com/DTrejo/gss and tictoc like in matlab https://github.com/DTrejo/tictoc
[03:53] DTrejo: thanks for the advice guys :)
[03:54] SubStack: boilerplate licenses violate DRY is my main objection
[03:55] SubStack: and are aesthetically displeasing
[03:55] AAA_awright: Eh, redundancy isn't always unjustified. I'm not against single-line @license metadata, for instance.
[03:55] DTrejo: SubStack: it's all about having your build system auto-insert them b/c of a one line comment you add at the top ;)
[03:55] mikegerwitz: SubStack: I'm not saying I like duplicate text all over the place :) I rather dislike it. The purpose is for copyright, that's all. Even a single line as AAA_awright mentioned, is better than nothing.
[03:56] davem has joined the channel
[03:58] AAA_awright: I would also say it's an effect of my view, I'm now totally sold "free" software is a virus, as is anything that imposes restrictions on redistribution (which the GPL does, and to a lesser extent the BSD, MIT, etc licenses)
[03:58] davem: any thoughts on replacing nginx with node.js for reverse proxy?
[03:59] dgathright_ has joined the channel
[04:00] AAA_awright: Think "Liberal as in liberty" etc
[04:00] mikegerwitz: davem: I wouldn't. nginx is very good at its job. No need to add any overhead unless there's some other benefit you're looking for (e.g. easily scripting it)
[04:00] AAA_awright: davem: What would you replace it with?
[04:01] mike5w3c has joined the channel
[04:02] Spion_ has joined the channel
[04:02] davem: currently have nginx proxying to tomcat, comet with rapid ajax polling . works fine, but latency low, and overhead hi. We are evaluating node+redis, to handle a) static, b) comet (socket.io), and c) reverse proxy to tomcat which will publish to redis->node.js->socket.io. Have a prototype of this working (absent the reverse proxying) - impressive performance, but node does tend to crash randomly.
[04:03] EyePulp has joined the channel
[04:03] AAA_awright: Does Node.js do HTTP/1.1 persistent connections?
[04:03] AAA_awright: Nginx does, that's a definite benefit
[04:03] tranqenstein: yup
[04:03] Aria: Yes, it does.
[04:03] Aria: Also, on the callout side of it, too, unlike nginx
[04:04] softdrink has joined the channel
[04:04] davem: yes, and you can turn off buffering: proxy_buffering off
[04:05] davem: so, reverse proxying for node?
[04:05] eyesUnclouded has joined the channel
[04:06] davem: seems that reverse proxying from nginx to node kills socket.io, causing it to default to xhr_polling, and somehow this exhausts node resources and crashes it (best I can tell from the errors).
[04:06] davem: any pointers to error handling in node?
[04:07] AAA_awright: Someone would have to sell me on the throughput with Node.js w/ child processes vs. Nginx load balancing before I switch away from Nginx (and in any event I still have some PHP to run, so in addition there needs to be a FastCGI plugin)
[04:07] mikegerwitz: davem: What does it crash with? And from what it sounds like, node's also doing DB logic, so it's not just a proxy?
[04:07] dustym has joined the channel
[04:08] davem: mike: I'll run it again and post the errors. Currently it's just socket.io reading messages off a redis pub/sub queue.
[04:09] Yuffster has joined the channel
[04:10] dguttman has joined the channel
[04:10] zoite: I'm having a problem with using :markdown, whenever I try to use it, it says it can't find the module. I have installed it markdown and markdown-js though
[04:14] Xelysium has joined the channel
[04:15] maru_cc__ has joined the channel
[04:16] bentruyman has joined the channel
[04:17] SvenDowideit_ has joined the channel
[04:17] therrg has joined the channel
[04:17] davidwalsh has joined the channel
[04:19] nornagon_ has joined the channel
[04:19] langworthy has joined the channel
[04:19] pyrony has joined the channel
[04:20] kiddphunk_ has joined the channel
[04:20] ncb000gt: AAA_awright: there is a fastcgi module iirc
[04:20] AAA_awright: ...is there? I'll have to find some other reason to not switch then, uh
[04:20] ncb000gt: and with cluster you can get something like 12k rps per process
[04:21] ncb000gt: i'm not sure on the specifics but this is what tjholowaychuck has mentioned
[04:21] AAA_awright: How does it compare to Nginx though?
[04:21] ncb000gt: nfc
[04:21] ncb000gt: :)
[04:21] noahcampbell has joined the channel
[04:21] ncb000gt: haven't used nginx enought to compare
[04:21] ncb000gt: so i wouldn't give a fair assessment
[04:22] mikegerwitz: I had seen a benchmark against node and nginx I think at OSCON and the results back then weren't too bad, actually. I'd imagine they're better now. Wonder if I can dig it up
[04:23] mikegerwitz: http://www.slideshare.net/sh1mmer/nodejs-and-how-javascript-is-changing-server-programming this was 7 months ago, though
[04:24] softdrink: i need a better name than "Clobject" for my "collaborative object" class
[04:24] sh1mmer: hm?
[04:24] sh1mmer: oh those benchmarks are super old
[04:24] ncb000gt: mikegerwitz: yea, the other issue there is that isn't in a clustered/worker based environment
[04:24] sh1mmer: I just stole them off Ry
[04:24] ncb000gt: :)
[04:25] sh1mmer: who stole them off someone else I think'
[04:25] mikegerwitz: Oh, you're in here. Heh, look at that
[04:25] sh1mmer: mikegerwitz: url included my nick
[04:25] sh1mmer: and thus I was summmoned
[04:25] mikegerwitz: Yeah, my point was, node was pretty close back then. So it may surpass nginx now, who knows! Unless you have a shitton of requests, I doubt you'll notice
[04:25] mikegerwitz: sh1mmer: heh, thought that amy be the case :)
[04:26] sh1mmer: I was working on a node based router a while ago
[04:26] sh1mmer: but I got busy
[04:26] mikegerwitz: sh1mmer: Didn't actually attend your seminar (lucky coworker did), but your presentation helped to sell the company I work for on using node ;) So some belated thanks! heh
[04:27] sh1mmer: nice
[04:27] sh1mmer: mikegerwitz: where do you work?
[04:27] mikegerwitz: A small insurance company near Buffalo, NY that nobody has ever heard of. We only write business in NY. But they're investing a bit into their IT department.
[04:28] sh1mmer: nice
[04:28] mikegerwitz: I can't complain. Got a free OSCON trip out of it.
[04:28] sh1mmer: :)
[04:28] sh1mmer: We may be doing a whole Node.js track at OSCON this year
[04:28] sh1mmer: currently under discussion
[04:28] mikegerwitz: Oh, really? I was just about to ask if there's anything interesting lined up
[04:28] zorzar_ has joined the channel
[04:28] sh1mmer: my book should be out for OSCON
[04:29] mikegerwitz: Hopefully we'll be sent this year - have been the past two. Ah what book is that?
[04:29] sh1mmer: Up and running with Node.js
[04:29] ncb000gt: sh1mmer: where is oscon this year? portland?
[04:29] sh1mmer: it's the Oreilly animal book for node
[04:29] mikegerwitz: ncb000gt: yep
[04:29] ncb000gt: hmmm
[04:29] mikegerwitz: Nice
[04:29] sh1mmer: hooray for portland
[04:30] mikegerwitz: Portland was a beautiful area. Was very happy to hear that it was there agian. And we have a subscription to Safari - I don't suppose your book is available yet on there? "Rough cuts" or anything?
[04:30] ncb000gt: sh1mmer: any idea on rough cost?
[04:30] jimt has joined the channel
[04:30] mikegerwitz: I'm essentially the only one out of a team of 5 that uses node, and I'm looking for material to introduce others.
[04:30] sh1mmer: ncb000gt: oscon or the book?
[04:30] mikegerwitz: we have an entire production system using it
[04:30] ncb000gt: sh1mmer: oscon
[04:30] kkaefer: sh1mmer: I'm hoping it'll feature a ferret
[04:31] ncb000gt: sh1mmer: i have a training budget, might be able to con my way into attending
[04:31] sh1mmer: kkaefer: *sigh*
[04:31] ncb000gt: if there is a "node track"
[04:31] sh1mmer: so far my animal is the common tree shrew
[04:31] sh1mmer: or something
[04:31] sh1mmer: I really wanted the narwhal but it's gone
[04:31] kkaefer: heh
[04:31] kkaefer: the narwhal would've been awesome
[04:31] sh1mmer: yeah
[04:31] sh1mmer: some lame book on podcasting has it
[04:31] sh1mmer: total waste
[04:32] mikegerwitz: lol
[04:32] sh1mmer: ncb000gt: apparently reg opens in april
[04:32] ncb000gt: sh1mmer: yea i saw
[04:32] ncb000gt: just had no idea what historical costs were around registrations
[04:32] sh1mmer: I could have sold 10k copies to reddit, no worries, if the narwhal had been available
[04:32] sh1mmer: ncb000gt: me either since I never buy tickets for conferences
[04:33] ncb000gt: sh1mmer: :)
[04:34] davem: any possibility of getting a preview of the book?
[04:34] sh1mmer: yes!
[04:34] sh1mmer: early cut going out this week probably
[04:34] mikegerwitz: great
[04:34] sh1mmer: I had some personal stuff going on so it's a little behind but I'm trying to catch up
[04:34] sh1mmer: and I'm planning to do a release every 2 weeks
[04:34] sh1mmer: follow me on twitter for updates I guess
[04:35] ncb000gt: sh1mmer: updates of what? the book?
[04:35] sh1mmer: I haven't quite got the book web site ready yet
[04:35] sh1mmer: yeah
[04:35] ncb000gt: sorry, releases of what?
[04:35] ncb000gt: cool
[04:35] sh1mmer: I'm going to release what I've written every 2 weeks
[04:35] sh1mmer: it'll be free online until it's published
[04:35] jimt_ has joined the channel
[04:35] sh1mmer: I dunno if they leave it up after that or if they take it down now
[04:36] sh1mmer: -now
[04:36] kkaefer: sh1mmer: maybe you can get the illustrators get creative and draw a spidermonkey ;)
[04:36] mikegerwitz: Can't argue with that :)
[04:36] sh1mmer: kkaefer: I think that's gone too
[04:36] sh1mmer: kkaefer: I was trying to bargain for a giant squid
[04:36] sh1mmer: maybe I should just send the artist chocolates
[04:36] davem: cool, where can we find it?
[04:36] sh1mmer: I don't know yet
[04:36] sh1mmer: I'm waiting on O'Reilly to tell me
[04:37] sh1mmer: as soon as I know I'll be tweeting about it
[04:37] sh1mmer: also hte mailing list
[04:40] secoif_ has joined the channel
[04:40] gf3` has joined the channel
[04:41] iFire has joined the channel
[04:42] davem: sh1mmer: your twitter name?
[04:42] sh1mmer: yep
[04:42] sh1mmer: sh1mmer is me mostly everywhere
[04:43] davem: thx
[04:44] dnyy has joined the channel
[04:46] mbrochh]2 has joined the channel
[04:46] sh1mmer: is everyone in the bay area coming to the event tomorrow?
[04:47] ncb000gt: :(
[04:47] ncb000gt: <-- east coast
[04:48] davem: what event?
[04:48] mikegerwitz: All I get to enjoy is snow.
[04:49] sh1mmer: http://joyentnodejsannounce.eventbrite.com
[04:49] sudoer has joined the channel
[04:49] davem: i'll be there, thanks!
[04:49] davem: will be interesting in hearing/sharing re node+redis+nignx
[04:50] sh1mmer: the new stuff we'll be demoing is the bomb
[04:50] keyvan has joined the channel
[04:51] mikegerwitz: Do you publish any presentations or anything after the event?
[04:52] sh1mmer: they may be recording it
[04:52] wyattisimo has joined the channel
[04:52] sh1mmer: but you'll be able to play with No.de for yourself anyway :)
[04:53] sh1mmer: ACTION can't give away any more
[04:53] mikegerwitz: heh :)
[04:53] lukegalea has joined the channel
[04:54] ncb000gt: sh1mmer: are you with joyent now?
[04:55] dominictarr__ has joined the channel
[04:56] sh1mmer: ncb000gt: yes
[04:56] sh1mmer: I have been for a while but I can now talk about having left Yahoo
[04:57] ncb000gt: sh1mmer: haha gotcha
[04:57] ncb000gt: when did you leave?
[04:57] kenbolton has joined the channel
[04:57] kawaz_air has joined the channel
[04:57] sh1mmer: The day after NodeCamp
[04:58] ncb000gt: ahh, gotcha
[05:00] mikegerwitz: I don't suppose any of you have tried compiling node 0.4.0 on OpenBSD? Hit a dead end. Not sure if it's a known issue or if it's a V8 bug. I've gotten mixed answers from prior bug reports and mailing lists.
[05:01] mikegerwitz: I haven't tried 0.4.1 yet.
[05:01] kriszyp has joined the channel
[05:01] ncb000gt: mikegerwitz: i haven't
[05:01] mscdex: what version of openbsd?
[05:01] sh1mmer: mikegerwitz: hm. you might try some of the yahoo guys
[05:01] sh1mmer: they use freebsd
[05:01] sh1mmer: I don't know if you'd hit the same issues
[05:01] mikegerwitz: I saw V8 bugs for FreeBSD with the same issue
[05:02] sh1mmer: it's possible the y! guys have just been doing rhel
[05:02] mikegerwitz: mscdex: Umm, 4.8 I believ
[05:02] mscdex: ok, let me check
[05:02] mikegerwitz: I'd try to jump in and fix it myself but I've had no prior OpenBSD (or any BSD) experience for that matter. And didn't have the time to invest.
[05:03] mikegerwitz: Thanks mscdex
[05:04] rfay_ has joined the channel
[05:04] mlins has joined the channel
[05:05] ossareh has joined the channel
[05:11] bluesnoop has joined the channel
[05:11] noahcampbell has joined the channel
[05:13] sstephenson has joined the channel
[05:13] mrkurt has joined the channel
[05:13] reid: s
[05:13] brapse has joined the channel
[05:15] reid: sh1mmer: RHEL only, sorry. :(
[05:15] sh1mmer: that's probably a good thing
[05:15] sh1mmer: for you at least
[05:16] reid: very much so
[05:17] Xelysium_ has joined the channel
[05:18] mbrochh has joined the channel
[05:20] nejucomo has joined the channel
[05:20] dguttman has joined the channel
[05:22] pcardune has joined the channel
[05:26] bentruyman has joined the channel
[05:26] Xelysium has left the channel
[05:28] sudoer has joined the channel
[05:28] lukegalea has joined the channel
[05:31] secoif: So I have this crappy api i wrote for a client (written for php/drupal), and I'd like to run tests on it... I'd like to be able to do something like "posting X data, to Y url, should return Z string"
[05:32] secoif: there's a fair few testing frameworks
[05:32] secoif: anyone have any recommendations as to which one I should use for something like the above
[05:33] ncb000gt: secoif: http://visionmedia.github.com/expresso/
[05:33] ncb000gt: secoif: specifically look for assert.response
[05:34] secoif: ncb000gt: spot on. That looks good.
[05:34] secoif: ncb000gt: do you use that yourself?
[05:35] ncb000gt: secoif: i use expresso on personal projects(starting a couple weeks ago)
[05:35] ncb000gt: previously i used nodeunit
[05:35] ncb000gt: because it was something we were using at the office
[05:35] ncb000gt: we had looked at expresso at the office and decided on nodeunit for some reason
[05:35] secoif: nodeunit more for testing code pieces though right?
[05:35] ncb000gt: but i didn't make the decision so i can't remember why
[05:36] secoif: 'pieces'
[05:36] ncb000gt: you can do both, we are def. testing server responses with nodeunit
[05:36] ncb000gt: i think the choice came down to statefullness
[05:36] ncb000gt: or something like that
[05:37] ncb000gt: nodeunit does it's tests sequentially
[05:37] ncb000gt: whereas expresso is parallel iirc
[05:38] ncb000gt: both will handle async requests, it's just more to do with ordering and the number of tests running.
[05:38] ncb000gt: i also kind of like the output of nodeunit
[05:38] ncb000gt: but expresso's output is growing on me :)
[05:38] somebody has joined the channel
[05:39] lukegalea has joined the channel
[05:40] somebody: hey, can anyone tell me if this would be "hard"? I'm a beginner, and i've gotten as far as writing a script that watches the contents of a directory and outputs to the console when something changes. Now I'm trying to make it so a webpage reloads when the contents of a directory change.
[05:41] somebody: What is my best bet for holding the connection "open" between the page and server, so the server can tell it to reload?
[05:41] ncb000gt: somebody: how are you attempting this, or are you just working on the idea?
[05:41] ncb000gt: somebody: websockets
[05:41] razvandimescu has joined the channel
[05:41] secoif: ncb000gt: thanks heaps
[05:41] somebody: well im working on it, i got as far as watching a directory, but only outputting to the local console
[05:41] secoif: ncb000gt++
[05:41] v8bot: secoif has given a beer to ncb000gt. ncb000gt now has 2 beers.
[05:41] ncb000gt: you can use ajax polling too, but websockets would be better, unless you have older browsers to support
[05:41] ncb000gt: secoif: haha np :)
[05:42] ncb000gt: and even then, the socket.io libs by learnboost actually provide alternative tools
[05:42] ncb000gt: erm sorry, that last part wasn't clear or helpful
[05:42] ncb000gt: got distracted before i finished
[05:43] mscdex: mikegerwitz: yeah i dunno, it doesn't seem the freebsd patch for the problem is portable to openbsd
[05:43] mscdex: openbsd doesn't have ucontext.h
[05:43] somebody: ncb000gt: i would need older browser support. I am attempting to make a live photo blog. Camera with Eye-Fi card (SD card with built in wi-fi) that connects to my phone's wifi sharing and uploads photos via ftp. Now just need to display the photos in real time ;)
[05:43] ncb000gt: the socket.io libs will downgrade functionality gracefully such that you don't have to take care of it
[05:43] mikegerwitz: mscdex: Yeah I had tried applying that patch with little success... : / thanks though
[05:43] mscdex: and i'm not knowledge enough about v8 internals to create something
[05:43] mikegerwitz: mscdex: same
[05:43] mikegerwitz: mscdex: Thanks for the try, though. At least I'm not the only one!
[05:44] ncb000gt: somebody: interesting project :)
[05:44] mscdex: mikegerwitz: it's probably worthwhile creating an issue on the v8 project issue tracker though
[05:44] ncb000gt: somebody: i'd recommend using socket.io from the learnboost dudes
[05:44] ncb000gt: http://github.com/learnboost
[05:44] ncb000gt: should have links to the stuff you'll need
[05:44] ncb000gt: they have a clientside lib that falls back on a flash file to keep the connection open for long polling
[05:44] mikegerwitz: mscdex: That was my next step. I had seen some old ones, but I don't recall if they're still open. Regardless I'll post my input
[05:45] somebody: hmm, does that support IE?
[05:45] somebody: oh, nice. i hate flash, but i guess that would work
[05:45] ncb000gt: and for modern browsers they use websockets
[05:45] ncb000gt: somebody: yea, i'm not a fan either, but it needs support too :)
[05:45] somebody: heh, yeah
[05:45] murz has joined the channel
[05:46] ncb000gt: my node knockout project was actually somewhat similar to yours, but we spent so much time futsing around with mongodb that the front end suffered a lot
[05:46] mbrochh]2 has joined the channel
[05:47] ncb000gt: it was supposed to be realtime web updated images (based around the graphics magick library we built which was the real purpose of the project) but mongo and gridfs decided to hate me
[05:47] somebody: hmm, looking at the example on front page of www.socket.io this looks like it could be fairly simple..
[05:47] ncb000gt: somebody: i did have websockets working, it was very quick and worked REALLY well with the eventing model of node
[05:48] ChrisPartridge: ncb000gt: have you used gridfs much?
[05:48] ncb000gt: somebody: also, :%s/simple/straight forward/
[05:48] ncb000gt: :)
[05:48] ncb000gt: ChrisPartridge: nope. after fighting with it that one time i decided against it
[05:48] somebody: well yeah lol
[05:48] ncb000gt: i'm sure it's gotten better now
[05:49] ncb000gt: but i tend to use riak these days
[05:49] fangel has joined the channel
[05:49] ncb000gt: after a decent stint on the couchdb
[05:49] ncb000gt: as a side note, Luwak in Riak is somewhat similar to what I expected from GridFS
[05:49] colinsullivan has joined the channel
[05:50] somebody: hmm
[05:50] stonecobra has joined the channel
[05:50] ChrisPartridge: ncb000gt: cool, i'll take a look at Luwak
[05:50] keyvan has joined the channel
[05:51] somebody: hmm i didn't even think of resizing and thumbnails, that's gonna be outta my league heh
[05:52] somebody: so you coded a image magik lib for node.js, i would probably need something like that, huh?
[05:52] ncb000gt: somebody: wwwwweeeeeellllllll, i'm looking for testers and bug reporters on the latest of merlin
[05:52] ncb000gt: :)
[05:52] ncb000gt: >=D
[05:52] ncb000gt: https://github.com/ncb000gt/merlin
[05:52] ncb000gt: the latest is not in npm
[05:52] secoif: ncb000gt: any experience with/opinion on cucumber-style test frameworks?
[05:52] ncb000gt: secoif: nah, my first thought when i saw them was /puke
[05:52] somebody: heh
[05:53] secoif: ha
[05:53] somebody: thanks
[05:53] secoif: mm
[05:53] ncb000gt: but, as with many of my opinions, they are founded on 10 second overviews :)
[05:53] ChrisPartridge: ncb000gt: If you dont mind me asking, what size files are you storing in luwak and is performance OK?
[05:53] ncb000gt: somebody: i can't promise it's rock solid, but it will give you buffer based data
[05:53] somebody: wow, nice
[05:54] ncb000gt: ChrisPartridge: my files are typically around 5-10 mb
[05:54] ncb000gt: performance was surprisingly good for my sample data
[05:54] ncb000gt: they were mostly images
[05:54] ncb000gt: although i am also storing data
[05:54] ncb000gt: but the file side was really only a few megs
[05:55] ChrisPartridge: cool, and you can store meta-data against the files?
[05:55] ncb000gt: ChrisPartridge: i'd recommend checking it out with much larger data
[05:55] ncb000gt: That was the only issue with luwak
[05:55] ncb000gt: i couldn't store metadata with the files, at least not using riak-js
[05:55] ncb000gt: that or i implemented it wrong
[05:55] ncb000gt: :)
[05:56] somebody: buffer based data...so like if i called var new_image = image.resize(300, 400); more than once, it would buffer the thumbnail of the first and give the second call the thumbnail without doing much work?
[05:56] ncb000gt: so i ended up storing meta data in a separate bucket
[05:56] somebody: im guessing creating a thumbnail for every request has gotta tax resources
[05:56] ncb000gt: somebody: it will keep the objects around in memory as long as you're using them, otherwise v8 will collect them at some point (assuming no leaks)
[05:57] somebody: hmm cool.
[05:57] ncb000gt: somebody: but you'd do something like var new_img = img.resize(200,200);
[05:57] tk has joined the channel
[05:57] ncb000gt: and you'd get a new MerlinImage
[05:57] somebody: yeah
[05:57] ncb000gt: what is nice is that because it returns a merlinimage you can chain the functions
[05:58] ncb000gt: .resize(200,200).crop().rotate()
[05:58] ncb000gt: and so on
[05:58] somebody: but it will handle not making the exact same thumnail size over and over for each user?
[05:58] mscdex: does merlin add a watermark of a wizard to all images?
[05:58] mscdex: :D
[05:58] somebody: wow, cool
[05:58] dshaw has joined the channel
[05:58] ncb000gt: mscdex: i'm on it!
[05:58] ncb000gt: somebody: it doesn't handle any of that, you'd have to code some machinery around that because merlin is literally just bindings to GraphicsMagick
[05:59] somebody: oh ok
[05:59] ncb000gt: so it has no notion of "users"
[05:59] somebody: pretty cool
[05:59] ncb000gt: although it would probably be a good idea to create a hash of the data being requested
[05:59] ncb000gt: and if the transform exists
[05:59] ncb000gt: then return the already processed data
[06:00] somebody: way outta my league :P
[06:00] ncb000gt: but i suspect that the caching layer would be less efficient than cpu utilization
[06:00] ncb000gt: i don't know
[06:00] ncb000gt: :)
[06:13] meso_ has joined the channel
[06:14] ryanfitz has joined the channel
[06:15] davem has left the channel
[06:15] lukegalea has joined the channel
[06:16] hipe: hi sorry for offtopic but i trust the esteemed folks here. i think i'm looking for a parsing expression grammar parser (i will probably use PEG.js) just for arbitrary expression of date and time ranges in natural language (sure, we've all seen them)
[06:17] jesusabdullah: That sounds like a tough problem to me
[06:17] hipe: which brought me to reading this guy's phd thesis linked to from here that introduces OMeta: http://www.tinlizzie.org/ometa/
[06:17] hipe: surely u jest jesus ;)
[06:17] jesusabdullah: Well
[06:17] jesusabdullah: if someone did their PhD on it...
[06:17] jesusabdullah: Why do you need/want this?
[06:18] hipe: Date.parse() is pretty close to the amount of detail i want, but just for fun i want to make my own parser generated from a grammer, for the excercise for future work
[06:18] Emmanuel_: hipe: can't you do that in a simpler way
[06:18] Emmanuel_: like, match the time/date using regexp
[06:18] hipe: Emmanuel_: probably but i'm already ending up with regexp soup
[06:18] jesusabdullah: I'll tell you up front that idk much of anything about parsing, much less parser generators, grammars, etc
[06:18] Emmanuel_: yes, of course
[06:18] jesusabdullah: Well
[06:18] hipe: liek managing my own state machines etc
[06:18] jesusabdullah: regexp soup is a savory blend
[06:18] Emmanuel_: but that will be way worse
[06:18] jankoprowski has joined the channel
[06:19] jesusabdullah: Just don't want too many carrots.
[06:19] Emmanuel_: (and regexp *are* grammar parser
[06:19] hipe: i wrote this crap a while ago, i never want to repeat it: https://github.com/hipe/githelper/blob/master/lib/hipe-githelper.rb#L78-102
[06:19] hipe: regexps are good lexers they are not good parsers
[06:19] Emmanuel_: in NLP
[06:19] hipe: e.g. parse html with regex
[06:19] Emmanuel_: recognition of date and time
[06:19] Aria: Unless you have a regular language.
[06:19] Emmanuel_: is most often done using regepx, no ?
[06:19] hipe: Aria: ohai!
[06:19] jesusabdullah: html? Nooo
[06:19] Aria: Hi, hipe.
[06:20] Aria: HTML is so far from regular it's not even funny.
[06:20] SamuraiJack has joined the channel
[06:20] jesusabdullah: html typically should NOT be regexp'd
[06:20] SubStack: regulr expressions are great for regular languages
[06:20] secoif: ncb000gt: using expresso, I'm supposed to supply a server, but if the server isn't actually in node, I've got to set up some kind of some, uh, server proxy thing?
[06:20] Aria: html should typically be http://github.com/aredridel/html5'd
[06:20] hipe: ;)
[06:20] jesusabdullah: If it's one tiny thing and you can practically guarantee that for your use it's okay, but generally, yes, use an html-specific parser like Aria's
[06:21] Emmanuel_: hipe: take a look at some paper on Named Entity recognition
[06:21] Emmanuel_: and I think the "TIMEX" thing
[06:21] Emmanuel_: -> you will end up using regexp for sure \o/
[06:21] Aria: ACTION sighs and wishes https://github.com/joyent/node/pull/733 were in node core already.
[06:21] jesusabdullah: I think we should crowdsource this problem
[06:21] hipe: right all i'm saying is i want to parse ("2008-01-16", "yesterday", "5pm", "dec", "last tuesday", "dec 07") and it's gonna know what i mean. Date.parse() would be fine except that it doesnt' distinguish btwn "2008" and "2008-01-01" which is a significant difference to me
[06:21] ncb000gt: secoif: possibly
[06:22] hipe: the fact that i am reading some thesis means i'm a bit off the path, but i just wanted to throw some of the musings out there
[06:22] jesusabdullah: "2008-01
[06:22] secoif: were you testing a node app?
[06:22] Aria: ACTION nods.
[06:22] SubStack: hipe: implement parsec in javascript
[06:22] jesusabdullah: "2008-01-01" --> 2006, right?
[06:22] SubStack: go go
[06:22] jesusabdullah: ;)
[06:22] ncb000gt: secoif: yes
[06:22] secoif: local* node app
[06:22] secoif: ah
[06:22] secoif: yeah
[06:22] secoif: hrrm
[06:22] Aria: All of those are regular, so a regexp can do the job.
[06:22] hipe: mm
[06:22] Aria: It might be huge to cover all the bases, but yeah.
[06:22] secoif: ncb000gt: thanks for that, will investigate
[06:22] dguttman has joined the channel
[06:22] ncb000gt: secoif: sure
[06:22] jesusabdullah: What does "regular" mean technically, in the jargon?
[06:23] SubStack: jesusabdullah: in chomsky's hierarchy of languages
[06:23] jakehow has joined the channel
[06:23] jesusabdullah: like, Nom Chomsky?
[06:23] Emmanuel_: yup
[06:23] jesusabdullah: I thought his only claim to fame was making outrageous statements about Israel or something
[06:23] Aria: No nesting, no context. Basically, you can reconstruct every valid input from a regexp.
[06:23] SubStack: specifically regular expressions are finite state automatons
[06:23] jesusabdullah: Being a scapegoat for extreme liberalism and whatnot
[06:23] Aria: Oh, heck no. Noam Chomsky is first a linguist.
[06:24] jesusabdullah: Only a scapegoat for extreme liberalism *second*
[06:24] SubStack: and an anarcho-syndicalist
[06:24] Emmanuel_: jesusabdullah: he is some kind of god in the NLP community
[06:24] SubStack: although in reality few regular expression libraries are proper finite state automatons
[06:25] StevenBlack has joined the channel
[06:25] Aria: Yeah? Most are DFA or NFA implementations
[06:25] jesusabdullah: That's probably a better term. My roommate would discuss with me the difference between today's "liberals" and the "liberals" of yesteryear and the technical Political Science meaning of liberalism
[06:25] Emmanuel_: ahah, love the WP definition
[06:25] gkatsev: chomsky is cool for the linguistics and related stuff he did. The stuff he is currently doing, feh.
[06:25] robotarmy has joined the channel
[06:25] jesusabdullah: Is that anything like a state machine?
[06:25] Emmanuel_: "[A regular language] can be described by a formal regular expression."
[06:26] SubStack: amusingly in haskell the regexp libraries tell you what type of automaton they are
[06:26] Emmanuel_: jesusabdullah: "it can be accepted by a deterministic finite state machine"
[06:26] gkatsev: yep, you can turn a regex into a DFA and vice versa
[06:26] jesusabdullah: What's a DFA?
[06:27] Aria: Deterministic Finite Automaton.
[06:27] jesusabdullah: These sound like big words meaning the same thing to me
[06:27] Aria: Bounded running time, etc.
[06:27] Aria: Yes.
[06:27] jesusabdullah: http://labviewwiki.org/State_machine is basically my understanding of what a state machine is/does
[06:27] Emmanuel_: jesusabdullah: because I think the definition of it goes from DFA to Regexp
[06:27] jesusabdullah: They're, like, the only reasonable way to get anything done with labVIEW
[06:27] jesusabdullah: <_>
[06:28] Emmanuel_: and
[06:28] Emmanuel_: I might be wrong
[06:28] Aria: The best way to get a feel for it is to know what the boundary cases are.
[06:28] Emmanuel_: but after the regular languages, come those that can be accepted by a Turing Machine
[06:28] Aria: Like, you can't write a regexp that matches only valid nested parentheses.
[06:29] mAritz has joined the channel
[06:29] gkatsev: well, unless you have counting
[06:29] jesusabdullah: You'd have to count parens that you'd seen previously, yeah
[06:29] gkatsev: which, 99% of regexes dont
[06:29] jesusabdullah: whereas doing a regexp kinda thing, you wouldn't expect to have
[06:29] gkatsev: the 1% being perl
[06:29] Aria: Hehe.
[06:29] zum has joined the channel
[06:29] Aria: Perl doesn't have regular expressions ;-)
[06:30] jimt has joined the channel
[06:30] jesusabdullah: same with a basic state machine, I'd think---that is, a basic fsm shouldn't "remember" what it's done previously
[06:30] jesusabdullah: I'd think
[06:30] Aria: It's got something much much more complex. With some amazingly well hacked bounds on running time for all but the most pathological cases.
[06:30] jesusabdullah: It should just eat a state, poop out a new state, and loop
[06:30] SubStack: (??{}) does eval in perl >:D
[06:30] Aria: Exactly, jesusabdullah. Regular expressions just have a marker for where they can backtrack to.
[06:30] Emmanuel_: not sure we can call that "remembering" though
[06:31] Emmanuel_: they're just in that state
[06:31] jesusabdullah: Sounds like perl has turing-complete expressions >:P
[06:31] Aria: Yeah. No list of history.
[06:31] Emmanuel_: but usually, they don't know what happen before
[06:31] SubStack: and then there's subpattern recursion
[06:31] Emmanuel_: they just know where they can go from here
[06:31] briznad has joined the channel
[06:31] gkatsev: jesusabdullah: no, just counting.
[06:31] jesusabdullah: Aww :(
[06:31] jesusabdullah: That'd be sweet
[06:31] SubStack: jesusabdullah: it does because you can eval
[06:31] jesusabdullah: Yeah, but that's cheating.
[06:31] jesusabdullah: ;)
[06:31] SubStack: pfft whatevs
[06:32] jesusabdullah: Haha
[06:32] SubStack: even without that perl has branching and recursion
[06:32] jesusabdullah: This reminds me of that Monty Python movie
[06:32] jesusabdullah: The Meaning of Life
[06:32] SubStack: and branch resets, backtracking
[06:32] jesusabdullah: in this case, regexps are the actual language/"feature presentation"
[06:32] jesusabdullah: and perl itself is just an afterthought
[06:33] eresair has joined the channel
[06:33] SubStack: perl is just a DSL for regular expressions!
[06:33] SubStack: hah
[06:33] jesusabdullah: Indeed XD
[06:33] hipe: SubStack: watch what you wish for me to do i might spend a month working at it and totally failsaucing all over it ;)
[06:34] secoif: can
[06:34] secoif: t
[06:35] SubStack: hipe: re-implement perl in javascript instead
[06:35] secoif: can't figure out how to use a server to connect to remote sites, I think something like zombie.js could be more suited... perhaps
[06:36] secoif: it supports connecting to remote sites out of the box, no idea how to do that in expresso. oh well
[06:37] mjr_ has joined the channel
[06:38] SubStack: secoif: what does your server need to connect for?
[06:38] hipe: i recenty wanted to write my own CSS parser in ruby. i started out writing regexp soup, then i started using parsing expression grammars w/ ruby's treetop, then i started reading the spec for CSS and realized it was as non trivial (to me) as it is, then i wrote a parser using treetop that takes as input a LEXX token file thing and a YACC EBNF-like grammar thing and outputs a PEG grammar
[06:39] hipe: and now this is totally offtopic and i'll stop but i wanted to dump that somewhere
[06:39] jimt has joined the channel
[06:39] hipe: but yes, i think i had a grammar grammar grammar somewhere in there
[06:40] amerine has joined the channel
[06:41] Aria: Hehe.
[06:41] secoif: SubStack: I'm trying to test an external api written in php
[06:41] secoif: on a totally different box
[06:42] secoif: and i figured might be a good use case to get head around some node testing utils
[06:42] pyrotechnick has joined the channel
[06:43] SubStack: secoif: yes but why should expresso need to connect to remote sites?
[06:43] SubStack: OH expresso
[06:43] SubStack: not express >_<
[06:43] SubStack: carry on
[06:43] kiddphunk has joined the channel
[06:44] lukegalea has joined the channel
[06:44] secoif: :)
[06:46] binaryjohn has joined the channel
[06:46] mbrochh has joined the channel
[06:46] mbrochh has joined the channel
[06:46] mAritz: uhm.. uh oh. i've just npm published an update to one of my modules and now i get "Error: undefined log message" when i do "npm outdated"
[06:47] mAritz: isaacs, help!
[06:47] herbySk has joined the channel
[06:50] hipe: secoif: i just finised like a 150 line long unit testing thing with test cases tests and the option to run only some of them (command line option) and it wraps node's assert.js
[06:50] unomi has joined the channel
[06:50] SubStack: secoif: you can just use the http module
[06:50] SubStack: http.get, http.request
[06:51] hipe: i refused to persuse the comptetiion before i wrote my own, but my point secoif if pls lemme know if you are looking for and unhappy with whatever unit testing libs are out there. most of the tests i found for node itself were of a bit more fast and loose style than i'm used to
[06:53] dguttman has joined the channel
[06:53] abraham has joined the channel
[06:54] stonebranch has joined the channel
[06:54] lukegalea has joined the channel
[07:02] dspree has joined the channel
[07:02] meso_ has joined the channel
[07:03] vonkow has joined the channel
[07:05] lukegalea has joined the channel
[07:06] lemonhall_ has joined the channel
[07:06] lemonhall__ has joined the channel
[07:07] lemonhall__ has left the channel
[07:07] yozgrahame has joined the channel
[07:08] alystair has joined the channel
[07:10] davem has joined the channel
[07:11] torgeir has joined the channel
[07:11] andrewfff has joined the channel
[07:13] davem has left the channel
[07:14] razvandimescu has joined the channel
[07:16] somebody: where do i get the modue 'ws'?
[07:16] lukegalea has joined the channel
[07:17] gf3 has joined the channel
[07:20] muhqu has joined the channel
[07:21] pau|c has joined the channel
[07:26] hipe: SubStack: i don't suppose you have any strong feelings for or against JSParsec? http://www.haskell.org/haskellwiki/Parsec (near JSParsec)
[07:27] hipe: now i have to learn what the significant difference is between a "monadic parser combinator" and parsing expression grammars, other than some haskell masturbatory project-euler-like parser generator :P
[07:28] SubStack: hah neat
[07:28] zubairov has joined the channel
[07:28] lukegalea has joined the channel
[07:29] Ond has joined the channel
[07:31] jetienne: rauchg where are you when i need you
[07:31] jetienne: how come socket.io redifine WebSocket global object ? without telling anyone!
[07:32] MrTopf has joined the channel
[07:34] mikeal1 has joined the channel
[07:35] lemonhall_ has joined the channel
[07:36] lemonhall_ has left the channel
[07:36] adrian_berg has joined the channel
[07:36] andrewfff has joined the channel
[07:37] utunga has joined the channel
[07:38] ph^ has joined the channel
[07:39] adrian_berg: the program executes, but doesn't function as intended. anyone care to look? http://pastie.org/private/tgb5z7uyyxmtsgcyj7jffg
[07:39] muk_mb has joined the channel
[07:40] jetienne: adrian_berg: what did you expect, and what does it do
[07:41] kal-EL_ has joined the channel
[07:42] ivanfi has joined the channel
[07:43] lukegalea has joined the channel
[07:44] jacobolus has joined the channel
[07:45] jetienne: https://github.com/LearnBoost/Socket.IO/blob/master/socket.io.js#L1571 socket.io redefining WebSocket without telling anyone :( costed me 2h of my life
[07:45] jetienne: i want them back! :)
[07:46] adrian_berg: jetienne: sorry, just saw your message, was running the code through jslint
[07:46] adrian_berg: i was expecting it to output "you said yes" when i input "yes"
[07:46] adrian_berg: instead it says "i don't know what you just said"
[07:46] mbrochh]2 has joined the channel
[07:47] keyvan- has joined the channel
[07:48] fangel has joined the channel
[07:48] jetienne: adrian_berg: looking
[07:49] saschagehlich has joined the channel
[07:49] andrewfff has joined the channel
[07:51] jetienne: adrian_berg: replace "yes" by "yes\n" and it works
[07:52] jetienne: adrian_berg: btw console.log() is ok in node too :)
[07:52] adrian_berg: aha
[07:52] jetienne: process.stdout.write('type something please\n'); <- can be replace by console.log()
[07:52] rtomayko_ has joined the channel
[07:52] Adman65 has joined the channel
[07:53] adrian_berg: jetienne: thank you
[07:53] adrian_berg: that's what someone was trying to tell me earlier, but i didn't understand
[07:53] luke` has joined the channel
[07:53] mike5w3c has joined the channel
[07:55] adrian_berg: ah, fugoki
[07:55] ChrisPartridge has joined the channel
[07:55] adrian_berg: it wasn't as clear to me as what you instructed
[07:55] qFox has joined the channel
[07:55] adrian_berg: again, thank you!
[07:56] adrian_berg: now to the input into several sections
[07:56] gozala has joined the channel
[07:58] n00dles has joined the channel
[07:59] n00dles: what is everyone actually out drinking or something?
[08:00] unfo-: the assumption that everyone is in your current timezone?-)
[08:00] unfo-: ACTION is at work coding
[08:00] hwinkel has joined the channel
[08:00] n00dles: quite the opposite, it's 8am in my timezone :)
[08:00] pquerna: i think thats tomorrow.
[08:00] pquerna: the drinking.
[08:00] n00dles: heheh
[08:00] pquerna: @joyent
[08:01] groom has joined the channel
[08:01] hipe: ACTION at home feigning work, watching a kieslowski. quit drinking a while back :P
[08:02] tmzt: whatching a what?
[08:02] n00dles: nice, which one?
[08:03] hipe: tmzt: 'la double vie de veronika" by this fun polish director, but i can only have watch b/c my french is only so-so and i might start playing with parser generators again
[08:03] n00dles: LOL
[08:03] hipe: ja i had no idea that the marionette puppet scenes in being john malkovitch were such a reference
[08:04] meso_ has joined the channel
[08:04] fly-away has joined the channel
[08:06] mraleph has joined the channel
[08:09] tmzt: hmm, I'm going to need dnode again for unread count
[08:09] tmzt: let's hope it works better this time :)
[08:10] n00dles: this is the first time I've been in here at this time, it's wierd
[08:10] n00dles: much quieter than usual (~10pm GMT)
[08:11] n00dles: i should get ready for work...
[08:11] SubStack: tmzt: didn't work last time?
[08:11] n00dles has left the channel
[08:13] andrewfff has joined the channel
[08:15] tmzt: SubStack: no, it just was very slow to intiialize because nginx
[08:15] tmzt: so I'm trying to get it do xhr-polling only on the client side, I had it set like that on the server but the client still tried ws, xhr-multipart, etc.
[08:16] SubStack: oh websockets on nginx >_<
[08:16] SubStack: what are you using nginx for?
[08:16] tmzt: also, I was using it for all the calls that needed ajax, switched those to basic POST and they work
[08:16] tmzt: vhost
[08:16] tmzt: I only have one ip
[08:16] SubStack: pretty sure people have done vhost stuff in node
[08:16] SubStack: might save you some trouble
[08:17] chapel: cluster
[08:17] chapel: :)
[08:17] SubStack: oh actually, if the problem is websockets perhaps not
[08:17] tmzt: yes, but I have different sites, including a couple using apache/php on the same server
[08:17] chapel: saved you some trouble
[08:17] tmzt: I have cluster now, it doesn't do multple sites either if they have different git checkouts
[08:18] tmzt: what I need is a client.setRepliesUnreadCount() dnode is perfect for that if I solve this issue
[08:18] tmzt: or client.UnreadCount.emit('update', value) but you don't have that marshalled :)
[08:18] SubStack: marshalled?
[08:19] SubStack: event emitters work just fine
[08:19] tmzt: converted to a wire account
[08:19] tmzt: oh, so how do I create an object and associate it with a specific client?
[08:19] SubStack: well you can just use the context of the connection or use conn.id for a unique identifier
[08:19] tmzt: sorry, wire account :) mean wire call
[08:20] jetienne: i got a node http server, i need a simple tool to keep it running... what is the "current best" ? something to start/stop/status the server. to log in a corner, to monitor it is still running ... this kind of thing. any suggestion
[08:20] tmzt: cluster
[08:20] SubStack: there's just the caveat for EventEmitters that dnode doesn't look at the prototype chain so you've got to make sure the methods you want to show up on the other side are available in Object.keys()
[08:20] jetienne: tmzt: url ?
[08:21] SubStack: tmzt: did you read my roll your own pubsub article?
[08:21] jetienne: node people got the bad habit to pick name which are not distinctif enougth to be searchable :(
[08:21] tmzt: git://github.com/LearnBoost/cluster.git
[08:21] tmzt: SubStack: not yet, had to come back to it
[08:21] tmzt: haven't needed dnode again until now
[08:21] lukegalea has joined the channel
[08:21] jetienne: https://github.com/learnboost/cluster
[08:22] jetienne: tmzt: ok thanks
[08:22] andrewfff has joined the channel
[08:22] SubStack: tmzt: seems like it'll be pretty useful for what you're building
[08:22] tmzt: I'd like to modularize my models and get a clearer picture of what's going on with the mongo/mongoose stuff (not using mongoose yet though)
[08:22] SubStack: the best way I've found to avoid race conditions since listening happens over the wire is to send along one side's bound emit function after all the listeners have been registered
[08:23] tmzt: what do you mean by has to be in ownProperties?
[08:23] SubStack: and the article distills that approach into something more conrete
[08:23] SubStack: *concrete
[08:23] nornagon_ has joined the channel
[08:23] mbrochh has joined the channel
[08:23] tmzt: let me give and example, I want to POST a new reply to a specific msgid
[08:24] SubStack: Object.hasOwnProperty.call(obj, name)
[08:24] tmzt: I don't want to use dnode for that directly, but I want a dnode event to be sent to a single client when that happens
[08:24] fugoki has joined the channel
[08:25] pcardune: is the behavior of node expected to be exactly the same as say... chrome? running setTimeout(function(){ console.log("hey"); }, NaN); in node will never execute the callback, but in chrome it executes immediately.
[08:28] andrewfff has joined the channel
[08:28] Druid_ has joined the channel
[08:30] mscdex: pcardune: you should use something like process.nextTick(function() {}); for something you want to execute the next time around the event loop
[08:30] tmzt: anybody know a clean way to do something that should be a hybrid between a tooltip window and a sticky?
[08:31] jetienne: tmzt: is it possible to do websocket with cluster ? i see this stuff is spawning node process. so i guess some http proxying is going on... no ?
[08:31] pcardune: mscdex: does that work in a browser too?
[08:31] mscdex: no, it's specific to node
[08:31] tmzt: jetienne: cluster doesn't do anything with the requests
[08:31] mscdex: but it's more efficient than say setTimeout(fn, 0) or similar
[08:32] jetienne: tmzt: how does it handle multi node process without proxuing ?
[08:32] SubStack: pcardune: it does with browserify!
[08:32] tmzt: jetienne: I think it hands off the sockets, also they are workers/threads not proxies
[08:32] jetienne: tmzt: ok
[08:33] darkredandyellow has joined the channel
[08:33] andrewfff has joined the channel
[08:34] lukegalea has joined the channel
[08:34] pcardune: I don't suppose anyone is using the futures module are they? That's where I discovered this funny setTimeout with a NaN case.
[08:37] [AD]Turbo has joined the channel
[08:37] [AD]Turbo: hi there
[08:37] ion- has joined the channel
[08:39] stonebranch has joined the channel
[08:40] msucan has joined the channel
[08:41] dgathright has joined the channel
[08:41] hoodoos has joined the channel
[08:43] andrewfff has joined the channel
[08:45] votz has joined the channel
[08:45] nornagon has left the channel
[08:47] mbrochh]2 has joined the channel
[08:47] zakabird has joined the channel
[08:48] saschagehlich has joined the channel
[08:49] jetienne: ACTION is in love with node_modules
[08:51] jetienne: tmzt: cluster doesnt close the file when the "./app" module is crashing. resulting in pipe(): Too many open files very shortly :)
[08:54] tbassetto has joined the channel
[08:54] mlncn has joined the channel
[08:55] Weltraumschaf has joined the channel
[08:56] lgl has joined the channel
[08:59] lukegalea has joined the channel
[08:59] __tosh has joined the channel
[09:00] sveimac has joined the channel
[09:04] maushu has joined the channel
[09:05] maushu: /l、 (゚、 。 7 l、 ~ヽ じしf_, )ノ
[09:05] maushu: KITTENS!
[09:05] Tom-Tomaso has joined the channel
[09:05] maushu: http://placekitten.com/
[09:05] jetienne: maushu: maybe on your screen :)
[09:06] maushu: ACTION slaps jetienne around with a kitten.
[09:06] maushu: KITTEN!
[09:08] ossareh has joined the channel
[09:08] tc77 has joined the channel
[09:09] lukegalea has joined the channel
[09:11] Emmanuel_: maushu: I love it :)
[09:11] Level1 has joined the channel
[09:12] seivan has joined the channel
[09:12] Iszak_Work: differnt
[09:12] dans_ has joined the channel
[09:13] TomY has joined the channel
[09:14] jacobolus has joined the channel
[09:15] dans_ has joined the channel
[09:15] nook has joined the channel
[09:16] Egbert9e9 has joined the channel
[09:20] lukegalea has joined the channel
[09:20] dgathright has joined the channel
[09:20] q_no has joined the channel
[09:21] andrewfff has joined the channel
[09:22] jbpros has joined the channel
[09:26] maushu: jetienne: Kitten password? People want to see naked kittens? This doesn't make sense!
[09:28] SubStack: node-kitten
[09:28] SubStack: .js
[09:28] hij1nx has joined the channel
[09:28] andrewfff has joined the channel
[09:29] jetienne: rahh i hate window... what a slow dog
[09:30] hoodoos has joined the channel
[09:31] MikhX has joined the channel
[09:31] maushu: http://blog.agiletortoise.com/post/3564424414/wolfram-alpha-doesnt-get-it
[09:33] lukegalea has joined the channel
[09:33] MikhX has joined the channel
[09:34] incon has joined the channel
[09:35] andrewfff has joined the channel
[09:36] jetienne has joined the channel
[09:36] vonkow has joined the channel
[09:37] gozala has joined the channel
[09:38] muhqu_ has joined the channel
[09:39] jesusabdullah: Whoa, placekitten is a great idea
[09:40] jesusabdullah: I mean, not just because it's kittens
[09:40] SubStack: greatest idea
[09:40] teemow has joined the channel
[09:40] jesusabdullah: but I'm impressed with the api and all
[09:40] markwubben has joined the channel
[09:40] bingomanatee_ has joined the channel
[09:41] jetienne: jesusabdullah: what is so impressive ? i mean it give an image for an url ? and always the same
[09:41] jetienne: did i miss it completly ?
[09:44] Emmanuel_: jetienne: who cares ! it's kittens
[09:44] Emmanuel_: kitty-porn !
[09:44] mcahornsirup has joined the channel
[09:44] jetienne: apparently i did miss it then :)
[09:47] mbrochh has joined the channel
[09:47] mbrochh has joined the channel
[09:49] jesusabdullah: Well, the thing where you don't have to do anything special because of its REST API--- that is, and all
[09:49] maushu: KITTEN!
[09:49] lukegalea has joined the channel
[09:49] maushu: http://placekitten.com/800/800 BIGGER KITTEN!
[09:50] maushu: http://placekitten.com/1000/1000
[09:50] maushu: BIGGER!
[09:50] maushu: ._.
[09:50] maushu: It broke when I tried 4kx4k.
[09:52] aabt has joined the channel
[09:54] xla has joined the channel
[09:55] jetienne: i mean, at least do a random in the image or something
[09:56] MikhX has joined the channel
[09:56] aklt has joined the channel
[09:57] mAritz: i'd guess that for most web design dimensions that wouldn't change much
[09:57] jetienne: or promise to chang ethe picture once a day
[09:58] jetienne: socket.io depends on JSON and so doesnt work on IE8
[09:58] jetienne: real world is painfull
[09:58] SubStack: throw es5-shim all up in there
[09:58] SubStack: it will just work™ in dnode
[09:58] jetienne: oh
[09:59] bzinger has joined the channel
[09:59] jetienne: changing global objects is risky for actual code
[09:59] SubStack: actually what the shit? No JSON in es5-shim >_<
[09:59] jetienne: JSON is not es5
[09:59] SubStack: lame
[09:59] SubStack: I know!
[09:59] SubStack: I'll throw a package up on npm
[10:00] SubStack: and then you'll be able to require it with browserify
[10:00] SubStack: or else I'll just fix browserify to support it
[10:00] SubStack: yeah, that
[10:01] jetienne: https://github.com/douglascrockford/JSON-js/blob/master/json2.js#L168 what is this "use script"
[10:02] SubStack: beh
[10:03] SubStack: doesn't even use exports
[10:03] gozala has joined the channel
[10:03] SubStack: how am I supposed to browserify that >_<
[10:05] markwubben has joined the channel
[10:06] mAritz: hm, what could cause connect/express to not properly store/use sessions? (every request i get a new session id and the sessiondata is gone)
[10:06] maushu: jetienne: "use strict"; you mean.
[10:07] SubStack: maushu: yeah I have no idea either
[10:07] maushu: Wat.
[10:07] SubStack: erm
[10:07] maushu: You guys never heard of strict javascript?
[10:07] SubStack: * mAritz
[10:07] mAritz: ?
[10:07] maushu: http://ejohn.org/blog/ecmascript-5-strict-mode-json-and-more/
[10:08] mAritz: i'm using redis and just had a look at the db. no keys there.
[10:08] SubStack: mAritz: that's why I wrote sesame
[10:08] SubStack: a redis adaptor for sesame would be awesome
[10:08] jetienne: oh like -Wall :)
[10:08] jetienne: maushu: tahnks
[10:09] SubStack: need to finish this public key crypto stuff
[10:10] maushu: ACTION hides SubStack's stuff.
[10:10] maushu: You can't.
[10:10] mAritz: SubStack: i'd rather stick with as few extra modules as possible for now. and since connect already has redis support (with connect-redis) this should work. it just doesn't :(
[10:11] SubStack: ACTION doesn't understand that motivation very well
[10:11] mAritz: where's tj? isn't it already like 4am in vancouver? he should be up by now, supporting me!
[10:11] SubStack: minimizing dependencies
[10:11] mAritz: less stuff to learn, more concentration on doing the application stuff... theoretically.
[10:11] SubStack: every dependency you use is complexity you can remove from your application!
[10:12] mAritz: well, connect should already do this, so i don't need complexity in my app :(
[10:12] lukegalea has joined the channel
[10:12] jetienne: and more code than you dont understand, may be unmaintained, buggy etc...
[10:12] SubStack: !
[10:13] SubStack: that seems rather... backwards
[10:13] SubStack: software reuse!
[10:13] SubStack: plus it's much easier to test packages in isolation
[10:14] jetienne: good/stable/documented software reuse
[10:14] jetienne: not buggy/crappy/unmaintain software use/reuse
[10:14] SubStack: if a lib is buggy then it is your duty to either fix it or write a better one!
[10:15] jetienne: yes sir! :)
[10:15] jetienne: node wants you! (with finger pointed)
[10:15] nefD has joined the channel
[10:15] herbySk has joined the channel
[10:18] tmzt: is there a conditional interopolation for jade like bourne shell?
[10:18] tmzt: like #{something#something} etc.
[10:23] kal-EL_ has joined the channel
[10:29] mike5w3c has joined the channel
[10:29] jankoprowski has joined the channel
[10:31] SubStack: conditional? o_O
[10:32] zzen has joined the channel
[10:33] __tosh has joined the channel
[10:34] sonnym has joined the channel
[10:34] altamic has joined the channel
[10:35] zzen: hi guys… I have 3 tickets for NodeConf (in May in Portland) but I & my friends won't be able to go (yeah, I know, I'm pissed off, too)… I'm looking for somebody interested in buying them - I'll even throw in a $50 discount (from the early-bird)
[10:38] davidc_: scalping nodeconf tickets, sweet :)
[10:38] davidc_: hehe
[10:38] sth: heh
[10:40] zzen: :) well yeah, I'd love go to but I just won't make it…
[10:40] zzen: not exactly selling it at a premium here ;)
[10:40] lukegalea has joined the channel
[10:40] maushu: I wonder how much are the tickets to Portland.
[10:41] zzen: yeah, that's a large part of the problem (given that I'd fly in from Europe)
[10:41] jiveb has joined the channel
[10:41] davidc_: You want a trick? Try auctioning them and the person who wins pays only half. However the second person pays the full price and the third person pays half the price. Of course you put a tiny reserve price and require at least 10 people to bid for the auction to be valid.
[10:41] davidc_: You'll sell them for 4x ;0)
[10:42] maushu: zzen: Which country?
[10:42] davidc_: Or just put them on ebay and tweet it.
[10:42] zzen: maushu: Prague, Czech Republic
[10:42] maushu: 539€
[10:43] maushu: For me, and I have to jump into another plane in... EWR
[10:43] maushu: And It will take 16 hours. What the hell.
[10:43] zzen: davidc_: there will be more tickets coming online at $350 later… I don't feel like ripping people off
[10:44] davidc_: zzen: how much are you selling them for?
[10:44] zzen: $250
[10:44] davidc_: and it's 2 or 3 tickest?
[10:45] zzen: $250/ticket, I have 3 tickets
[10:45] davidc_: https://twitter.com/#!/davidcoallier/status/42535974705692672
[10:45] davidc_: :)
[10:45] maushu: ACTION could totally see getting lost while going to Portland.
[10:46] zzen: davidc_: lol :)
[10:46] davidc_: If it helps you getting rid of them why not.
[10:46] zzen: sure
[10:46] jetienne: oinnn i want a visa!
[10:47] jetienne: all those nice confs and me so far away
[10:47] davidc_: jetienne: where are you?
[10:47] mbrochh]2 has joined the channel
[10:47] jetienne: davidc_: paris
[10:47] davidc_: The name would suggest france but considering you need a visa i'm a bit flabbergasted :)
[10:47] maushu: ACTION arrives. Looks around. Looks at the ticket. Looks around again. Looks at the ticket again.
[10:47] maushu: "This doesn't look like Portland."
[10:47] davidc_: Well you don't need a visa like one would need a visa to go to india... the visa for america is quite easy to get actually.
[10:47] maushu: "Konnichiha!"
[10:47] antris: wa
[10:48] jetienne: davidc_: yep but i wont go just for the conf. i want to work there :)
[10:48] zzen: jetienne: if you're from EU, getting the US visa is just a formality of applying online… you'll get it <24h
[10:48] petermanser_ has joined the channel
[10:48] davidc_: jetienne: ahh ok :-)
[10:48] davidc_: zzen: yeap pretty much :)
[10:48] jetienne: davidc_: those confs are fine... but you had a fair bit if you have to travel from europe every time :)
[10:49] davidc_: jetienne: yeah :)
[10:49] davidc_: zzen: In Ireland it's not even 24hrs, in fact, they're nice with us, you can go without a visa but you fill it once you get there basically :P
[10:49] dnyy has joined the channel
[10:49] zzen: davidc_: preferential treatment!! :D nice anyway
[10:51] dgathright has joined the channel
[10:51] davidc_: zzen: I'll ping you if I hear back from anyone.
[10:51] zzen: davidc_, jetienne, maushu: gotta run now, ping me guys twitter.com/jakubnesetril if you're interested… or if you find somebody else davidc_ ;)
[10:51] zzen: ok, great
[10:51] vyvea has joined the channel
[10:51] zzen: just ping @jakubnesetril
[10:51] __tosh has joined the channel
[10:53] breccan has joined the channel
[10:56] andrewfff has joined the channel
[10:56] tmzt: SubStack: yeah, like only include certain text if somethign is not undefined and is also true
[10:57] floby has joined the channel
[10:57] SubStack: #{typeof moo === 'undefined' ? '' : moo}
[10:58] davidc_: what about #{moo === undefined ? '' : moo}
[10:58] SubStack: will throw an error if moo is not defined
[10:58] SubStack: typeof is magic like that
[10:58] davidc_: Wait since when?
[10:58] SubStack: v8: moo
[10:58] v8bot: SubStack: ReferenceError: moo is not defined
[10:58] davidc_: All modern browsers you can do without the typeof
[10:59] SubStack: v8: typeof moo === 'undefined'
[10:59] v8bot: SubStack: true
[10:59] davidc_: typeof is so... 1998 :P
[10:59] SubStack: that
[10:59] davidc_: Ahh v8, you heartless bitch.
[10:59] jetienne: v8: global['moo']
[10:59] v8bot: jetienne: ReferenceError: global is not defined
[10:59] SubStack: v8: this
[10:59] v8bot: SubStack: {}
[10:59] jetienne: v8: this['moo']
[10:59] v8bot: jetienne: undefined
[10:59] SubStack: v8: var x = 5; this
[10:59] v8bot: SubStack: {}
[10:59] SubStack: v8: var x = 5; this.x
[10:59] v8bot: SubStack: 5
[10:59] SubStack: oh strange
[11:00] SubStack: I hate that scoping fallback
[11:00] SubStack: good thing that doesn't work in node usually
[11:00] davidc_: v8: moo === undefined : 'undefed' ? 'defed';
[11:00] v8bot: davidc_: SyntaxError: Unexpected token :
[11:00] davidc_: doh
[11:00] davidc_: v8: moo === undefined ? 'undefed' : 'defed';
[11:00] v8bot: davidc_: ReferenceError: moo is not defined
[11:00] jetienne: v8: {x:5}
[11:00] v8bot: jetienne: 5
[11:00] SubStack: wait crap, same thing works in the repl
[11:00] jetienne: v8: {}
[11:00] v8bot: jetienne: undefined
[11:00] jetienne: i got some bugs with repl+require
[11:01] jetienne: what is fun is accessing "moo" will trigger exception... but global['moo'] wont trigger exception
[11:01] mAritz: okay, so i've debugged the problem a little further and it's here https://github.com/visionmedia/connect-redis/blob/master/lib/connect-redis.js#L75 where sess.cookie is undefined. anyone know what's wrong here?
[11:02] jetienne: q. what is the normal procedure to compile a module with native code ? node-waf configure && node-waf build gimme error
[11:03] SubStack: jetienne: I usually do node-waf clean configure build
[11:03] lukegalea has joined the channel
[11:03] jetienne: OSError: [Errno 2] No such file or directory: '/cygdrive/d/fedor/github/nTPL/build' <- i get that
[11:03] jetienne: it smells like the extension cached something
[11:04] jetienne: cygdrive and all is window stuff, not on my box
[11:05] abracsi has joined the channel
[11:05] jetienne: and rm -rf ./build/ 'fixed' the issue
[11:05] jetienne: super :)
[11:05] antris has left the channel
[11:06] jetienne: SubStack: maybe this is the module i get whhich is flacky. do you know a npm module with native code ?
[11:08] SubStack: node-canvas how about
[11:09] SubStack: oh hah bigint has a wscript all up in it
[11:09] SubStack: forgot about that one
[11:11] jetienne: OSError: [Errno 2] No such file or directory: '/home/substack/projects/node-bigint/build'
[11:11] jetienne: i know your username :)
[11:11] SubStack: !
[11:11] [ADTurbo] has joined the channel
[11:11] jetienne: SubStack: you packaged the ./build dir
[11:11] jetienne: SubStack: so the stuff remains cache
[11:11] SubStack: ah!
[11:11] CrazyGoogle has joined the channel
[11:11] SubStack: >_<
[11:12] mscdex: :O
[11:12] SubStack: should I put build/ in .npmignore?
[11:12] jetienne: is there a node-waf command which is removing build/ ?
[11:13] jetienne: SubStack: yes, this is confusing "node-waf configure build"
[11:13] SubStack: node-waf clean configure build
[11:13] SubStack: try that
[11:13] Gruni has joined the channel
[11:13] jetienne: node-waf clean doesnt work if not previously configured
[11:14] tbassetto has joined the channel
[11:14] jetienne: jerome@jmebox:/tmp/slota/node_modules/bigint$ node-waf clean
[11:14] jetienne: Nothing to clean (project not configured)
[11:14] SubStack: got it, forgot to specify an install script field in package.json
[11:14] SubStack: that might fix it
[11:14] mnot: mjr_: you about?
[11:16] seivan has joined the channel
[11:16] mr_daniel has joined the channel
[11:17] therrg has joined the channel
[11:17] SubStack: jetienne: published 0.0.10, try now
[11:18] jetienne: SubStack: you evil!
[11:18] jetienne: i was working on the workaround
[11:19] SubStack: :p
[11:20] SubStack: I have now pushed 218 times to npm
[11:21] Sorella has joined the channel
[11:23] jetienne: "node-waf distclean" removes the build directory <- this is according to node-waf inline help... dont remove anything tho
[11:23] SubStack: meh
[11:23] jetienne: rm -rf ./build && node-waf configure && node-waf build
[11:23] ChrisPartridge has joined the channel
[11:24] iszak has joined the channel
[11:24] jetienne: SubStack: bigint is fixed btw :)
[11:24] SubStack: hooray \o/
[11:25] themiddleman has joined the channel
[11:25] lukegalea has joined the channel
[11:26] Kingdutch has joined the channel
[11:27] nornagon_ has joined the channel
[11:29] mscdex: http://goo.gl/mrlOP
[11:29] seivan has joined the channel
[11:29] malkomalko has joined the channel
[11:30] jetienne: mscdex: this guy is one of the first 3d character :)
[11:31] mr_daniel has joined the channel
[11:33] mscdex: :D
[11:38] mraleph has joined the channel
[11:39] fermion has joined the channel
[11:39] msch has joined the channel
[11:41] maushu: HAI mscdex!
[11:42] mscdex: ohai2u maushu
[11:43] crodas has joined the channel
[11:43] seivan has joined the channel
[11:45] Throlkim has joined the channel
[11:45] MrTopf has joined the channel
[11:47] mbrochh has joined the channel
[11:47] mbrochh has joined the channel
[11:47] rbranson has joined the channel
[11:48] themiddleman has joined the channel
[11:48] devinus has joined the channel
[11:51] AAA_awright has joined the channel
[11:51] sth: is there a coding standard for npm modules?
[11:51] SubStack: sth: no
[11:52] SubStack: and there better not ever be one
[11:52] SubStack: that noise makes me sick
[11:53] SubStack: Just hacking something up and `npm publish`! If it works, who cares what it looks like?
[11:53] romainhuet has joined the channel
[11:54] SubStack: coding standards only matter when multiple people are modifying the same codebase
[11:55] SubStack: but npm is all about tiny reusable components
[11:55] mr_daniel has joined the channel
[11:57] SubStack: still trying to figure out how all these dss pieces should fit together
[11:57] SubStack: this is taking far too long
[11:57] SubStack: and I suspect the final product will be very very short
[12:01] piscisaureus has joined the channel
[12:02] unomi has joined the channel
[12:02] meso_ has joined the channel
[12:03] lukus has joined the channel
[12:05] kristsk has joined the channel
[12:07] ilpoldo has joined the channel
[12:15] broofa has joined the channel
[12:16] eee_c has joined the channel
[12:24] Sami_ZzZ has joined the channel
[12:25] charlenopires has joined the channel
[12:26] lgl has joined the channel
[12:30] d0k has joined the channel
[12:31] jetienne: SubStack: libgmp3-dev is ok for bigint ?
[12:32] lgl has joined the channel
[12:33] SubStack: ACTION checks
[12:33] SubStack: that's what I have installed
[12:33] SubStack: so it must be ok
[12:33] jetienne: SubStack: ok
[12:35] SubStack: adding installation notes to the readme
[12:35] jetienne: SubStack: add this one toolibffi-dev
[12:35] jetienne: SubStack: add this one too libffi-dev
[12:35] SubStack: right!
[12:38] MikhX has joined the channel
[12:39] mattyf has joined the channel
[12:40] mattyf: hi guys... need some help running a node.js script
[12:40] jetienne: "modules": {
[12:40] jetienne: "index": "./lib/ffi"
[12:40] jetienne: },
[12:40] mattyf: sh run_tests is failing on line 3: require.paths.push(__dirname)
[12:40] jetienne: main: "./lib/ffi.js" to be node_modules compatible
[12:40] mattyf: says word unexpected (expecting ")")
[12:41] mattyf: could it be a permissions issue?
[12:41] jetienne: mattyf: do "node run_tests"
[12:42] mattyf: lifesaver jetienne ! im new to ubuntu, only installed it to learn node so I thought sh was used to run all scripts
[12:42] jetienne: ohhh but isaacs could regenerate all the package.json and have the "main" field!:
[12:42] jetienne: mattyf: sudo add-apt-repository ppa:jerome-etienne/neoip && sudo apt-get update && sudo apt-get install nodejs
[12:43] jetienne: mattyf: this is even easier with the .deb ppa on ubuntu
[12:43] jetienne: mattyf: no need to compile and i update it for you
[12:43] Fuu` has joined the channel
[12:43] mattyf: i think i might already have that apt repo, how do i check?
[12:44] dustym has joined the channel
[12:44] jetienne: mattyf: dont worry, it wont be added if already present
[12:44] gaYak has joined the channel
[12:44] jetienne: mattyf: aka you can retype this command several time without dammaging the install
[12:44] jetienne: indempotent command as we say
[12:45] jetienne: ls -l /etc/apt/sources.list.d/jerome-etienne-neoip-maverick.list <- else you do that to see if you got the file
[12:46] mike5w3c has joined the channel
[12:47] svenlito_ has joined the channel
[12:47] mbrochh]2 has joined the channel
[12:52] hij1nx has joined the channel
[12:54] arpegius has joined the channel
[12:56] skm has joined the channel
[12:59] hober has joined the channel
[13:01] daveluke has joined the channel
[13:04] gggg has joined the channel
[13:04] flow3r has joined the channel
[13:05] flow3r has left the channel
[13:05] FriiSource has joined the channel
[13:07] FriiSource: anyone know of a more easily movable data structure than array
[13:07] FriiSource: http://stackoverflow.com/questions/5154854/moving-card-from-one-pile-to-another-moving-item-from-one-array-to-another-javasc
[13:08] meso__ has joined the channel
[13:08] jetienne: FriiSource: you want like fifo queues ?
[13:09] jetienne: FriiSource: can you explain "movable struct"
[13:09] floby has joined the channel
[13:13] Evet_ has joined the channel
[13:13] wyattisimo has joined the channel
[13:14] Evet has joined the channel
[13:16] hij1nx has joined the channel
[13:18] ziro`_ has joined the channel
[13:22] hij1nx has joined the channel
[13:22] leeadkins has joined the channel
[13:23] eee_c has joined the channel
[13:23] jiveb has joined the channel
[13:23] jbpros has joined the channel
[13:24] dnolen has joined the channel
[13:24] bentruyman has joined the channel
[13:25] kal-EL_ has joined the channel
[13:25] mike5w3c has joined the channel
[13:25] thermal has joined the channel
[13:25] fugoki has joined the channel
[13:26] nonnikcam has joined the channel
[13:26] eee_c1 has joined the channel
[13:27] FriiSource: i want to be able to easily grab an item and insert it into a different structure
[13:27] FriiSource: actually not sure if i want queue, maybe not
[13:28] kristsk: o_O
[13:28] kriszyp has joined the channel
[13:31] mikegerwitz: FriiSource: The best you're going to do with JS is an array. If the array cannot be used as a stack, I'd just delete the index (or set it to a null/undefined value) and ignore that index any time it's used, so you don't have the overhead of rebuilding the array.
[13:31] mscdex: linked list!
[13:31] mscdex: :d
[13:32] mikegerwitz: That's an option too, if you'd like
[13:32] zefhemel has joined the channel
[13:33] mscdex: using 'delete' in v8 leads to slow cases
[13:33] mikegerwitz: FriiSource: Elegant solutions in other languages are not so elegant in JS. It's a pretty minimal languages
[13:33] mikegerwitz: mscdex: How so?
[13:33] seivan has joined the channel
[13:33] kristsk: "delete" is baad? didn't know that...
[13:33] mscdex: you'd have to ask mraleph or someone more familiar with the inner workings, that's just what i heard
[13:34] mscdex: inner workings of v8 that is
[13:34] iFire` has joined the channel
[13:34] mikegerwitz: mscdex: alternatively you can set it to 'undefined', but I assume GC would take place either way.. huh
[13:34] eyesUnclouded has joined the channel
[13:35] Poetro has joined the channel
[13:37] mscdex: you could set it to undefined, but then you have a bunch of undefined stuff in there :)
[13:38] fumanchu182 has joined the channel
[13:38] FriiSource: alright thank you :P
[13:38] cce_ has joined the channel
[13:38] mikegerwitz: mscdex: delete will set it to undefined anyway. if you have [ 1, 2, 3 ] and delete index 1, you'll be left with [ 1, undefined, 3 ]
[13:38] mraleph: mscdex: for array we have an optimization. so you can delete it without fearing that array will go slow mode...
[13:39] mscdex: ah ok
[13:39] mscdex: there you have it ;)
[13:39] xandrews has joined the channel
[13:39] mikegerwitz: mraleph: Are there situations where delete is not recommended? I generally let the GC handle it, but I know Safari devs recommend delete
[13:39] kristsk: "delete" is bad for objects, then.
[13:39] perlmonkey2 has joined the channel
[13:39] mikegerwitz: So I see tons of scripts that delete everything ._. Which seems pointless to me if it goes out of scope anyway
[13:40] kristsk: double tap (tm)
[13:40] mraleph: yes. delete is not recomended on things that you use as normal objects with properties.
[13:40] mikegerwitz: (I know Safri doesn't use V8)
[13:40] mikegerwitz: mraleph: Alright, thanks
[13:40] orospakr has joined the channel
[13:40] chapel has joined the channel
[13:41] zedas has joined the channel
[13:41] lukegalea has joined the channel
[13:41] sugardave has joined the channel
[13:42] mraleph: if you do something like function Point (x,y,z) { this.x = x; this.y = y; this.z = z; } p = Point(1,1,1) and then you say let's do delete p.z accesses to x and y will become slower.
[13:42] mraleph: considerably
[13:43] mikegerwitz: mraleph: Ah, alright. So you are not implying that `delete p` will have a negative performance impact?
[13:43] hij1nx has joined the channel
[13:43] hij1nx has left the channel
[13:43] mikegerwitz: mraleph: makes much more sense. Misinterpreted :)
[13:45] mraleph: no, delete p is fine.
[13:46] thomsonit has joined the channel
[13:46] breccan has joined the channel
[13:46] zefhemel has left the channel
[13:47] mbrochh has joined the channel
[13:47] mbrochh has joined the channel
[13:49] Sebmaster has joined the channel
[13:51] mraleph: mikegerwitz: btw. semantics of delete a[1] is more complicated than setting the value to undefined.
[13:51] mraleph: mikegerwitz: it looks like you have undefined there, but this is not true. you have nothing. a gapping hole in time and space :-)
[13:52] Sebmaster: is "delete arr[i]" equivalent to arr.splice(i, 1)?
[13:52] SubStack: nope
[13:52] mike5w3c_ has joined the channel
[13:52] zum has joined the channel
[13:52] Sebmaster: :/
[13:52] mikegerwitz: mraleph: I figured they were :) I just meant that they're presented essentially the same. But that's good to know.
[13:52] SubStack: v8: var xs = 'abcdefg'.split(''); delete xs[2]; xs[3]
[13:52] v8bot: SubStack: "d"
[13:53] daveluke has joined the channel
[13:53] SubStack: v8: var xs = 'abcdefg'.split(''); xs.splice(2,1); xs[3]
[13:53] v8bot: SubStack: "e"
[13:53] SubStack: ^^^
[13:53] SubStack: v8: var xs = 'abcdefg'.split(''); delete xs[2]; xs[2] // also this
[13:53] v8bot: SubStack: undefined
[13:53] mikegerwitz: mraleph: Actually, while on the topic, I do have a question I haven't had the time to research. IF you have an array of length 5, then see arr.length = 3, the remaining elements are unaccessible. Setting it back to 5 shows that they are undefined. Are they freed from memory, or does something odd happen?
[13:53] mikegerwitz: set*
[13:54] mraleph: v8: Array.prototype[1] = "trollface"; a = [1,2,3]; delete a[1]; a[1];
[13:54] v8bot: mraleph: "trollface"
[13:54] Sebmaster: ^ whoa
[13:54] mraleph: v8: Array.prototype[1] = "trollface"; a = [1,2,3]; delete a[1]; a[1] = void 0; a[1];
[13:54] v8bot: mraleph: undefined
[13:55] mraleph: this is the difference between undefined and the "hole". when you see hole you need to go further through prototype chain.
[13:55] strmpnk has joined the channel
[13:55] Sebmaster: v8: var arr = [1, 2, 3, 4]; delete arr[1]; arr
[13:55] v8bot: Sebmaster: [1, undefined, 3, 4]
[13:55] Sebmaster: wat
[13:55] mraleph: eh it looks like an undefined because there is nothing on Array.prototype.
[13:55] Sebmaster: im getting different results with v8 <=> node
[13:56] mraleph: v8: Array.prototype[1] = "trollface"; a = [1,2,3]; delete a[1]; a
[13:56] v8bot: mraleph: [1, "trollface", 3]
[13:56] mraleph: hehehe
[13:56] mikegerwitz: mraleph: Ahhh, I see
[13:57] Sebmaster: can anybody test this code above in node?
[13:57] Sebmaster: ohh
[13:57] Sebmaster: i think i got it
[13:57] Sebmaster: node doesnt display the undefined :/
[13:58] mikegerwitz: Sebmaster: You're right, it does not
[13:58] augustl: what's a sensible way to encode binary blogs in JSON? Hex?
[13:58] augustl: blobs*
[13:59] mikegerwitz: Sebmaster: Chrome does in the developer console, if you want to test it there
[13:59] Sebmaster: yea, like here with the v8 bot
[14:01] adambeynon has joined the channel
[14:02] strmpnk has joined the channel
[14:02] mikegerwitz: augustl: hex is generally the accepted means to store any binary data within a string. But don't use the \x prefix, or JSON.parse may throw an error. You'll have to convert it yourself.
[14:02] mikegerwitz: v8: JSON.parse( '{ "hex": "\x05" }' );
[14:02] v8bot: mikegerwitz: SyntaxError: Unexpected token ILLEGAL
[14:03] mikegerwitz: v8: JSON.parse( '{ "hex": "\x064" }' );
[14:03] v8bot: mikegerwitz: SyntaxError: Unexpected token ILLEGAL
[14:03] mikegerwitz: Oops. my bad, then.
[14:03] augustl: mikegerwitz: is it a bad idea to hope JSON.stringify correctly escapes the binary blob?
[14:03] mikegerwitz: Oh, nope. \x64 works in Chrome, but not here. \x05 does not work in Chrome, though
[14:03] mikegerwitz: augustl: Yeah, I was suggesting not to use the \x escape :)
[14:03] mikegerwitz: (Because of the above)
[14:04] sivy has joined the channel
[14:04] mikegerwitz: augustl: just do "ABCDEF" and then convert it yourself.
[14:04] tmzt: or base64, etc.
[14:05] mscdex: base64
[14:05] mscdex: yeah
[14:05] mscdex: buffer.toString('base64')
[14:05] sivy has joined the channel
[14:05] mikegerwitz: Yeah I actually agree with base64. Sorry, my mind's been deep in encryption keys lately. Been using HEX for everything binary.
[14:05] tmzt: and with browserify you could probably reverse that easily
[14:06] locks has joined the channel
[14:06] Sebmaster: meh, just do String.fromCharCode((byte[0] << 8) + byte[1]); :p
[14:08] jlecker has joined the channel
[14:12] wdperson has joined the channel
[14:14] miketaylr has joined the channel
[14:15] zubairov_ has joined the channel
[14:15] mike5w3c has joined the channel
[14:17] themiddleman has joined the channel
[14:17] augustl: where can I read documetation for the JSON object?
[14:18] jetienne: augustl: json.org
[14:18] jetienne: http://www.json.org/js.html
[14:18] augustl: that documents what properties the JSON object in node has? :O
[14:18] jetienne: yes
[14:18] mikegerwitz: It mimics the specification
[14:18] augustl: so there's just JSON.parse and JSON.stringify?
[14:18] jetienne: augustl: yes
[14:19] augustl: I see
[14:19] augustl: was hoping there was a JSON.escape
[14:19] jetienne: augustl: what would i do ?
[14:19] jetienne: augustl: what would iT do ?
[14:19] mscdex: node needs a frotz binding!
[14:19] mscdex: :D
[14:20] augustl: what JSON does for i.e. JSON.stringify({foo: '"bar"'})
[14:20] mikegerwitz: augustl: JSON automatically escapes strings, if that's what you mean
[14:20] mikegerwitz: v8: JSON.stringify( { foo: '"' } );
[14:20] v8bot: mikegerwitz: "{"foo":"\""}"
[14:20] augustl: that's not what I mean
[14:20] augustl: that is, this is the escaping I'm talking about
[14:21] augustl: but I want to escape by hand, in order to merge an existing JSON object (a string) into a new JSON object.
[14:21] jetienne: augustl: forget the mean, describe the goal
[14:22] augustl: JSON.stringify({foo: '{"bar": 123}'}) => '{"foo": {"bar" 123}}'
[14:22] jetienne: augustl: what do you wanna do, not how do you plan to do it but dunno really
[14:22] daveluke has joined the channel
[14:22] mikegerwitz: augustl: If you don't mind the overhead, I'd just JSON.parse() both, then restringify it
[14:22] augustl: I do mind the overhead :)
[14:22] eyesUnclouded has joined the channel
[14:22] jetienne: v8: JSON.stringify({foo: '{"bar": 123}'})
[14:22] v8bot: jetienne: "{"foo":"{\"bar\": 123}"}"
[14:23] augustl: jetienne: double escaping ;)
[14:23] mikegerwitz: augustl: https://github.com/douglascrockford/JSON-js
[14:23] aabt has joined the channel
[14:23] mikegerwitz: augustl: There is a Javascript implementation of the JSON object. You can see how it escapes there / use that
[14:23] jetienne: augustl: if you know the format you can do
[14:23] bfuster has joined the channel
[14:23] jetienne: v8: JSON.parse({foo: '{"bar": 123}'}.foo)
[14:23] v8bot: jetienne: {"bar": 123}
[14:23] aheckmann has joined the channel
[14:24] jetienne: augustl: you get the principle by now
[14:24] augustl: which principle?
[14:24] jetienne: augustl: how to do what you want
[14:24] colinclark has joined the channel
[14:25] hij1nx has joined the channel
[14:25] augustl: I don't think JSON.parse with an object will help me here
[14:26] zachsmith has joined the channel
[14:27] mscdex: JSON needs more cowbell!
[14:27] jlecker has joined the channel
[14:27] malkomalko has joined the channel
[14:27] mikegerwitz: heh
[14:27] trotter has joined the channel
[14:28] malkomalko: top o the mornin to ya
[14:28] jetienne: JSON is not ie8 btw, i wanted to share this fact ! :)
[14:28] __tosh has joined the channel
[14:29] jetienne: voodootikigod: http://www.meetup.com/baltimore-dc-javascript-users/photos/655812/20942831/ we discussed yesterday, and i see that today
[14:29] liquidproof has joined the channel
[14:29] boaz has joined the channel
[14:31] francescop has joined the channel
[14:32] francescop has left the channel
[14:36] sivy has joined the channel
[14:36] eyesUnclouded has joined the channel
[14:39] jpstrikesback has joined the channel
[14:41] colinsullivan has joined the channel
[14:44] julienXX has joined the channel
[14:47] tiemonster has joined the channel
[14:47] fission6 has joined the channel
[14:47] mbrochh]2 has joined the channel
[14:48] tiemonster: Is there a pure Node.js solution for continuous integration (scm polling, automated unit testing, build documentation, etc.) ?
[14:50] jbpros: tiemonster: I'm working on something :)
[14:50] kristsk: i doubt it
[14:50] tiemonster: jbpros: do tell
[14:50] fission6: tiemonster: i am working on something too - kind off
[14:51] jbpros: tiemonster: I'm writing a CI server in node.js with a web interface (html5/websockets)
[14:51] fission6: jbpros: what you got in the pipeline
[14:51] strmpnk has joined the channel
[14:51] tiemonster: I was running Hudson/Jenkins on Joyent's no.de hosting, but then they migrated servers, and never reinstalled java...
[14:51] fission6: jbpros: that could actually tie in well with what I am kind of building
[14:51] tiemonster: jbpros: is the code available?
[14:51] jbpros: not yet, it should land on github in 3-4weeks
[14:51] tiemonster: bah - that will be too late. :-(
[14:51] jbpros: I'm attending cukeup! in London and I'd like it to be available then
[14:52] jbpros: tiemonster: what's your "deadline" ?
[14:52] nivoc has joined the channel
[14:52] mbrochh has joined the channel
[14:52] eee_c has joined the channel
[14:53] jbpros: I've made a non-tested ugly proof of concept. But it's not that reliable nor production ready
[14:53] strmpnk_ has joined the channel
[14:53] jbpros: fission6: what's yours?
[14:53] tiemonster: jbpros: I'd still love to see it. We need something by the end of the week
[14:54] tiemonster: In the mean time, I'm downloading and installing Hudson on a local server. The only problem is that it's not internet-accessible.
[14:54] piscisaureus: mraleph: if you do something like function Point (x,y,z) { this.x = x; this.y = y; this.z = z; } p = Point(1,1,1) and then you say let's do delete p.z accesses to x and y will become slower.
[14:54] piscisaureus: Why is that? accessing p.x does not require a lookup to p.z, does it?
[14:55] davidsklar has joined the channel
[14:55] razvandimescu has joined the channel
[14:55] jmar777 has joined the channel
[14:55] tktiddle has joined the channel
[14:55] fission6: well its a bit far out right now, but ultimately i want a web interface and a webservice to manage web application tests. You can submit a serialized form of test scripts (json), manage what suite they are a apart, run times, etc and finally reporting options, all on top of node.js - I am working on some of the aforementioned but really waiting for a project like zombiejs to mature so I can do much of the browser emulation / testing inside of node.js. Un
[14:55] fission6: then I am prototype the webservices and test script serialization format in python so that I can keep moving forward
[14:56] jbpros: tiemonster: do you have a github account?
[14:57] tiemonster: yep
[14:57] jbpros: tiemonster: which is? :)
[14:57] tiemonster: same
[14:57] shaver: piscisaureus: property deletion likely puts the object in a slower mode due to how they handle hidden classes (forward progression only, not back, IIRC from reading the source long ago)
[14:57] bradleymeck has joined the channel
[14:57] jbpros: alright
[14:57] Me1000 has joined the channel
[14:58] kenbolton has joined the channel
[14:58] niklasfi has joined the channel
[14:59] piscisaureus: shaver: if that's how it is, ok :-)
[14:59] piscisaureus: but I wonder why don't just make delete p.z equal to p.z=thehole
[14:59] shaver: there's an observable difference
[15:00] nivoc has joined the channel
[15:00] niklasfi: is there an npm version of haml-js by creationx?
[15:00] rfay_ has joined the channel
[15:00] shaver: v8: o = { a: "hi"; }; o2 = { a: "h1"; }; delete o.a; o2.a = undefined; "" + ('a' in o) + " " + ('a' in o2)
[15:00] v8bot: shaver: SyntaxError: Unexpected token ;
[15:01] shaver: v8: o = { a: "hi" }; o2 = { a: "h1" }; delete o.a; o2.a = undefined; "" + ('a' in o) + " " + ('a' in o2)
[15:01] v8bot: shaver: "false true"
[15:01] piscisaureus: shaver: i don't say p.z=undefined but p.z=thehole
[15:02] losing has joined the channel
[15:02] shaver: oh, and then test for it?
[15:02] shaver: I think hidden classes have to be a superset of their parents
[15:02] shaver: in linear property addition order
[15:02] shaver: but I'd have to go read again, and I don't have v8 on this machine
[15:02] piscisaureus: shaver: but then if you assign a string to p.z you'd also go slow-case
[15:02] piscisaureus: or use __definegetter__
[15:02] shaver: no, because it still has a property there
[15:03] shaver: so the get is fast
[15:03] shaver: try __defineGetter__ over an existing property, indeed
[15:03] shaver: they optimize p.z to a read of a slot at known obj-relative address
[15:04] tiemonster: jbpros: why do you ask?
[15:04] piscisaureus: then they could just put some "magic" hole value there and if they see that walk up the proto chain
[15:04] piscisaureus: well, I guess there's more important stuff to optimize
[15:04] piscisaureus: will try with definegetter
[15:04] shaver: of course, mraleph may point out that I'm full of it, but that's what I recall
[15:04] shaver: deletes are pretty rare
[15:05] jbpros: tiemonster: check your messages on github
[15:05] mikeal has joined the channel
[15:06] tiemonster: jbpros: what is the licensing?
[15:08] jbpros: tiemonster: MIT, it's in the README
[15:08] mraleph: piscisaureus: shaver is right. delete just makes object go from very fast "c structure like representation" to slow case hash map representation.
[15:09] tiemonster: jbpros: any way you could just slap it up on github so I could fork it?
[15:09] stonebra_ has joined the channel
[15:09] jbpros: tiemonster: This was just a proof of concept. The code sucks and it's not tested. I plan on releasing something better soon
[15:10] SubStack: publish first, perfect later
[15:10] tiemonster: amen
[15:10] tiemonster: jbpros: github != release
[15:10] jbpros: yeah you're right.
[15:10] tiemonster: it's an invitation to the world to make your software better
[15:11] yhahn has joined the channel
[15:11] jbpros: this was actually just to try out things and was my first node.js code.
[15:11] jbpros: but ok, you're right.
[15:11] jbpros: wait a minute.
[15:11] piscisaureus: v8: var o = {x: 0, y: 0}, start = new Date(); for (; o.x < 100000000; o.x++); "normal: " + (new Date() - start) / 1000;
[15:11] v8bot: piscisaureus: "normal: 1.424"
[15:11] piscisaureus: v8: var o = {x: 0, y: 0}, start = new Date(); delete o.y; for (; o.x < 100000000; o.x++); "delete: " + (new Date() - start) / 1000;
[15:11] piscisaureus: v8: var o = {x: 0, y: 0}, start = new Date(); o.__defineGetter__("y", function() { return this.__proto__.y }); for (; o.x < 100000000; o.x++); "__defineGetter__: " + (new Date() - start) / 1000;
[15:12] piscisaureus: mraleph: ^^ what about this :0
[15:12] v8bot: piscisaureus: "delete: 2.811"
[15:12] v8bot: piscisaureus: "__defineGetter__: 1.304"
[15:12] piscisaureus: mraleph: looks you could like you could just optimize it with definegetter :p
[15:13] tfe_ has joined the channel
[15:13] tfe_ has joined the channel
[15:15] EyePulp has joined the channel
[15:15] lgl has joined the channel
[15:17] matclayton has joined the channel
[15:18] alex_b has joined the channel
[15:18] syskk has joined the channel
[15:19] ceej has joined the channel
[15:20] jbpros: tiemonster: Here it is: https://github.com/jbpros/nodeci
[15:20] tiemonster: jbpros: awesome. thanks!
[15:21] razvandimescu has joined the channel
[15:21] jbpros: tiemonster: No guarantee this will be of any help. I hope so :)
[15:21] lgl has joined the channel
[15:21] tiemonster: jbpros: mind if I jack it up at will and then submit a pull request? ;-)
[15:22] jbpros: tiemonster: I'd be glad
[15:22] ncb000gt has joined the channel
[15:22] tiemonster: jbpros: awesome. how do I get a hold of you if I have any questions?
[15:22] ajashton has joined the channel
[15:23] syskk: https://www.cloudkick.com/blog/2010/aug/23/writing-nodejs-native-extensions/ anyone knows why you need to make a local function template before making it persistent?
[15:23] jbpros: tiemonster: github, here, @jbpros
[15:23] syskk: Local t = FunctionTemplate::New(New); s_ct = Persistent::New(t);
[15:23] tiemonster: jbpros: ok. sounds good. thanks!
[15:23] bradleymeck: is inimino's js parser still the defacto?
[15:23] Yuffster has joined the channel
[15:23] bradleymeck: syskk mainly just readability, you *could* cast it as you assign to t
[15:23] jbpros: tiemonster: you're welcome. thanks for boosting me writing a better version of it ;)
[15:24] tiemonster: jbpros: that's what the community is for! :-)
[15:24] syskk: : ok
[15:24] jbpros: tiemonster: indeed!
[15:24] piscisaureus: hey tiemonster, died the getuid guys do anything with my comments?
[15:25] syskk: I assume v8::FunctionTemplate::New returns a local handle
[15:25] tiemonster: piscisaureus: these are n00bs. they move as the speed of slug. they're working on it, though.
[15:25] tiemonster: they're having trouble juggling Windows types
[15:25] piscisaureus: ok. n00bs ftw
[15:25] tiemonster: I expect it will take approximately 2 more weeks
[15:25] piscisaureus: woot
[15:26] piscisaureus: I could fix it myself in 5 minutes :-(
[15:26] tiemonster: the setenv/unsetenv team is working with them on the same problem - using unicode in Windows
[15:26] bradleymeck: syskk it does, when im talking about casting here im talking about the v8 api cast not c cast
[15:26] piscisaureus: tiemonster: but it's soooo easy
[15:26] tiemonster: piscisaureus: if you could help with that portion of it - juggling WCHAR etc - then they would finish much faster
[15:26] syskk: ok
[15:27] intrect has joined the channel
[15:28] Emmanuel_ has joined the channel
[15:29] stonebranch has joined the channel
[15:29] syskk: also, what's the point of SetInternalFieldCount? shouldn't it always be set to 1 since a JS object should wrap 1 C++ object?
[15:29] syskk: I don't really see a use case for SetInternalFieldCount > 1
[15:30] cjm has joined the channel
[15:30] Sidnicious has joined the channel
[15:32] hornairs has joined the channel
[15:32] freakyfractal has joined the channel
[15:34] piscisaureus: tiemonster:
[15:34] piscisaureus: static Handle EnvSetter(Local property, Local value, const AccessorInfo& info) {
[15:34] piscisaureus: HandleScope scope;
[15:34] piscisaureus: String::Value key(property);
[15:34] piscisaureus: String::Value val(value);
[15:34] piscisaureus: SetEnvironmentVariableW(static_cast(*property), static_cast(*value));
[15:34] piscisaureus: return scope.Close(value);
[15:34] piscisaureus: }
[15:34] piscisaureus: ^-- windows only, needs error handling
[15:35] tiemonster: ahhhhhhhh
[15:35] BillyBreen has joined the channel
[15:37] tiemonster: piscisaureus: if you need to go ahead and implement it, don't wait on us.
[15:38] tiemonster: we just wanted to contribute, but we don't want to slow the pace of development
[15:38] piscisaureus: it can wait :-)
[15:38] piscisaureus: if I do this, will your team do io completion ports :p
[15:38] tiemonster: this is a learning exercise for us. there is a steep learning curve from our perspective.
[15:38] tiemonster: is that the Winsock stuff you were telling me about?
[15:39] sirkitree has joined the channel
[15:39] piscisaureus: I don't really recall what we talked about
[15:39] piscisaureus: I don't think so actually
[15:39] tiemonster: oh. never mind then. ;-)
[15:40] piscisaureus: tiemonster: there's some winsock stuff to be done but it's way more difficult than setenv
[15:40] syskk: https://www.cloudkick.com/blog/2010/aug/23/writing-nodejs-native-extensions/ why is the local scope not closed in the static Init function? I thought you had to close it in order to trigger the gc
[15:40] pgte has joined the channel
[15:40] tiemonster: yeah - we've moved on to our real-time app built on Node.js
[15:40] nook has joined the channel
[15:41] Kingdutch has joined the channel
[15:41] Twitter has joined the channel
[15:41] syskk: actually I see it's not always closed
[15:41] syskk: maybe I misunderstood scopes somehow
[15:42] piscisaureus: syskk: you don't need to close the scope explicitly
[15:42] piscisaureus: it is done implicitly when the destructor of the HandleScope is called
[15:42] syskk: : ah ok, thanks!
[15:43] robotarmy has joined the channel
[15:43] piscisaureus: syskk: you only need to explicitly close a scope when you want want to make local value become part of the parent scope
[15:45] Kingdutch has joined the channel
[15:45] warz has joined the channel
[15:46] softdrink has joined the channel
[15:47] mbrochh]2 has joined the channel
[15:48] syskk has joined the channel
[15:48] syskk has joined the channel
[15:48] Spion__ has joined the channel
[15:48] Me1000 has joined the channel
[15:49] dguttman has joined the channel
[15:50] Sidnicious: Morning. Does anyone have any favorite ways to run and keep running Node apps? I'm finding init scripts on pastebins, guides to Monit, and server managers like Cluster, but I'm left unsure what the average stack is supposed to end up looking like.
[15:51] brianm has joined the channel
[15:51] brianm has joined the channel
[15:51] EyePulp: Sidnicious: I don't think there is a best practice anyone agrees to yet
[15:52] halfhalo: I really do want a standardized node launching system that would work with almost any existing code
[15:52] EyePulp: Sidnicious: I'm trying out cluster, but we're not even in our first beta round of testing with our app
[15:52] thebard has joined the channel
[15:52] Nomon: Sidnicious: we use upstart for starting it and cluster as "worker management" and restarts
[15:53] tmzt: cluster logs right?
[15:53] EyePulp: ACTION makes a note of 'upstart'
[15:53] tmzt: I mean in a consistent way, nto just to pids
[15:53] EyePulp: =)
[15:54] tmzt: ip :)
[15:54] EyePulp: ip?
[15:54] tmzt: close enough
[15:54] EyePulp: iPulp? what am I, a new lousy apple product?
[15:55] necromancer has joined the channel
[15:55] tmzt: just homophonic
[15:55] mscdex: i use upstart also
[15:55] tiemonster: how does Joyent do it on their hosting platform?
[15:55] halfhalo: I really do want a daemon setup that let me add a new command besides start/stop/restart and that it actually sent the program to the backround when needed
[15:55] tmzt: to the background?
[15:56] necromancer has left the channel
[15:56] tiemonster: wouldn't all daemon processes be in the background?
[15:56] Sidnicious: Nomon, mscdex: Did your OSs come with upstart or was it added on? I'm a bit wary of replacing init outright just to run node...
[15:56] tmzt: if everything was evented would you care?
[15:56] tiemonster: Ubuntu supports both
[15:56] halfhalo: yes
[15:56] maushu: I would totally code a javascript 2d game framework called SËX.
[15:56] mscdex: Sidnicious: it comes with ubuntu
[15:57] tiemonster: maushu: random!
[15:57] tmzt: if you have unit just use start-stop-daemon
[15:57] tmzt: init
[15:57] maushu: tiemonster: Not so random: http://love2d.org/
[15:58] mscdex: Lua :s
[15:58] bluesnoop has joined the channel
[15:58] jetienne: maushu: port that in a browser ?
[15:58] jetienne: like prototype.js did
[15:58] maushu: mscdex: Yes, javascript version should be sëx.
[15:59] jetienne: i had lua vm is simple maybe a lua2js even :)
[15:59] maushu: sëx > löve
[15:59] mraleph: piscisaureus: you forgot to delete y before attaching a getter. having a getter does not prevent your object from being in fast case.
[15:59] jetienne: had=heard
[15:59] maushu: And sex2d.com is not taken!
[15:59] FireFly|n900 has joined the channel
[15:59] maushu: I mean, .org
[15:59] bluesnoop has left the channel
[15:59] halfhalo: gogogo
[16:00] piscisaureus: v8: var o = {x: 0, y: 0}, start = new Date(); delete o.y; o.__defineGetter__("y", function() { return this.__proto__.y }); for (; o.x < 100000000; o.x++); "__defineGetter__: " + (new Date() - start) / 1000;
[16:00] v8bot: piscisaureus: "__defineGetter__: 2.528"
[16:00] tmzt: test case?
[16:00] mraleph: piscisaureus: I am sorry for slow replies, I am doing many things at once.
[16:00] piscisaureus: never mind
[16:00] [AD]Turbo has joined the channel
[16:00] syskk: now that I've built my C extension, how do I load it into Node?
[16:01] JimBastard has joined the channel
[16:02] bluesnoop has joined the channel
[16:02] zubairov has joined the channel
[16:02] maushu: I would totally port the api to javascript webgl.
[16:02] bluesnoop has left the channel
[16:03] ncb000gt: JimBastard: how are you liking the west coast?
[16:03] piscisaureus: mraleph: why did I 'forget to delete' before defining a getter?
[16:03] piscisaureus: that defineGetter call overrides the normal property afaict, so this o.__defineGetter__('y') is functionally equivalent to delete o.y but faster :-)
[16:03] ncb000gt: syskk: when you build it you should have a *.node file
[16:03] JimBastard: ncb000gt: its awesome
[16:03] ncb000gt: where * is the name of the module
[16:04] syskk: ncb000gt> I do, but not sure in which path to put it
[16:04] markc has joined the channel
[16:04] ncb000gt: syskk: i typically just pop a package.json file in and then install/link with npm
[16:04] maushu: JimBastard: Hey Jim.
[16:05] ncb000gt: syskk: alternatively you can load it by using require('./');
[16:05] sugardave_work has joined the channel
[16:05] ncb000gt: assuming you started from the directory that the .node file is in
[16:05] ncb000gt: JimBastard: awesome.
[16:05] JimBastard: ncb000gt: you out here?
[16:05] ncb000gt: also, your profile on the nodejitsu site is wrong
[16:05] SubStack: a JimBastard appears!
[16:05] ncb000gt: JimBastard: in the DC area
[16:05] SubStack: JimBastard: you're certainly up early
[16:06] JimBastard: west coast time fucking with me
[16:06] SubStack: and I'm up quite late
[16:06] halfhalo: local ftw
[16:06] JimBastard: hey maushu
[16:06] halfhalo: socal*
[16:06] SubStack: ACTION 's time is fucked no matter what so I just roll with it
[16:06] syskk: thx
[16:06] JimBastard: SubStack: you gonna be at joyent later right?
[16:06] SubStack: yep!
[16:06] JimBastard: fucking internet party
[16:06] SubStack: fuck yes
[16:06] JimBastard: ill be the one wearing a one piece speed suit
[16:06] JimBastard: its red
[16:06] ncb000gt: syskk: np, hooking it up to npm makes it easier for others to use so i'd recommend hooking that up at some point
[16:07] JimBastard: its for sciencing
[16:07] ncb000gt: but not until you're ready
[16:07] ncb000gt: :)
[16:07] SubStack: fuck yeah, superscience
[16:07] syskk: I will
[16:07] SubStack: anyhow!
[16:07] ncb000gt: JimBastard: you...you are going to wear a unitard?
[16:07] ncb000gt: o.0
[16:07] SubStack: I just got my key exchange stuff working and structured nicely
[16:07] jdoto has joined the channel
[16:07] JimBastard: ALREADY WEARING ONE, IT HELPS ME WITH HACKING
[16:07] SubStack: I should throw it up on npm already
[16:07] ncb000gt: JimBastard: that's not going to help you get Natalie Portman
[16:08] xastey` has joined the channel
[16:08] piscisaureus: Anyone tried to port node to DOS?
[16:08] JimBastard: i didnt know that was an option
[16:08] ncb000gt: haha
[16:08] JimBastard: piscisaureus: i dont think so
[16:08] SubStack: need to catch back up to tj
[16:08] piscisaureus: ah too bad
[16:08] SubStack: he's 9 ahead of me
[16:08] halfhalo: it os
[16:08] ncb000gt: JimBastard: she's having a kid with one of the dancers from Black Swan
[16:08] halfhalo: is always an option
[16:08] JimBastard: piscisaureus: ive got a widows 3.1 port in the mix
[16:09] jdoto has left the channel
[16:09] piscisaureus: JimBastard: github link? Does it support OS/2 also?
[16:09] shaver: I worked on a product that had Java on Win 3.1
[16:09] JimBastard: i had it self hosted, but it crashed
[16:09] shaver: with all the green threads crap
[16:09] shaver: and MSVC1.52
[16:09] mike5w3c has joined the channel
[16:09] piscisaureus: yeah u need to install Trumpet Winsock
[16:09] shaver: ACTION shudders in recollection
[16:10] piscisaureus: I didn't know java even existed for 3.1...
[16:10] JimBastard: ACTION sends some OOB data to port 139
[16:10] JimBastard: boom!
[16:10] shaver: it did in Netscape!
[16:10] fly-away has joined the channel
[16:11] romainhuet_ has joined the channel
[16:11] JimBastard: anyone remember sending a URG to those old windows boxes on port 139?
[16:11] syskk: im getting this error when trying to run my js script: Error: /home/sysk/node-notify/build/default/notify.node: undefined symbol: _ZN6Notify28persistent_function_templateE
[16:11] piscisaureus: never did it
[16:11] piscisaureus: oh my near pointer isn't working. must have exceeded segment size
[16:12] Utkarsh has joined the channel
[16:12] perezd has joined the channel
[16:13] ryanfitz has joined the channel
[16:13] ncb000gt: syskk: that means that something didn't link correctly afaik
[16:14] ncb000gt: syskk: do you have the node-notify code up somewhere so we can look at the source?
[16:14] ncb000gt: and the build script
[16:14] piscisaureus: Looks like something went wrong linking to v8
[16:14] ncb000gt: piscisaureus: aye
[16:14] syskk: sure
[16:14] syskk: when building I got only this error: Checking for node path : not found
[16:14] jasong_at_apache has joined the channel
[16:14] ncb000gt: o.0
[16:14] halfhalo: ...
[16:14] mscdex: :O
[16:14] halfhalo: seems like an important error
[16:14] ncb000gt: that would def be a problem
[16:14] ncb000gt: haha
[16:15] muk_mb has joined the channel
[16:15] syskk: well I got 'configure' finished successfully (0.041s) and 'build' finished successfully (0.008s) so I thought it didn't rlly matter ;)
[16:16] ncb000gt: syskk: the includes might have worked, but that just allows you to compile saying "yea this will be available...i swear it"
[16:16] ncb000gt: but the actual code is not in the include
[16:16] ncb000gt: s
[16:16] SubStack: hells yeah check this out https://github.com/substack/node-keyx
[16:16] pyrony has joined the channel
[16:16] SubStack: I can make openssh-style keys too
[16:17] SubStack: and parse them and verify them
[16:17] SubStack: and do challenge/response
[16:17] EyePulp: is there a reliable, generic property available anywhere in an app that tells me the directory the overall app is running from? process.appRoot, or some such?
[16:18] ncb000gt: EyePulp: __directory will tell you the directory of the current file
[16:18] SubStack: take THAT, openssh
[16:18] ncb000gt: current module file
[16:18] ncb000gt: SubStack: lol
[16:18] tmzt: which is the file that requires other stuff, not where the current code is
[16:18] syskk: ok
[16:18] leeadkins has left the channel
[16:18] EyePulp: ncb000gt: danke
[16:18] syskk: so how is the build script suppose to find my node path?
[16:18] ncb000gt: tmzt: i believe it's scoped for each file
[16:19] tmzt: it wasn't in my setup, I ended up passing the path of the directory I needed as a function parameter
[16:19] ncb000gt: hmm
[16:19] ncb000gt: time to test this
[16:19] ncb000gt: :)
[16:20] sudoer has joined the channel
[16:21] syskk: I'll try to reinstall node:/
[16:21] SubStack: time to roll this keyx stuff into node-ssh-server now
[16:21] rtomayko has joined the channel
[16:21] ncb000gt: syskk: did you build it from scratch?
[16:21] SubStack: bwahahaha
[16:21] ncb000gt: tmzt: nope
[16:21] jakehow has joined the channel
[16:21] ncb000gt: i'm getting the right paths
[16:21] ncb000gt: using __dirnamne
[16:21] syskk: ncb000gt> yes
[16:21] maushu: SubStack: What have you done?!
[16:22] tmzt: shaver: piscisaureus I have a copy of ie 5.5 for win311 too :) it was on the year 2000 solutions cd
[16:22] SubStack: maushu: I'm implementing the ssh protocol from the spec is what!
[16:22] SubStack: the server side of it
[16:22] SubStack: so I can use ssh as an ad-hoc vpn client
[16:22] tmzt: and assume it had java of some kind, but maybe not, I know that sun java never worked under 3.1 at least not jdk
[16:23] maushu: SubStack: This is madness!
[16:23] pascalopitz has joined the channel
[16:23] SubStack: It is indeed!
[16:23] mraleph: piscisaureus: no. defineGetter is not equivalent to delete. it does not meddle with prototype chain resolution.
[16:23] jiveb has joined the channel
[16:23] mraleph: you still have property on this object.
[16:23] dthompson has joined the channel
[16:23] mraleph: not somewhere else in the prototype chain
[16:24] mhausenblas has joined the channel
[16:24] fangel has joined the channel
[16:24] tmpvar has joined the channel
[16:24] ncb000gt: tmzt: https://gist.github.com/849382
[16:26] chapel: node is the new bash
[16:26] SubStack: node is the new perl
[16:26] SubStack: or awk
[16:26] chapel: bash + c + c++
[16:26] lgl has joined the channel
[16:26] chapel: perl
[16:26] chapel: awk
[16:26] SubStack: I still <3 perl
[16:26] chapel: :)
[16:26] chapel: I don't know perl
[16:26] chapel: though its not that hard to play with
[16:27] tmzt: used to
[16:27] briznad has joined the channel
[16:27] SubStack: maushu: ssh is actually surprisingly simple once you've got good libs for bigint modulo arithmetic and binary parsing and packing
[16:27] strmpnk has joined the channel
[16:27] tmzt: secsh
[16:28] SubStack: granted it's still taken me a while to figure it all out
[16:28] maushu: SubStack: Hmm, nice. I'm going to need that.
[16:28] tmzt: someday ssh services will be extended to other things, used instead of ports
[16:28] tmzt: like, message queue, rpc etc.
[16:28] maushu: tmzt: You mean... like sftp?
[16:29] tmzt: yeah, but I mean arbitrary protocols on the channel
[16:29] SubStack: maushu: what do you have in mind?
[16:29] maushu: Or scp, or something.
[16:29] tmzt: scp doesn't use a service
[16:29] maushu: SubStack: I need a SFTP server in node.js
[16:29] maushu: That means using the ssh protocol.
[16:30] erabuj has joined the channel
[16:30] maushu: I have no idea where to start.
[16:30] SubStack: sweet
[16:30] SubStack: yeah you'll be able to use this
[16:30] jiveb_ has joined the channel
[16:30] maushu: I could've used ftp, but... TEXT-PLAIN PASSWORDS!
[16:30] ncb000gt: maushu: sure you do...you just have a really large yak standing in front of you
[16:30] SubStack: the goal is you'll just var ssh = require('ssh'); var server = ssh.createServer()
[16:30] SubStack: and register all the hooks you need
[16:30] maushu: SubStack: Pretty much.
[16:31] pyrony has joined the channel
[16:31] maushu: From what I got, sftp is basically ssh in disguise.
[16:31] phiggins: ryah: are you thinking of applying for Google Summer-of-Code?
[16:31] SubStack: ssh can do so much awesome stuff
[16:32] maushu: SubStack: "todo: Everything." >_>
[16:32] chapel: well SubStack is just crazy enough to try
[16:32] chapel: no one else has even attempted rpc like he has
[16:33] maushu: SubStack: Where did you get the protocol?
[16:33] chapel: most people don't even realize its possible and rig up inferior solutions
[16:33] daveluke has joined the channel
[16:34] maushu: I only have http://www.snailbook.com/protocols.html
[16:34] hornairs has joined the channel
[16:34] daveyjoe has joined the channel
[16:35] syskk has joined the channel
[16:35] syskk has joined the channel
[16:35] maushu: Anyways, I'll keep a watch on that project.
[16:36] mikeal has joined the channel
[16:36] EyePulp: cls
[16:36] syskk: still can't find node path :/
[16:37] pifantastic_ has joined the channel
[16:37] tjholowaychuk has joined the channel
[16:37] mike5w3c has joined the channel
[16:37] boaz_ has joined the channel
[16:37] lukegalea: Hi everyone. I have a question re: how node handles SIGTERM.
[16:37] lukegalea: We are using AjaxIM's node server implementation and running it under spark2.
[16:37] isaacs has joined the channel
[16:38] pcardune has joined the channel
[16:38] lukegalea: Doing a bit of strace action, I can see that when one runs: spark2 --kill it sends a SIGTERM to the parent spark2 process which sends SIGTERM to each running node child process.
[16:38] lukegalea: But that's it... it doesn't die.
[16:38] lukegalea: under what circumstances would node just ignore a SIGTERM and keep happily running?
[16:38] tjholowaychuk: lukegalea: killall -kill node
[16:38] tjholowaychuk: haha
[16:39] lukegalea: haha.. that's what we are doing :)
[16:39] tjholowaychuk: lukegalea: you can trap TERM
[16:39] jimt_ has joined the channel
[16:39] tjholowaychuk: so spark must not be exiting
[16:39] daveluke: hi, does clearTimeout work different in node.js?
[16:40] syskk: anyone knows how I can tell node-waf configure what my node path is?
[16:40] lukegalea: tjholowaychuk: so you think I should just add my own custom SIGTERM handler and have it kill node? Weird that it's required given all my other express apps just die gracefully..
[16:40] lukegalea: but there's some weird stuff in ajaxim :)
[16:40] sprout has joined the channel
[16:41] lukegalea: I'll give that a go. Thanks tjholowaychuk.
[16:41] tjholowaychuk: lukegalea: yeah unfortunately it could be a lot of things.. in cluster I have a timeout / exit() to prevent lingering event loop activity
[16:42] maushu: lukegalea: It might be catching the signal.
[16:42] mikeal has joined the channel
[16:42] lukegalea: tjholowaychuk: I might migrate to cluster soon. I've been trying to set a Yak shaving quota for myself though.. and updating Mongoose ate up weeks worth of my quota ;)
[16:42] pyrony has joined the channel
[16:42] tjholowaychuk: ah :)
[16:42] ph^ has joined the channel
[16:42] tjholowaychuk: no rush, still polishing it up
[16:43] EyePulp: lukegalea: I hear that... I just got cluster up and running though, under the revised cluster('./app') method
[16:43] unomi has joined the channel
[16:44] lukegalea: EyePulp: cool. It's clearly better than spark2 so moving is definitely is definitely in the roadmap , but given spark2 is working for the vast majority of our node projects I have less reason to move over to it for now. We're probably going to get this into production next week so any changes I make at this point need to be minimized.
[16:44] blueadept has joined the channel
[16:45] EyePulp: lukegalea: wise move. are you done with your mongoose migration?
[16:45] lukegalea: EyePulp: Yep! It took forever.. mostly because of bugs and such. But now I'm very happy with it.
[16:47] lukegalea: Exciting.. getting some node code into somewhat heavy prod use. We'll have node running our chat on a whole bunch of dating sites within the next week or so. 1.3 million visits per month worth should be noding it up ;)
[16:47] kriszyp has joined the channel
[16:48] lukegalea: anyway! gotta run for lunch. ttyl.
[16:49] eee_c has joined the channel
[16:50] Venom_X has joined the channel
[16:51] syskk: ah ah. I'm fairly sure it's a bug in my code since I'm able to compile/use the extensions here https://github.com/pquerna/node-extension-examples/blob/master/helloworld/helloworld.cc
[16:52] EyePulp: what's the logical way to handle a regularly occurring process within a clustered app so that you're not doubling up scheduled behaviors?
[16:53] omni5cience has joined the channel
[16:54] syskk: ahhh found the bug
[16:54] boaz has joined the channel
[16:55] luke` has joined the channel
[16:56] luke`_ has joined the channel
[16:56] pschow has joined the channel
[16:58] mike5w3c has joined the channel
[16:59] Fo-schizzle has joined the channel
[16:59] locks has left the channel
[17:00] nivoc1 has joined the channel
[17:01] EyePulp: tjholowaychuk: is cluster.reload('some_dir') recursive?
[17:01] tjholowaychuk: EyePulp: yup
[17:01] EyePulp: oooh... sessy
[17:01] tjholowaychuk: EyePulp: in 0.3.0 it ignores node_modules, support, examples, and bin I believe
[17:01] tjholowaychuk: because that can be brutal
[17:01] tjholowaychuk: if you do reload(__dirname) or just reload()
[17:03] tbranyen: Is it possible to wrap a native EventEmitter/ObjectWrap class to an object and send that back to Node?
[17:03] EyePulp: tjholowaychuk: understandable
[17:03] tbranyen: I've been able to get it working for args.This()
[17:03] tbranyen: but not a Local