[00:00] piratepenguin has joined the channel
[00:00] mklappstuhl has joined the channel
[00:00] BlessYAHU: I have some questions....
[00:00] creationix: BlessYAHU: we might have some answers
[00:00] JimBastard_: just fire away and hang out
[00:00] JimBastard_: you'll get answers eventually
[00:00] Senhokyoho has joined the channel
[00:00] BlessYAHU: I'm a noob to nodejs (got as far as setting up nodejs on a unbuntu virtual instance)..
[00:01] Senhokyoho: creationix: I'm here. So what is node.js so great for?
[00:01] BlessYAHU: and played with samples, I like what I see.
[00:01] creationix: Senhokyoho: awesome, welcome
[00:01] pkrumins: node.js is my life.
[00:01] pkrumins: that's what it's great for.
[00:01] BlessYAHU: I do c# development, but am starting to realize I did that just to do web development.
[00:01] creationix: Senhokyoho: what's your background, web-dev?
[00:01] Senhokyoho: creationix: webdev / rails
[00:02] BlessYAHU: yeah, asp.net web dev.
[00:02] BlessYAHU: more frontend as of recent..jquery and now deeper into javascript..
[00:02] creationix: Senhokyoho: ok, so from a rails perspective, the benifit is being able to use one language on both sides as well as much better performance
[00:02] creationix: so we're developing models that run in both the browser and the server using the same code
[00:02] creationix: no need to write validations twice
[00:03] BlessYAHU: that's what I like.
[00:03] creationix: and if you're ever had to host a rails app on cheap hardware, it uses all the ram real fast
[00:03] BlessYAHU: I can context switch, but doesn't mean I want to.
[00:03] creationix: especailly for persistent connections like long-poll and websockets
[00:03] BlessYAHU: I'm not a rails dev, but a asp.net c# web dev.
[00:03] BlessYAHU: THAT is the other thing.
[00:04] BlessYAHU: cheap and easy websockets/comet.
[00:04] creationix: BlessYAHU: yeah, the transition from ms stuff is not unlike the transition from ruby
[00:04] BlessYAHU: I'm big on that. I think realtime web is the next big thing.
[00:04] creationix: Senhokyoho: am I making sense?
[00:04] BlessYAHU: got ya.
[00:04] Senhokyoho: creationix: Kind of. I'm trying to read through the website a bit at the same time.
[00:05] creationix: also I run a blog on node howtonode.org
[00:05] creationix: and am currently working on a middleware system for node http://extjs.github.com/Connect/
[00:05] BlessYAHU: Is node.js ready to run as a production webserver/app yet?
[00:05] creationix: BlessYAHU: in some cases yes
[00:05] BlessYAHU: I read your blog creationix.
[00:06] JimBastard_: :-D
[00:06] Senhokyoho: So node replaces apache/mongrel with custom scripts written specifically for my site?
[00:06] JimBastard_: <3 #node.js
[00:06] cloudhead has joined the channel
[00:06] piratepenguin: is everyone making a middleware system for node :)
[00:06] creationix: Senhokyoho: it replaces apache/mongrel/rack/rails
[00:06] BlessYAHU: I have a mvc type app I would like to build. seems like a great opportunity to learn nodejs and get deeper into js development.
[00:06] creationix: but the rails replacement is still under heavy development
[00:07] creationix: geddyjs is the closest thing to rails right now
[00:07] Senhokyoho: and there is rack middlewear to use it in a rails project?
[00:07] BlessYAHU: fabjs is looking like it will be useful. Kind of like component oriented development.
[00:08] creationix: and the Connect framework I'm working is about the level of rack + sinatra
[00:08] sigma_: is there anything for nodejs yet that allows me to manipulate socket descriptors?
[00:08] sigma_: it's really been annoying me.
[00:08] creationix: sigma_: there is pretty low level stuff, what exactely are you wanting
[00:08] sigma_: I'm wanting to keep a list of connected clients
[00:08] sigma_: when one inputs data, all receive it
[00:09] sechrist_: why such a low level?
[00:09] sigma_: I figured if I pushed all the socket objects onto an array I could achieve this by cycling through
[00:09] sigma_: because I can?
[00:09] sigma_: and because there's no other apparent way
[00:09] sechrist_: i guess you don't have sessions or authentication
[00:09] sigma_: correct
[00:09] creationix: sigma_: you can just store references to the socket objects in an array
[00:09] BlessYAHU: creationix: is couchdb the logical persistent store choice with node?
[00:09] sigma_: the net.stream stuff right now
[00:09] creationix: sigma_: for http or plain tcp?
[00:09] sigma_: just kind of assumes you're pub/subing
[00:09] sigma_: which with async sockets makes no sense why you'd want that
[00:10] sigma_: plain jane tcp
[00:10] sechrist_: BlessYAHU: by logical you mean the most used?
[00:10] charlesjolley- has joined the channel
[00:10] creationix: BlessYAHU: couch works great with node
[00:10] sechrist_: BlessYAHU: mongodb is also used a lot, but there's architecture differences. It's fundamentally different.
[00:10] mklappst1hl has joined the channel
[00:10] BlessYAHU: sechrist_ most used, easiest to implement, solid.
[00:10] creationix: mikeal from couch works a lot with node
[00:10] sechrist_: you should understand both before making a decision. if you're lazy. choose couch
[00:10] sigma_: so I mean, I get that the socket object is the current object used
[00:10] sechrist_: if you know what you need, mongodb may suit it
[00:11] sigma_: what I don't understand is where the descriptor for it is kept
[00:11] creationix: Senhokyoho: I don't know of any rack middlewares for node
[00:11] creationix: node is essentially it's own server
[00:11] sigma_: nor why it isn't documented
[00:11] sechrist_: Is there a mysql driver that doesn't block on the entire result? like per row callbacks or anythin?
[00:11] creationix: I've heard of people using node for comet stuff along-side rails
[00:11] BlessYAHU: sechrist_: mongodb hasn't got great press as of late. people losing records...I'm sure it's how they have configured it though.
[00:11] sigma_: again
[00:11] sigma_: I want true asynch
[00:11] sigma_: none of this comet
[00:11] sechrist_: BlessYAHU: well from the propaganda that mikeal throws at us
[00:12] sechrist_: there's serious flaws in how mongodb does it's business
[00:12] robrighter has joined the channel
[00:12] creationix: sigma_: yeah, I don't know the gritty details
[00:12] sechrist_: no confirmations on writes and stuff
[00:12] creationix: the source is pretty easy to read usually
[00:12] Senhokyoho: creationix: ah, I thought you were making that… seems I got my middlewares crossed tho.
[00:12] sigma_: creationix, that's kind of the problem, no one seems to, and it's not documented ANYWHERE :/
[00:12] sechrist_: sigma_: I've worked with net.stream
[00:12] creationix: sigma_: have you asked ryah?
[00:12] sechrist_: can you explain what you're doing again? or did you already in the scrollback?
[00:12] sigma_: yes, yes I have
[00:12] creationix: he wrote most that, he ought to know
[00:13] sigma_: I've been asking how to do this for like a week
[00:13] sigma_: and everyone answers pubsub
[00:13] sigma_: like it's the be all end all
[00:13] sechrist_: bleh
[00:13] sechrist_: nah
[00:13] sigma_: and for security purposes
[00:13] creationix: Senhokyoho: yeah, connect is sortof like rack for node, but has nothing to do with rack or ruby
[00:13] sigma_: it totally isn't
[00:13] sechrist_: the stream object should havre a fd property after connecting
[00:13] sigma_: it does
[00:13] sechrist_: net.js around like 901
[00:13] sigma_: what I'm not sure
[00:13] sigma_: is if it's exposed
[00:13] sigma_: when it's created
[00:13] sigma_: or kept in local scope
[00:13] sigma_: etc
[00:14] sigma_: could we maybe get an easy function in the future for this?
[00:14] sechrist_: I know it's exposed in http.client
[00:14] sechrist_: I would expect it would be
[00:14] sigma_: or maybe a global array
[00:14] sechrist_: in the normal stream object
[00:14] sigma_: that one may read from
[00:14] sigma_: just seems like for something so trivial in other langs
[00:14] sigma_: I'm going through an awful lot of ahssle
[00:14] sechrist_: have you done a sys.inspect on the stream object? also if I'm not mistaken there's a fd event
[00:14] sigma_: *hassle
[00:14] sigma_: honestly I don't even know what sys.inspect is
[00:15] sechrist_: you're quite new to node then
[00:15] sigma_: I'm tryin to get it down in order first
[00:15] Senhokyoho: creationix: thanks for the explanation. I'll definitely keep an eye on things.
[00:15] sigma_: ie. get the server set up
[00:15] sigma_: the way I'd like it
[00:15] sigma_: and then worry about the inner logic
[00:15] creationix: Senhokyoho: thanks for dropping by
[00:15] BlessYAHU: for a new noder, would node/fab/couchdb be too much, or a good choice of tools to build a web app?
[00:15] sigma_: so far it seems to cater to one user
[00:15] sigma_: at a time
[00:15] _announcer: Twitter: "Cool, node, js has a REPL. node 'a = [1, 2, 3], node> a.forEach (function (v) (sys.puts (v);)); http://bit.ly/9smv8W" [de] -- doug finke. http://twitter.com/dfinke/status/17053648196
[00:15] sechrist_: sigma_: have you tried accessing .fd from a stream object?
[00:15] sigma_: yes
[00:15] sigma_: it doesn't exist
[00:15] sechrist_: after the connect
[00:16] sigma_: it's undefined
[00:16] sechrist_: alright
[00:16] sigma_: same with .FD
[00:16] sigma_: same with .getFD
[00:16] sigma_: tried a lot of stuff :/
[00:16] sigma_: seems if networking is going to be core to this you let the network programmers do what they're accustomed to...
[00:16] sechrist_: you have to access the fd after the connect
[00:16] sigma_: not just hide it all away
[00:16] sechrist_: the connect doesn't happen when the stream is created
[00:16] sechrist_: it's all async
[00:17] sechrist_: sigma_: http://github.com/ry/node/blob/master/lib/net.js#L901
[00:17] sigma_: kk
[00:17] sigma_: sorry, I'm just at about my wit's end
[00:17] sechrist_: well this is definitely possible
[00:17] sigma_: I remember picking up client/server sockets in 3 days in c
[00:17] sechrist_: node exposes all of the posix shit
[00:17] sigma_: so you can probably understand why I'm frustrated
[00:17] sigma_: after 1.5 weeks in node trying this
[00:18] sechrist_: well we primarily work with web stuff
[00:18] sechrist_: so we assume that comet is the best way to do everything :D
[00:18] sigma_: tbh I'm scoping node more for websockets
[00:18] sechrist_: wait you're using websockets?
[00:18] sigma_: well web shouldn't be neglected
[00:18] sigma_: but tcp shouldn't be a second class citizen either
[00:18] sigma_: imo
[00:18] sechrist_: there's no shortage of the exposure of the low level bindings
[00:18] sechrist_: other than a few edge cases
[00:19] sechrist_: your's isn't one of them I'm pretty sure
[00:19] sigma_: then where is this documented? :P
[00:19] BlessYAHU: creationix: for a new noder, would node/fab/couchdb be too much, or a good choice of tools to build a web app?
[00:19] sechrist_: in the source code
[00:19] sigma_: source code isn't documentation
[00:19] sigma_: no matter how much you'd like it to be
[00:19] sechrist_: sigma_: if you want up to date docs
[00:19] sechrist_: wait a year
[00:19] creationix: BlessYAHU: I haven't used fab, but that sounds like a fun combo
[00:19] sigma_: lol, good deal.
[00:20] sechrist_: but yeah
[00:20] sechrist_: listen for the connect event
[00:20] sechrist_: take the fd
[00:20] sechrist_: store it as you wish
[00:20] sigma_: is the fd "socket"?
[00:20] sigma_: ie...
[00:20] sechrist_: yes
[00:20] sechrist_: actually you probably want the stream object more than the fd
[00:20] creationix: Connect has api docs today
[00:20] creationix: ;)
[00:20] sechrist_: creationix: lies!
[00:20] sechrist_: ..really? cool
[00:20] sigma_: var chatServer = ws.createServer(function(socket) {
[00:21] sigma_: ok
[00:21] pufuwozu` has joined the channel
[00:21] sechrist_: wait you're using websockets?
[00:21] sechrist_: I thought you were using raw tcp sockets
[00:21] sigma_: because I've pushed the object onto an array
[00:21] sechrist_: explain your use case please
[00:21] sigma_: yes, web sockets
[00:21] BlessYAHU: creationix: well, let me ask this: do you need something on top of nodejs like fab? I thought nodejs was the low level foundation, and things like fab,common,narwhal are the frameworks..
[00:21] sechrist_: aurgh
[00:21] sechrist_: websockets abstracts all of that
[00:21] sigma_: lol use case is very simple
[00:21] sechrist_: you don't need that low of level
[00:21] jarsen has joined the channel
[00:21] sigma_: then what do I need
[00:21] creationix: BlessYAHU: correct (except for narwhal, it's not for node)
[00:21] sechrist_: are you using miksagos?
[00:21] sigma_: socket.ws.js iirc
[00:21] creationix: node's api is usable, but quite plain
[00:21] sigma_: whoever wrote it
[00:22] sechrist_: if you're using miksago's.. it has a broadcast method..
[00:22] robrighter: creationix: what is the 'right' way to grab the port and hostname of a web app started with Connect (from inside the app)
[00:22] sigma_: hrm
[00:22] sechrist_: sigma_: http://github.com/miksago/node-websocket-server
[00:22] sigma_: sec
[00:22] creationix: robrighter: with the connect executable
[00:22] sigma_: ah yeah I don't think I have that one
[00:22] JimBastard_ has joined the channel
[00:22] sechrist_: sigma_: it also lets you listen for every event
[00:22] sechrist_: then that's your problem
[00:22] creationix: robrighter: or just call listen instead of exporting it
[00:22] BlessYAHU: excellent. Whelp, guess that's it for now. I get cracking and check back here later. Keep posting creationix, your helping noobs like me.
[00:23] JimBastard_: hey does anyone know any PRO rails developers who need work in NYC? pay is probably amazing
[00:23] JimBastard_: i need to find one badly
[00:23] JimBastard_: like, yesterday
[00:23] sigma_: well, not having someone's module is sort of a problem, shouldn't ever have to be... :P
[00:23] JimBastard_: full-time
[00:23] sechrist_: JimBastard_: i'm pro without the rails
[00:23] creationix: BlessYAHU: have fun
[00:23] JimBastard_: sechrist_: can you work in nyc?
[00:23] sigma_: any plans for session variables in node?
[00:23] sechrist_: hehe nah
[00:23] sigma_: something to simplify?
[00:23] sechrist_: if anywhere i'm moving to SF
[00:23] sechrist_: wrong side of the US bro
[00:23] JimBastard_: fail
[00:23] JimBastard_: fail
[00:23] JimBastard_: thats a double fail
[00:23] sechrist_: JimBastard_: you're in the wrong city
[00:23] JimBastard_: huh
[00:24] JimBastard_: there are other cities besides ny?
[00:24] mde|afk: Everybody is trying to hire Ruby guys.
[00:24] JimBastard_: i mean, i can see cali being fun ill probably go visit for a little...but ny owns hard
[00:24] BlessYAHU: JimBastard: thanks for the reply. I'm gonna see learn more about nodejs.
[00:25] sechrist_: mde: yeah there's huge codebases of useless code that now need to be maintained
[00:25] JimBastard_: mde: hee hee, just GOOD ones
[00:25] sechrist_: see: cobol
[00:25] mde: Heheh
[00:25] JimBastard_: im glad i pretend to not know rails
[00:25] mde: JimBastard_: Point, yeah. :)
[00:25] robrighter: creationix: for production hosting reasons I need to start the app via the executable (exports etc.). I am passing the hostname and the port to Connect via -H and -p, but I need my connect app to retrieve that port number in the script.
[00:25] mde: sechrist_: Maintained, extended, fixed to be less terrible, etc.
[00:25] JimBastard_: i think they might have gotten a hint today at work. i completed some story that was suppose to take a day in like 4 minutes without telling anyone and committed from coworkers machine
[00:25] creationix: robrighter: I've got a connect app on heroku
[00:25] mde: Yammer is looking for good Ruby guys. So far it's a great place to work.
[00:26] creationix: it works like that there
[00:26] sechrist_: I'm a c / php / javascript person. Ruby is something I ignored.
[00:26] mde: That's the only pimping I'll do, I promise. :)
[00:26] creationix: robrighter: here is my shim http://github.com/creationix/sousaball/blob/master/server.js
[00:26] mde: sechrist_: Actually, we're just looking for good, solid devs, period.
[00:26] sechrist_: At yammer?
[00:26] mde: It's still early enough that we need generalists.
[00:26] mde: Yes.
[00:26] _announcer: Twitter: "guys at #node.js were helpful. Gave me some more steam to give writing an app in nodejs a shot." -- A'braham Barakhyahu. http://twitter.com/BlessYahu/status/17054248665
[00:27] sechrist_: Man i've spoken with 5 people in here looking to hire so far
[00:27] mde: We're growing pretty fast, and we have, like, an actual product.
[00:27] mde: With actual customers, paying actual money. :)
[00:27] sechrist_: Where are you located?
[00:27] creationix: that's how I ended up in California
[00:27] sechrist_: SF right?
[00:27] creationix: I got tired of saying no
[00:27] mde: The office is right by the CalTrain station in SOMA.
[00:27] robrighter: creationix: gotcha.
[00:27] sechrist_: mde: nice
[00:27] mde: Yes, in SF.
[00:27] sechrist_: man I just need to move out there and do office visits
[00:28] sechrist_: I don't have a real resume
[00:28] JimBastard_: yo bradleymeck|home check out the win ^^^
[00:28] mde: Definitely, PM me if you're looking or interested.
[00:28] bradleymeck|home: mmm? nice
[00:28] sechrist_: obviously if i'm in here I'm probably better than you can get on monster
[00:28] sechrist_: ^^
[00:28] mde: sechrist_: If you're here, you have a huge leg up already, of course. :)
[00:28] JimBastard_: whats an irc
[00:29] mde: We're going to be doing more and more with Node.
[00:29] JimBastard_: imprettygoodwithrails235apps
[00:29] sechrist_: mde: good because that's all i'm working with now
[00:29] creationix: sechrist_: when I realized my last job wasn't going to pay me I posted in node irc that I needed a job, within 10 minutes I was having more phone interviews and emails and skype conversations than I could handle
[00:29] JimBastard_: imprettygoodwithrails235apps #bastardfacts
[00:29] sechrist_: creationix: nice
[00:29] JimBastard_: creationix: you deserve that shit man. you work really hard on node
[00:29] bradleymeck|home: if only that worked for all of us lol
[00:30] mde: In the Bay Area, you're constantly bombarded, even if you're not looking. It's a good problem to have.
[00:30] JimBastard_: :-)
[00:30] sechrist_: mde: well I'm currently with a startup that either needs to fail or start moving
[00:30] creationix: bradleymeck|home: all I did was contribute to open source for several hundred hours
[00:30] sechrist_: but I am geared to move out there regardless
[00:30] mde: sechrist_: Yammer is a nice compromise, because it's still pretty small, but it serves actual businesses.
[00:30] bradleymeck|home: JimBastard hope to release _utility as a repo tonight, might want to look at my 'interface' github as im rewriting it w/ that
[00:31] Elfix has joined the channel
[00:31] creationix: I like sencha, I was always a developer's developer at heart
[00:31] sechrist_: mde: sounds like you have the bizdev right
[00:31] JimBastard_: bradleymeck|home: ive got some github code
[00:31] creationix: making web frameworks for a living is fun
[00:31] JimBastard_: bradleymeck|home: but it defintely doesnt use the github API
[00:31] sechrist_: I've worked with a lot of teams that had nothing but technical, couldn't sell a product to save their life
[00:31] mde: sechrist_: Our CEO was the COO at PayPal, so yeah.
[00:31] bradleymeck|home: nah, i made a repo w/ that name
[00:31] sechrist_: mde: oh really, we might know a few of you then
[00:31] mde: It's completely product-focused, and in a good way.
[00:32] sechrist_: my cofounders are in the valley and we've had investor meetings with some of the paypal mafia
[00:32] mde: The CEO is David Sacks -- he also produced "Thank You For Smoking," which is kind of weird I guess. :)
[00:32] _announcer: Twitter: "Express-Coffee - A Template for NodeJs, CoffeeScript, and Express - Express is a sinatra style framework for... http://tumblr.com/xgxc6dztx" -- Jack Russell SC. http://twitter.com/jackhq/status/17054560793
[00:32] mde: Yeah, those PayPal guys are like a little club. Before here I was at Slide, which is another one of those.
[00:33] sechrist_: i'm going to work a few more months on my current gig
[00:33] sechrist_: if it's not getting momentum
[00:33] sechrist_: i'll be looking for something awesome in SF
[00:33] mde: sechrist_: You're in Houston, right?
[00:33] sechrist_: currently yes
[00:34] mde: Oh, you have got to move out here, yeah. :)
[00:34] sechrist_: I was planning to with or without being hired
[00:34] mde: I was born and raised in Houston.
[00:34] sechrist_: oh nice
[00:34] mde: Yeah, you'll have zero problem finding a job.
[00:34] mde: I started working for Bay Area companies when I got a gig at OSAF.
[00:35] mde: And worked out of my house in Pearland until I moved out here.
[00:35] sechrist_: I'm quite young though, 18 and startup-instead-of-college bound
[00:35] sechrist_: I've done contract work for valley companies, primarily ustream
[00:35] mde: If you're really good, the degree doesn't really matter.
[00:35] sechrist_: lived in mountain view for a few months
[00:35] sechrist_: love the bay area
[00:35] LOLWUT__: degree doesn't always matter
[00:35] aurynn: The degree is pretty much "I did this for 4+ years solid."
[00:35] LOLWUT__: if you can demonstrate your abilities
[00:36] sechrist_: "i jumped academic hoops"
[00:36] LOLWUT__: degree means very little
[00:36] mde: There are lots of things to love about Houston.
[00:36] LOLWUT__: just apply for places that give tests
[00:36] mde: The tech scene isn't one of them.
[00:36] sechrist_: I can write a fizzbuzz program
[00:36] sechrist_: I promise
[00:36] LOLWUT__: the place I'm at did that
[00:36] LOLWUT__: I have no completed formal education
[00:36] mde: Can you do the Fibonacci sequence in JS? :)
[00:36] sechrist_: of course
[00:36] sechrist_: I did that in java my freshman year of HS
[00:36] sechrist_: np
[00:36] mde: I kept having to do that shit over and over this last round of interviews.
[00:37] mde: So ridiculous.
[00:37] aurynn: "is Javascript Turing-complete?"
[00:37] sechrist_: LOLWUT__: I solved a few of the facebook puzzles
[00:37] sechrist_: those a fun
[00:37] LOLWUT__: sechrist_, lol
[00:37] LOLWUT__: how many triangles are in THIS picture?
[00:37] creationix: I've got a bachelors and half a masters in cs, while it didn't help me find work in the slightest and half the classes were an utter waste of my time, there was some value in there I might not have learned otherwise
[00:37] sechrist_: every language I know of is turing complete
[00:37] mde: Yammer didn't make me do that shit. And they did beer during the interview.
[00:38] LOLWUT__: creationix, don't get me wrong, if I had the time/money to go through formal cs training I totally would
[00:38] LOLWUT__: if only for the experience
[00:38] mde: creationix: Yeah, I know I've missed out on tons of stuff not studying CS at school.
[00:38] sechrist_: well I figure.. my current gig will be a nice product to show prospective companies even if it fails
[00:38] creationix: especially with node, I'm glad I took classes about processes, threads, unix, ipc, etc...
[00:38] LOLWUT__: sechrist_, that's kinda what I'm doin atm
[00:38] LOLWUT__: getting some projects finished up for eventual showcase
[00:39] creationix: finishing anything is good, project or degree
[00:39] LOLWUT__: absolutely
[00:39] sechrist_: no project is ever finished
[00:39] LOLWUT__: well I was working on a websocket chat server
[00:39] aurynn: rec-descent using callbacks hurts my brain.
[00:39] LOLWUT__: in perl
[00:39] LOLWUT__: and then saw nodejs
[00:39] LOLWUT__: :P
[00:39] sechrist_: socket.io COMES with one
[00:39] sechrist_: albeit a terrible one
[00:39] LOLWUT__: so if I can help it, it's going to finish its project life as a nodejs project
[00:39] sechrist_: but it's just an example
[00:39] creationix: lol, I was writing rack for PHP 5.3 when I found node
[00:39] LOLWUT__: yeah
[00:40] LOLWUT__: the thing with me
[00:40] LOLWUT__: is if I don't take the time to piece it together
[00:40] LOLWUT__: with a bit of guidance
[00:40] LOLWUT__: it's kinda lost on me
[00:40] sechrist_: rauchg: there's a nice xss in the socket.io chat demo :)
[00:40] mde: PHP, wow. :)
[00:40] sechrist_: what is the deal with rack
[00:40] LOLWUT__: I can run circles in C and perl
[00:40] sechrist_: << not coming from a ruby background
[00:40] LOLWUT__: but with JS I'm kinda lame
[00:40] sechrist_: I don't know what the paradigm is
[00:40] LOLWUT__: so running through source isn't giving me all I need
[00:41] rauchg: sechrist_: it's pretty obvious :)
[00:41] sechrist_: rauchg: was a nice broadcast
[00:41] rauchg: it's not a commercial chat server/client :P
[00:41] rauchg:
[00:43] LOLWUT__: lol sometimes
[00:43] LOLWUT__: it depends on how bad the vuln is
[00:43] mattly has joined the channel
[00:44] LOLWUT__: usually jquery konami code to a url redirect is the special
[00:45] sechrist_: http://getsatisfaction.com/thoora/topics/thoora_crash_my_computer_plz_help
[00:45] sechrist_: these guyzzzz
[00:45] sechrist_: how hard is it to fix a xss
[00:45] LOLWUT__: lol
[00:46] LOLWUT__: htmlspecialchars()
[00:46] LOLWUT__: ACTION wipes his brow
[00:46] sechrist_: they finally did
[00:46] sechrist_: but it took forever
[00:46] LOLWUT__: lol
[00:46] LOLWUT__: some of the devs where I'm at are pretty bad
[00:46] LOLWUT__: if I see a certain name in the base I can bank on certain vulns being in a project
[00:46] LOLWUT__: :/
[00:47] LOLWUT__: so my goal is to make them gradually more embarassing
[00:47] sechrist_: looks like thoora just did a striptags
[00:47] LOLWUT__: until that behavior changes
[00:47] sechrist_: and htmlspecialchars
[00:47] LOLWUT__: ya
[00:47] LOLWUT__: htmlspecialchars is generally enough
[00:48] LOLWUT__: MIME types are a big one overlooked at work too, which honestly scares me
[00:48] jedschmidt has joined the channel
[00:48] sechrist_: :| yeahhhh
[00:48] LOLWUT__: when a profile image upload lets me upload a php script...
[00:48] sechrist_: I still find uploaders that place php files verbatim in a php executable folder
[00:48] LOLWUT__: I just can't headdesk hard enough
[00:48] sechrist_: hah nice
[00:49] sechrist_: ACTION hi5 LOLWUT__
[00:49] LOLWUT__: ^5 :D
[00:49] LOLWUT__: I keep 'em on their toes
[00:49] sechrist_: mssql injections are my favorite
[00:49] sechrist_: those can be terrible
[00:49] LOLWUT__: they're good, but can take a while blind
[00:50] LOLWUT__: another good one
[00:50] LOLWUT__: is abusing PUT
[00:50] sechrist_: I've never done that
[00:50] LOLWUT__: to arbitrarily upload files
[00:50] LOLWUT__: it's great
[00:50] creationix has joined the channel
[00:50] sechrist_: woooooooow
[00:50] LOLWUT__: because everyone's bound to forget to apply the right permissions to every folder
[00:50] LOLWUT__: basically any folder writeable
[00:50] LOLWUT__: to nobody
[00:50] LOLWUT__: or whatever your daemon's uid
[00:51] LOLWUT__: you can issue a put command
[00:51] LOLWUT__: then a few headers
[00:51] sechrist: what servers support put?
[00:51] LOLWUT__: then you go into the content
[00:51] LOLWUT__: most
[00:51] LOLWUT__: :)
[00:51] sechrist: apache by default?
[00:51] sechrist: jesus christ
[00:51] LOLWUT__: IIS and apache, definitely
[00:51] LOLWUT__: any server that supports webDAV
[00:51] sechrist: well taht has to be explicitly enabled right?
[00:51] LOLWUT__: PUT was added to the protocol as a result for the need when they were authoring webDAV
[00:51] LOLWUT__: pretty sure
[00:52] LOLWUT__: thing is certain frameworks use PUT
[00:52] zaach has joined the channel
[00:52] LOLWUT__: for various reasons
[00:52] LOLWUT__: so it becomes a landmine approach
[00:52] LOLWUT__: to making sure all your directories have the proper permissions
[00:53] LOLWUT__: so essentially PUT abuse is like having a default file uploader.
[00:53] LOLWUT__: and I know for a fact that if it's enabled on apache it WILL take php files and execute them immediately after
[00:54] jarsen has joined the channel
[00:58] jbrantly has joined the channel
[01:07] maushu has joined the channel
[01:08] mau has joined the channel
[01:09] mau2 has joined the channel
[01:09] sh1m has joined the channel
[01:11] satori has joined the channel
[01:13] SteveDekorte has joined the channel
[01:16] stevendavie has joined the channel
[01:20] qschzt has joined the channel
[01:23] _announcer: Twitter: "I kind of want to learn/do more with node.js..." -- Kelli Shaver. http://twitter.com/kellishaver/status/17057402915
[01:26] sechrist has joined the channel
[01:28] polotek has joined the channel
[01:29] stagas has joined the channel
[01:30] _announcer: Twitter: "Lost my phone, got it back, missed an opportunity, found a better one. NYC has been damn good to me. Rockin some #nodejs" -- hij1nx. http://twitter.com/hij1nx/status/17057771319
[01:33] isaacs has joined the channel
[01:36] _announcer: Twitter: "hey i'm looking for partners for the node.js knockout - who wants to join me? #nodejs" -- Francisco T. http://twitter.com/frank06/status/17058140778
[01:37] sigma_ has joined the channel
[01:38] Dude_ has joined the channel
[01:39] Dude_: any of you guys worked with creationix's connect and the current "No longer accepting filename extension in module names" issue?
[01:39] sigma_: creationix might be ;)
[01:39] Dude_: sigma_: =) ya, but didn't see him on
[01:39] sigma_: oh
[01:39] sigma_: he was here earlier
[01:39] Dude_: thought i'd try my luck here
[01:40] sigma_: dunno about any of that though
[01:40] polotek: Dude_: sounds like you just need to leave off the ".js" from your module names
[01:40] polotek: don't really know though
[01:41] Dude_: polotek: ya, i'm digging through the connect source atm
[01:43] softdrink has joined the channel
[01:44] Tim_Smart: Dude_: It uses standard `require` from memory
[01:45] derferman has joined the channel
[01:49] Dude_: Tim_Smart: thx, the issue was needed "connect start" which does the require without the ".js"
[01:55] markwubben has joined the channel
[02:02] SamuraiJack has joined the channel
[02:16] jarsen has joined the channel
[02:18] zaach has joined the channel
[02:24] seand has joined the channel
[02:24] seand: what is node.js
[02:25] bradleymeck|home: mmm, its a javascript execution system based upon v8
[02:26] bradleymeck|home: also, anyone got a good example of mongodb-native lying about
[02:26] seand: for servers?
[02:27] bradleymeck|home: yes, can be used for servers, for the most part thats whats being developed for node.js
[02:29] seand: but it's not compiled? it's executed with v8?
[02:30] polotek: seand: v8 compiles javascript to native code
[02:30] polotek: very fast
[02:30] seand: yeah, but jit
[02:31] seand: or does it have an option to output an executable
[02:32] polotek: seand: yeah there are options output the compiled binaries
[02:32] seand: nice
[02:32] seand: v8 is a pretty nice engine... but i have faith in tracemonkey
[02:34] JimBastard_ has joined the channel
[02:34] blackdog_ has joined the channel
[02:36] bradleymeck|home: main prob i have w/ tracemonkey is how painful it is to extend
[02:36] JimBastard_: i'm about to move forward with releasing a library that is a port of node.js in the browser. basically you include this one file and you can load regular node scripts and they magically work. was wondering if you had any suggestions for a name? current one is nodejsjs, but i kinda hate that
[02:36] kaptainkrispy: how about mothernode
[02:37] JimBastard_: already got broodmother
[02:37] JimBastard_: so naaah
[02:37] kaptainkrispy: jsnodejs
[02:37] seand: bradleymeck|home you should tell a tracemonkey dev
[02:37] JimBastard_: njs.js
[02:37] JimBastard_: i kinda already bought nodejsjs domains too
[02:37] kaptainkrispy: allyournodearebelongtous
[02:37] JimBastard_: caus i code drunk sometimes
[02:38] seand: how does that work out for you
[02:38] JimBastard_: i just dont think that name has a good point value
[02:38] JimBastard_: err, its not a great name
[02:38] bradleymeck|home: id just call it Path (path between nodes get it? or Edge)
[02:38] kaptainkrispy: +1 path
[02:38] JimBastard_: Path reminds me of xpath which makes me want to murder people
[02:38] JimBastard_: i like where you are going though
[02:39] JimBastard_: well its dual-sided
[02:39] JimBastard_: i thought maybe a play on that
[02:39] JimBastard_: node force?
[02:39] zaach has joined the channel
[02:39] JimBastard_: since it has two sides?
[02:39] JimBastard_: lol
[02:39] JimBastard_: whats the lightsaber called with two sides
[02:39] JimBastard_: from that movie with the star wars
[02:40] bradleymeck|home: Vector (ie having 2 components)?
[02:40] bradleymeck|home: idk if they ever named it
[02:40] pandark_ has joined the channel
[02:41] pandark_: Hi
[02:41] jedschmidt has joined the channel
[02:41] bradleymeck|home: Tao Te Node would be a bit much
[02:41] bradleymeck|home: yo pandark_
[02:41] JimBastard_: http://starwars.wikia.com/wiki/Double-bladed_lightsaber
[02:41] JimBastard_: wookiepedia FTW
[02:41] JimBastard_: Saberstaff
[02:41] JimBastard_: meh
[02:42] JimBastard_: Lightstaff
[02:42] JimBastard_: hey
[02:42] JimBastard_: gemini
[02:42] JimBastard_: since its dual sided?
[02:42] JimBastard_: there must be a good metaphor here
[02:42] seand has left the channel
[02:43] JimBastard_: i think gemini might be win, gemini.js
[02:44] mostlygeek has joined the channel
[02:48] pandark_: I'm just curious -or lets pretend it :P- Would it be hard to make a very simple (fake) SSH server using node.js (authentication via predefined login/pass then listening to keystrokes and answering dummy things) ?
[02:51] charlesjolley- has joined the channel
[02:51] sechrist has joined the channel
[02:53] _announcer: Twitter: "Connect - Middleware layer for Node.js http://extjs.github.com/Connect/" -- Ganesh Gunasegaran. http://twitter.com/itsgg/status/17062618179
[02:54] joshholt_ has joined the channel
[02:55] charlesjolley- has joined the channel
[02:55] JimBastard_: pandark_: not at all
[02:56] JimBastard_: i kinda already do that just without real auth, just using nginx
[02:56] JimBastard_: and sys exec
[02:56] findyourownpath has joined the channel
[02:59] Tim_Smart has joined the channel
[03:00] derferman has joined the channel
[03:00] SamuraiJack has joined the channel
[03:01] phiggins has joined the channel
[03:03] Tim_Smart1 has joined the channel
[03:04] pandark_: JimBastard : I'm not sure if we are talking about the same thing... I'm talking about something like a low level ssh honeypot which wouldn't do real things but would seem to. I think you said yours does real things without looking like ssh (Am I right ?).
[03:05] pandark_: JimBastard_
[03:05] pandark_: ^^
[03:06] creationix has joined the channel
[03:06] sechrist has joined the channel
[03:06] creationix has joined the channel
[03:08] pandark_: -low level +low interaction
[03:09] phiggins has joined the channel
[03:11] steadicat has joined the channel
[03:12] bradleymeck: well all the stuff to grab the input etc. are there you just have to fake all the results
[03:16] creationix: anyone here have experience designing an append-only data store in node?
[03:21] halorgium: creationix: var db = function () { var store = []; return function (data) { store.push(data) } }
[03:21] halorgium: :P
[03:22] SteveDekorte: getting this build error: http://www.iolanguage.com/paste/p/ede815d6b.html
[03:22] SteveDekorte: on OSX 10.4.9 with python3 installed
[03:22] creationix: halorgium: what I mean is a full featured data-store using the append-only method for concurrency saftey
[03:22] zaach has joined the channel
[03:22] creationix: the db itself is fully RW
[03:23] pandark_: bradleymeck: seems good :)
[03:23] creationix: SteveDekorte: I don't think the build script works on python 3
[03:24] creationix: can you use python 2.x for the build script?
[03:24] SteveDekorte: sure
[03:24] halorgium: creationix: hehe, i guessed that :)
[03:24] halorgium: creationix: do you mean something in the MVCC/couch vein?
[03:24] creationix: halorgium: yeah, something like that
[03:24] creationix: but as simple as possible
[03:24] SteveDekorte: python25 ok?
[03:24] creationix: and using plain json in the file
[03:25] creationix: SteveDekorte: should be
[03:25] creationix: I use 2.6, but I'm pretty sure 2.5 will work too
[03:25] SteveDekorte: how about Python 2.3.5 ?
[03:25] polotek: lib design question
[03:25] creationix: SteveDekorte: no clue, that seems a bit old to me
[03:25] polotek: I'm wrapping the twitter stream
[03:26] polotek: so I can process it and emit "tweet" events
[03:26] SteveDekorte: is there a way to point the build at the version of python I want it to use?
[03:26] polotek: does it make sense for my wrapper stream to match the ReadableStream api?
[03:27] polotek: SteveDekorte: just make sure the right version of python comes first in your path
[03:27] halorgium: polotek: sure, it is generic enough to support that
[03:27] SteveDekorte: polotek: right, I was hoping not to have to change that as it might break other things
[03:27] halorgium: unified apis are good
[03:28] halorgium: polotek: if you had a writeable tweetstream, you could connect the 2 ;)
[03:28] polotek: halorgium: yeah that's what I'm thinking
[03:28] halorgium: or just connect a tweetstream to a file/ircstream
[03:28] polotek: would make it easy to pump data
[03:29] halorgium: ACTION writes a multiplexor
[03:29] polotek: so then the question becomes how can I easily delegate the methods I don't need to override
[03:30] halorgium: polotek: which do you not need to override?
[03:30] halorgium: i'd have though they would be all specific to twitter
[03:31] Tim_Smart has joined the channel
[03:31] SteveDekorte has joined the channel
[03:31] SteveDekorte: is there an env I can set to tell node which python to use?
[03:32] polotek: halorgium: for instance if my underlying stream emits "end" I just want my twitter stream to pass that through
[03:32] halorgium: polotek: oh, right
[03:32] polotek: but is there a good way to avoid that boilerplate?
[03:33] halorgium: polotek: IMO, it isn't boilerplate
[03:33] halorgium: in most cases, you want to change extra state anyway
[03:33] halorgium: delegate and remove listener for example
[03:34] polotek: halorgium: my wrapper is the only one using the stream. it'll clean up when it's done
[03:34] Tim_Smart1 has joined the channel
[03:35] halorgium: polotek: and foo.end = stream.end won't work?
[03:35] polotek: not the end function the "end" event
[03:35] polotek: when that gets fired by my inner stream I want my wrapper to just re-emit it
[03:35] polotek: inner.addListener('end', function() { this.emit('end'); });
[03:36] polotek: boilerplate
[03:36] jashkenas: and you need to bind this "this"
[03:36] polotek: jashkenas: right, more boilerplate
[03:36] jashkenas: inner.addListener 'end', => @emit 'end'
[03:37] jashkenas: in coffeescript.
[03:37] creationix: if your python2.5 binary called python?
[03:37] creationix: if so, just put it's folder at the front of $PATH
[03:37] polotek: jashkenas: no thank you
[03:37] creationix: if not, create a symlink to it called python and add the current dir to $PATH
[03:38] SteveDekorte: ok, python2.5 working - now I get this configure error:
[03:38] SteveDekorte: http://www.iolanguage.com/paste/p/56de02193.html
[03:39] creationix: SteveDekorte: that's strange, still getting python errors
[03:39] creationix: Steve, what's your platform?
[03:39] SteveDekorte: creationix: might be that I didn't link everything needed
[03:39] SteveDekorte: OSX 10.4.9
[03:40] SteveDekorte: ports appears to have no way to install to normal locations
[03:40] SteveDekorte: and changing my path to look in ports didn't appear to work
[03:40] ryan[WIN]: durp
[03:40] ryan[WIN]: hay pals
[03:40] creationix: SteveDekorte: I can give you the binary from my 10.6.4, not sure it would work though
[03:40] SteveDekorte: creationix: yeah, I have a 10.6.4 binary
[03:40] SteveDekorte: I just have no idea what all node installs
[03:41] SteveDekorte: or where
[03:41] joshholt_ has joined the channel
[03:41] creationix: SteveDekorte: I'm actually working on a portable binary where you just download a zip file and use it from anywhere
[03:41] SteveDekorte: creationix: that would be great
[03:42] creationix: I don't have access to a 10.4 machine, but maybe my binary will run on your machine
[03:42] SteveDekorte: the unix habit of requiring installs to root owned locations is a really poor design IMO
[03:43] creationix: SteveDekorte: here is the tree structure of node installed http://gist.github.com/453747
[03:44] creationix: though you only need the node binary to use it
[03:44] creationix: the rest is all optional
[03:44] creationix: only needed to compile extensions
[03:44] creationix: or read man pages
[03:45] SteveDekorte: eek, scattered across the whole file system
[03:45] cloudhead has joined the channel
[03:46] sechrist has joined the channel
[03:46] JimBastard_: hey ryan[WIN] !
[03:46] JimBastard_: :-D
[03:46] JimBastard_: hows the game building going? anything new and exciting?
[03:47] ryan[WIN]: not tremendously
[03:47] SteveDekorte: copying the executable from my 10.6 machine gives: -bash: ./node: Bad CPU type in executable
[03:47] ryan[WIN]: i've been bogged down with job interviews lately
[03:47] JimBastard_: taking them or giving them?
[03:47] SteveDekorte: I'm guessing the 10.6 machine is 64bit?
[03:47] creationix: yeah, it is
[03:47] creationix: hmm
[03:47] SteveDekorte: why is python used in the build process btw?
[03:48] creationix: ryah: how do you force node to compile as a universal binary for osx
[03:48] ryan[WIN]: JimBastard, i'm the interviewee
[03:48] creationix: or at least a 32 bit version?
[03:48] JimBastard_: oofa
[03:49] polotek: what's a good twitter search that will return lots of results? wanna see how fast this lib can go
[03:49] JimBastard_: can you do rails?
[03:49] JimBastard_: we need a rails guru asap. you get to work with bryan helmkamp and paul dix
[03:49] JimBastard_: also this javascript guy marak
[03:50] SteveDekorte: polotek: worldcup
[03:50] visnup has joined the channel
[03:51] polotek: SteveDekorte: tried that. not a lot of traffic right now
[03:51] polotek: vuvuzela is trending better ;)
[03:51] SteveDekorte: polotek: any common first name then?
[03:51] joshholt_: #apple
[03:53] SteveDekorte: #iphone
[03:53] creationix: SteveDekorte: sorry, it will be a while before I can get you a binary
[03:53] creationix: good luck
[03:54] mscdex: node.js rules!
[03:54] SteveDekorte: creationix: np, I'm installing python from source instead of using ports
[03:54] mscdex: my server needs all the bits it can get its grubby hands on!
[03:54] mscdex: :-D
[03:56] SteveDekorte: hm, same problem
[03:59] Tim_Smart has joined the channel
[04:00] SteveDekorte: ok, this time I installed python 2.5.1 from scratch and verified it's in my path - same error: http://www.iolanguage.com/paste/p/8206bd39f.html
[04:01] SteveDekorte: oh well, I give up for now :)
[04:01] d2dchat has joined the channel
[04:02] polotek: anybody got access to the twitter firehose ;)
[04:02] JimBastard_: hey is there a way to get a list of nodes available modules?
[04:03] JimBastard_: like ["sys","fs","http"]
[04:03] JimBastard_: is that stored somewhere?
[04:03] JimBastard_: fuck im gonna have to read the entire docs again top to bottom to do this api >.<
[04:05] halorgium: JimBastard_: lol, currently loaded?
[04:05] JimBastard_: i think just all available
[04:05] JimBastard_: in the node core
[04:05] tmpvar: for top level modules you can look in the node/lib dir
[04:05] halorgium: JimBastard_: module lookup is lazy
[04:05] JimBastard_: imagine if you wanted to test if a module was available before you tried to require it? maybe just check against a list?
[04:06] JimBastard_: tmpvar: <3
[04:06] halorgium: JimBastard_: they are static compiled in though
[04:06] JimBastard_: yeah
[04:06] tmpvar: yeah, you wont get them all
[04:06] JimBastard_: so to be clear
[04:06] tmpvar: :/
[04:06] JimBastard_: there isnt a getter anywhere on process or anything?
[04:06] tmpvar: nah
[04:06] JimBastard_: should / could there be?
[04:06] tmpvar: node doesnt load anything unless you require()
[04:07] JimBastard_: rgr
[04:07] tmpvar: well.. anything is a bit of an exaggeration
[04:07] JimBastard_: its a custom property then
[04:07] JimBastard_: if its not in the API
[04:07] JimBastard_: cc
[04:07] halorgium: JimBastard_: module.js has resolveModulePath
[04:08] JimBastard_: is that not in the docs?
[04:08] halorgium: no
[04:08] JimBastard_: perhaps docs is not what i should be reading
[04:08] sechrist: hiya guys
[04:08] halorgium: it is private ;)
[04:08] JimBastard_: sup sechrist
[04:08] sechrist: sup man
[04:08] JimBastard_: yeah, ill just come back to it
[04:09] liucougar has joined the channel
[04:09] halorgium: JimBastard_: that func is what searchs the paths to find the module
[04:09] halorgium: JimBastard_: you could use requireAsync with a callback
[04:10] JimBastard_: thanks halorgium . since this is actually for the browser i think im good for now. i just wanted to know if there was an API call i had to mimic
[04:10] JimBastard_: im up to crazyness
[04:10] Tim_Smart1 has joined the channel
[04:11] JimBastard_: aight i gotta focus time
[04:11] tmpvar: focus pocus
[04:11] Tim_Smart has joined the channel
[04:12] Tim_Smart has joined the channel
[04:13] Tim_Smart has joined the channel
[04:24] micheil has joined the channel
[04:24] Aria has joined the channel
[04:30] charlesjolley- has joined the channel
[04:31] wilmoore has joined the channel
[04:33] ditesh|cassini has joined the channel
[04:33] sechrist: http://bugs.python.org/issue9075
[04:33] sechrist: rofl
[04:33] sechrist: what
[04:35] mscdex: mmmm piethon
[05:01] zaach has left the channel
[05:02] Tim_Smart1 has joined the channel
[05:08] sechrist_ has joined the channel
[05:08] stevendavie has joined the channel
[05:09] Validatorian has joined the channel
[05:12] Tim_Smart has joined the channel
[05:12] Validatorian: Aria: Hey there, what's the status of using the HTML5/jsdom projects for spidering data? I'm currently doing this: /class="details">

(.+?) /dev/null
[16:40] technoweenie: i think i have a memleak though
[16:40] Ori_P has joined the channel
[16:42] technoweenie: yeaaah, its slowly creeping up, fuck
[16:43] micheil: hmm..
[16:43] micheil: is the code open?
[16:43] micheil: technoweenie: either that, or email me it and I'll give it a look in the morning
[16:43] micheil: (I've had a bit now, so, not the best time to check it)
[16:43] technoweenie: i have an older version in a gist
[16:44] micheil: yeah, better with current
[16:44] technoweenie: there's some boring github specific stuff
[16:44] micheil: you know my email?
[16:44] technoweenie: no
[16:44] siculars has joined the channel
[16:44] micheil: 446K / avg is pretty gfood though
[16:44] micheil: technoweenie: it's on my github page, but:" micheil@brandedcode.com
[16:45] Yuffster has joined the channel
[16:45] technoweenie: man i need a better way to turn it on and off
[16:45] technoweenie: i'm going to try turning off socket.io first
[16:45] micheil: hmm..
[16:46] micheil: sockets.io? This sounds interesting
[16:46] technoweenie: i have it sending me the activity through websockets, ha
[16:46] micheil: lol, cool
[16:46] micheil: I'd use raw UDP for that
[16:46] micheil: or my own WS library
[16:46] technoweenie: whoa, it just went from 60MB => 30MB
[16:46] micheil: purely because I think sockets.io is a lot of overhead
[16:46] mape: gc? :)
[16:46] micheil: aha! gc
[16:47] micheil: technoweenie: what's the load like?
[16:47] JimBastard: THATS WHAT SHE SAID
[16:47] mape: give it some time to clean up after itself
[16:47] technoweenie: 0.8% cpu
[16:48] micheil: technoweenie: I mean net i/o throughput
[16:48] micheil: clients connected, etc.
[16:48] technoweenie: eh not sure, i want to add some kind of counter so i can see concurrent connections and shti
[16:49] micheil: ah, fair nuff'
[16:49] micheil: but yeah, as for monitors, it's non-essential info, so use UDP & telnet
[16:49] _announcer: Twitter: "any Toronto area #nodejs devs want to team up for @node_knockout? Drop me a line." -- pnewhook. http://twitter.com/pnewhook/status/17103923567
[16:49] technoweenie: sure, if there's a dead simple lib i can use :)
[16:49] micheil: otherwise you're using memory unneededly
[16:49] micheil: 'technoweenie it's built in.
[16:49] technoweenie: i'm not concerned about memory
[16:49] micheil: batteries included
[16:50] technoweenie: i have 3 resques running at ~150MB and 3 old download servers at 70MB
[16:50] jarsen has joined the channel
[16:50] technoweenie: nodeload will let us take those offline
[16:50] micheil: ah, good point
[16:51] micheil: but yeah, most WS servers that I know of should idle around 10mb, peaking at 40mb
[16:53] _announcer: Twitter: "@deanwampler 2 REST API impl over Mongo .. MongoDB Rest (Node.js) (http://bit.ly/aMfkQk) & Sleepy Mongoose (Python) (http://bit.ly/aNvG1M)" -- Debasish Ghosh. http://twitter.com/debasishg/status/17104136159
[16:53] micheil: technoweenie: aha, udp in niode is called dgram
[16:54] technoweenie: yea actually a console udb monitor would be rad
[16:54] technoweenie: i tried to do a streaming json thing, but had problems so i went w/ socket.io
[16:55] ceej has joined the channel
[16:55] micheil: technoweenie: well, yeah, with sockets.io you'll have probably huge overhead as it tries to send to http, websockets, flash, etc.
[16:55] technoweenie: thats all relative
[16:55] technoweenie: and i can easily disable those
[16:56] micheil: I'm not sure about API compat between my websocket library and sockets.io, but I may write a compat layer.
[16:56] _announcer: Twitter: "#webdevelopment Node.JS Project Developer - oDesk: I need help in developing an open source project.
[16:57] micheil: as for code, check for buffer usage, check for unref-able variables
[16:57] micheil: if you're using big trees + delete, maybe a linked list would be better?
[16:57] technoweenie: theres not much state saved
[16:58] technoweenie: ok well i turned off socket.io
[16:59] technoweenie: socket.io doesnt seem to add much overhead initially.
[16:59] micheil: after a while I'm guessing it does
[16:59] _announcer: Twitter: "Node.JS Project Developer - oDesk: I need help in developing an open source project.
[16:59] micheil: I'm actually still to fully load test my websocket server
[16:59] micheil: anyway, I'm out for tonight..
[16:59] JimBastard: LOL node oDesk work
[17:00] micheil: kit
[17:00] micheil: it's actually an opensource project on github
[17:00] technoweenie: hmm nope its not socket.io :)
[17:01] micheil: technoweenie: shoot me the code then ;P
[17:01] micheil: and I'll see if I can spot any places where there may be issues
[17:02] technoweenie: ok thanks
[17:02] micheil: no worries
[17:02] micheil: technoweenie: 10am there?
[17:02] technoweenie: yea
[17:02] micheil: I'll probably get back to you in the night then
[17:02] femto has joined the channel
[17:05] micheil: somebody also remind me about Joe and Websockets :D
[17:05] _announcer: Twitter: "Wow porting grit to node-js will take me a while I think. the work the guys did is awesome. Really learning the plumbing of git this way." -- Christian Kvalheim. http://twitter.com/christkv/status/17104899128
[17:06] technoweenie: yikes, good luck with that
[17:06] micheil: I already started that :d
[17:06] micheil: it's good fun
[17:06] technoweenie: grit isnt that tough to port until you get to to parsing the binary git stuff (loose objects, packfiles, deltas)
[17:07] micheil: the next library I'm working on is node-smtp
[17:08] skampler: When will we start seeing node.js in job ads?
[17:08] technoweenie: skampler: um i think we have already
[17:08] micheil: (the next version will be on npm)
[17:08] mscdex: skampler: yesterday
[17:08] mscdex: :P
[17:08] skampler: Cool
[17:08] mscdex: npm install jobs@latest
[17:09] _announcer: Twitter: "“So... When will we start seeing node.js in job ads?”, mscdex: “Yesterday.” :D" -- Micheil Smith. http://twitter.com/miksago/status/17105120795
[17:09] micheil: :D
[17:09] mscdex: hehe
[17:09] technoweenie: hey anyone have any suggestions for game programming in js?
[17:09] micheil: like what sort?
[17:09] mscdex: tic-tac-toe?
[17:09] markwubben has joined the channel
[17:10] micheil: or 3d shoot-em-up?
[17:10] mscdex: node.js wolf3d!
[17:10] technoweenie: something simple, my son wants to learn
[17:10] micheil: hmm..
[17:10] micheil: depends
[17:10] shimondoodkin: "#webdevelopment Node.JS Project Developer - oDesk: I need help in developing an open source p -- this was me
[17:10] technoweenie: jeez i need to learn too, i dont know the first thing about game dev
[17:10] technoweenie: maybe tic tac toe then :)
[17:10] mscdex: maushu: ping
[17:10] micheil: technoweenie: go two player, use websockets :P
[17:11] micheil: technoweenie: fork him.
[17:11] technoweenie: man, will socket.io work on the ipad
[17:11] technoweenie: surely theres one of the fallbacks that'll work?
[17:11] mscdex: i would hope so
[17:11] micheil: technoweenie: man.. node-websocket-server already works on ipad.
[17:11] micheil: or does it?
[17:11] mscdex: i doubt it
[17:11] technoweenie: safari doesnt do websockets
[17:11] micheil: ipad.. iphone.. safari 5 yet?
[17:12] micheil: >_>
[17:12] shimondoodkin: there is a thing called Unity
[17:12] mscdex: latest stable safari still doesn't use websockets
[17:12] mscdex: iirc
[17:12] shimondoodkin: but it is not realated to node js
[17:12] micheil: bugger it. too late for code + I've had a few beers.
[17:12] technoweenie: yea i've seen unity, that's a bit much for us both :)
[17:12] micheil: mscdex: latest safari does
[17:12] micheil: safari 5
[17:12] mscdex: oh
[17:12] mscdex: they must have released that recently then
[17:13] micheil: uhh.. 1 month ago?
[17:13] mscdex: that's recent enough
[17:13] maushu: mscdex, pong.
[17:13] mscdex: maushu: scroll up: Twitter: "Node.JS Project Developer - oDesk: I need help in developing an open source project.
[17:13] micheil: mscdex: and you call your self a web developer..
[17:13] micheil: :P
[17:13] mscdex: i've never used safari and probably never will
[17:13] micheil: booo...
[17:13] micheil: I actually prefer safari over firefox
[17:14] mscdex: i've found chromium meets my needs
[17:14] shimondoodkin: me too
[17:14] mscdex: and it's fast
[17:14] micheil: I'm actually using chrome in this performance / play I'm working with
[17:14] mscdex: heh
[17:14] mscdex: fullscreen mode?
[17:15] micheil: got it going fullscreen with a site set up with a stepper for different scenes to go in projection
[17:15] mscdex: hehe
[17:15] mscdex: cool
[17:15] micheil: the scenes are animated with jquery, and use basic html
[17:15] mscdex: no canvas? :-P
[17:15] micheil: I'm thinking I will add in websockets so I have a monitor for it
[17:15] micheil: no need for canvas.
[17:15] maushu: mscdex, found the tweet: http://twitter.com/TweetWebDesign/status/17105370825
[17:16] micheil: plus the animation is a fade in / out animation, so, it's pretty basic
[17:16] maushu: Analyzing why right now.
[17:16] micheil: maushu: ask him. shimondoodkin
[17:16] mscdex: maushu: i've seen it get cut off a few times before too. dunno why that would be
[17:16] maushu: Probably new line.
[17:16] maushu: I *thought* I had fixed it.
[17:16] mscdex: oh
[17:17] _announcer: Twitter: "Trying something that may kill the node.js
[17:17] micheil: yup
[17:17] micheil: new lines
[17:17] mscdex: heh
[17:17] mscdex: ACTION shakes a fist at newlines
[17:17] micheil: aaannyway, I'm off to bed; I bid you a good night, chaps'
[17:17] mscdex: adios muchacho
[17:18] maushu: micheil, it doesn't kill the bot. He just makes him twitch.
[17:18] maushu: * it
[17:18] micheil: :D
[17:18] mscdex: from tweet to twitch ;-)
[17:18] micheil: it's cool, it's cool.
[17:19] maushu: I'm looking for the twitter dev thingy.
[17:19] maushu: nevermind, found it.
[17:20] Validatorian has joined the channel
[17:21] shimondoodkin: thanks to tareqsust! yey
[17:25] charlesjolley- has joined the channel
[17:28] _announcer has joined the channel
[17:28] maushu: It should work now, it was because I changed something later on and the newline filter stopped working.
[17:31] maushu: Stopped working for when you wrote in english otherwise...
[17:32] markwubben has joined the channel
[17:33] _announcer: Twitter: "Node.JS Project Developer | Projects for Freelancer http://is.gd/d5f30" -- Erica Gowlland. http://twitter.com/EricasyGowl/status/17106516006
[17:38] TomY has joined the channel
[17:41] jashkenas has joined the channel
[17:41] jashkenas has left the channel
[17:49] dcolish has joined the channel
[17:50] cloudhead has joined the channel
[17:52] markwubben has joined the channel
[17:52] markwubben has joined the channel
[17:55] mikeal has joined the channel
[18:02] steadicat has joined the channel
[18:03] creationix has joined the channel
[18:03] creationix: mikeal: quick question about couch keys
[18:03] mikeal: sure
[18:04] creationix: are they restricted to numbers?
[18:04] mikeal: huh?
[18:04] creationix: and how are they stored? in a special property
[18:04] mikeal: you mean the doc ids?
[18:04] mikeal: they are strings
[18:04] creationix: yes, sorry
[18:04] mikeal: we use uuid's by default but if you want to enforce uniqueness of some property you can use the _id
[18:04] creationix: I think I'll keep my format real simple and just have:
[18:04] creationix: [16 bit length integer]{somejson}
[18:05] mikeal: don't do that
[18:05] mikeal: use a unique key
[18:05] creationix: why not?
[18:05] creationix: yeah, I need a key, just not sure where to put it
[18:05] mikeal: and use a header to seperate in the file format
[18:05] mikeal: eventually what you're talking about will break
[18:05] mikeal: do this
[18:06] mikeal: generate a random 16byte string
[18:06] mikeal: write it as the first 16bytes to the file
[18:06] mikeal: that's your header
[18:06] mikeal: so your file format is
[18:06] creationix: ok
[18:06] mikeal: [header][key][header][size][document]
[18:06] mikeal: then the header again
[18:07] mikeal: whoops
[18:07] creationix: that's an awlful lot of 16 byte strings ;)
[18:07] mikeal: [header][key][header][size][header][document]
[18:07] Zetty has joined the channel
[18:07] mikeal: who cares
[18:07] mikeal: disc is cheap
[18:07] mikeal: you can make it smaller if you like
[18:07] mikeal: the bigger it is the more durable it is
[18:08] visnup has joined the channel
[18:08] creationix: but why the header? the start of the file will never get out of sync right?
[18:08] creationix: it's the end that corruptable and that doesn't matter
[18:08] mikeal: because if you get improper writes you're going to have to recover data by finding that header
[18:08] mikeal: if it exists randomly in a document then it'll be harder to recover
[18:08] Zetty: hi all, i'm trying to follow this example http://www.silassewell.com/blog/2010/06/03/node-js-https-ssl-server-example/ for https but i am getting an error about "if (cred.key) c.context.setKey(cred.key); " in crypto having incorrect parameters. any ideas?
[18:09] creationix: mikeal: so what is [key]
[18:09] creationix: ?
[18:09] mikeal: the document id
[18:09] creationix: fixed length?
[18:09] mikeal: nope
[18:09] mikeal: variable
[18:09] JimBastard has joined the channel
[18:09] mikeal: that's why you have the header
[18:09] creationix: hmm, then I need another size block in there for the key
[18:10] creationix: mayby just 8 bit
[18:10] mikeal: not really
[18:10] creationix: keys don't need to be large
[18:10] mikeal: usually the key is so small you'll have it in the chunk
[18:10] teemow has joined the channel
[18:10] mikeal: so just parse to the next header
[18:10] creationix: I see why you wanted indexOf now
[18:10] mikeal: the size of the body is important, because that's going to get cached in memory
[18:10] creationix: for the headers
[18:10] mikeal: so when someone pulls the doc out you'll know the read offsets from the file
[18:11] mikeal: also, in that indexOf feature request i have a leading buffer as the last argument
[18:11] mikeal: which is really useful
[18:11] creationix: I see
[18:12] creationix: so the key should not be part of the document?
[18:12] mikeal: it can be
[18:12] mikeal: it just depends on how you want your api to look
[18:12] creationix: [header][size]{document_with_key}
[18:12] visnup has left the channel
[18:13] mikeal: do you want people to just do db.post({document})
[18:13] visnup has joined the channel
[18:13] [[zzz]] has joined the channel
[18:13] mikeal: or do you want an api like db.set(key, value)
[18:13] visnup has left the channel
[18:13] visnup has joined the channel
[18:14] creationix: well, both really, but that's not dependent on the file format
[18:14] shimondoodkin: i prefer db.insert({doc})
[18:14] creationix: it's easily abstracted
[18:14] shimondoodkin: and db.update({paritial doc})
[18:14] creationix: what does couch do when returning results
[18:15] zaach has joined the channel
[18:15] creationix: does it put the key in something like _id or is it seperate from the document
[18:15] JimBastard: does anyone know if the requirejs guy lurks here
[18:15] JimBastard: http://github.com/jrburke/requirejs.git
[18:15] JimBastard: bradleymeck: you have any ideas about this?
[18:15] creationix: shimondoodkin: on your update, is the key embedded in the partial doc?
[18:16] JimBastard: ive got to implement require first. ive kinda got http.createClient working
[18:16] shimondoodkin: in mongodb it is
[18:16] shimondoodkin: its just waht i like to use
[18:16] shimondoodkin: *what
[18:18] creationix: mikeal: I think I'll make a super simple one with little to no headers as a practice, and then make one that a little more robust
[18:19] creationix: I really want something I can finish in a day or two
[18:19] mikeal: that header thing is easy if you're converting to strings anyway
[18:19] creationix: yeah, but if I never plan to write recovery code, what good is it?
[18:19] creationix: it's just a proof of concept not meant for real use
[18:20] mikeal: it's not just that
[18:20] mikeal: you don't have to write recovery code
[18:20] aurynn: ACTION is presently working on a simple dispatch, and then will go on to a simple jsgi-compliant REST stack
[18:20] mikeal: but your ability to even parse through a file that might have a little big of corruption will fail
[18:20] mikeal: but if you write the parser with headers it's trivial to skip over a bad log entry
[18:21] creationix: mikeal: yeah, but what will cause that corruption?
[18:21] creationix: it's not common is it?
[18:21] mikeal: termination in the middle of a write
[18:21] mikeal: it's *very* common
[18:21] mikeal: in the database world
[18:21] mikeal: if you don't have durability you're not consistent
[18:21] creationix: hmm, I was planning on doing an offline compaction/cleanup on startup
[18:22] mikeal: that's not too hard
[18:22] mikeal: you just parse the old file, then write a new compacted one
[18:22] creationix: ok, so how about
[18:22] creationix: [16 byte header][32 bit length]{document_with_key}
[18:23] creationix: simple and durable
[18:23] mikeal: you can make the 16byte header smaller if you like
[18:23] mikeal: so, the issue with this is that you're going to have to parse the entirety of every document on startup
[18:23] _announcer: Twitter: "@jazzrecord are there already ideas for using the project with node.js and lets say couchdb?" -- Sascha Depold. http://twitter.com/sdepold/status/17109328150
[18:23] creationix: mikeal: ahh, I see
[18:24] mikeal: so if you have 2gigs worth of JSON documents, you're going to do 2 gigs of JSON parsing
[18:24] creationix: yeah, the key should be seperate
[18:24] mikeal: if you sepereate the key all you have to do is parse the key and the length of the JSON body
[18:24] creationix: sounds good, though I hate seeking
[18:25] creationix: [header][key_length]key[doc_length]{doc}
[18:25] mikeal: when you parse the initial file you won't really seek
[18:25] mikeal: nah dude
[18:25] mikeal: as soon as someone does a key or body large than what you alloted for the length
[18:25] mikeal: er larger
[18:25] mikeal: the parser is broken
[18:25] creationix: than 32 bit?
[18:26] mikeal: i know this excessive header thing seems like a pain in the ass at first, but it's actually pretty simple and doesn't have all these inherent bugs
[18:26] mikeal: oh yeah
[18:26] mikeal: people do insane stuff with keys because it's the only way to enfore uniqueness
[18:27] mikeal: i've seen people base64 binarys like images and use them as keys
[18:27] creationix: I'm fine with putting some sane restrictions on my db
[18:27] creationix: to keep the code simpler
[18:27] mikeal: it's not simpler
[18:27] mikeal: because if when someone does the entire db breaks, that's not acceptable
[18:27] creationix: no, it will just reject it
[18:28] aurynn: imo, the DB should be enforcing data constraints. But, I come from the sql world.
[18:28] mikeal: i'm just trying to tell you what everyone in the database world has come up with as a sane practice
[18:28] mikeal: if you want to make all the same mistakes we did 20 years ago, go for it
[18:28] creationix: mikeal: yeah, thanks for helping, I'm just trying to understand
[18:28] creationix: lol
[18:29] mikeal: you can call it miniMongoDB :P
[18:29] creationix: we know how you feel about mongo ;)
[18:29] mikeal: it's not just me
[18:29] sr: what this the behavior of the uncaughtExceptions event exactly? was trying to re-throw in it, looks like it is ignored
[18:29] mikeal: the MySQL and Postgres people, who actually like most NoSQL databases, really don't like Mongo
[18:29] aurynn: hey, does node.js have bindings for berkeleyDB? We can write a dkvs with that too!
[18:30] sr: which is kinda cool. just wanna be sure of its behavior
[18:31] mikeal: creationix: why don't you just use node-dirty?
[18:32] creationix: mikeal: well, it looks abandoned for one
[18:32] creationix: and I need something with clean ip for work
[18:32] mikeal: last time i checked felix still had big plans for it
[18:32] mikeal: what is the license on it?
[18:33] creationix: he did, right before jsconf, and there are no updates since
[18:33] creationix: MIT I think
[18:35] JimBastard: yeah
[18:35] JimBastard: i have a version of dirty that isnt append only
[18:35] mikeal: DAMMIT!
[18:35] JimBastard: i could modify it pretty easily
[18:35] mikeal: we already gave up a goal
[18:35] JimBastard: felixe's code must be 80% done i bet
[18:35] JimBastard: just needs some tweaks
[18:35] creationix: mikeal: ahh, he's been working on the other branch
[18:35] mikeal: we just suck at the first 5 minutes
[18:36] creationix: so not too abandoned
[18:36] creationix: just back burnered
[18:36] JimBastard: no docs i think
[18:39] stepheneb has joined the channel
[18:39] technoweenie: is that sys.pump function in a released version of node yet
[18:40] mikeal: nope
[18:40] mikeal: it just landed last week
[18:44] piratepenguin has joined the channel
[18:46] stepheneb has joined the channel
[18:48] ceej has joined the channel
[18:50] visnup has joined the channel
[18:51] jbrantly has joined the channel
[18:56] stepheneb has joined the channel
[18:57] technoweenie: ahh ok
[18:57] creationix: mikeal: is tomorrow your BBQ? I don't remember
[18:58] mikeal: yup
[18:58] mitkok has joined the channel
[18:58] creationix: sweet
[18:59] creationix: ok, I think I see the value in the headers to sync up the stream in case of corruption
[18:59] creationix: but what's wrong with putting a restriction of the size and/or type of the keys
[18:59] creationix: and a top limit on the size of the body
[19:00] creationix: mikeal: ^
[19:00] mikeal: you can enforce the limits if you want, but that's just more code
[19:00] creationix: ok, so it's extra code either way, just depends on if the burden is on the parser or the code writing to the db
[19:00] mikeal: the nice thing about use the header seperator everywhere
[19:01] mikeal: is that the parser is actually pretty simple
[19:01] creationix: not without indexOf
[19:01] mikeal: and it supports all of these odd cases
[19:01] mikeal: creationix: but you're doing string converstions anyway
[19:01] mikeal: and strings have indexOf
[19:01] creationix: I am?
[19:01] mikeal: if it's a proof of concept just write it like you already have indexOf and just do the string conversions
[19:01] creationix: I guess so
[19:02] creationix: then once buffers get indexOf we can write a real db
[19:02] mikeal: yup
[19:02] creationix: so no size header for the body, or just store it as a stringified integer?
[19:03] mikeal: do you think you'll want to keep other data in memory other than just the key and size?
[19:03] creationix: [header]key[header]size[header]{doc}
[19:03] creationix: no, key and offset/size is enough
[19:03] stepheneb has joined the channel
[19:03] mikeal: ok
[19:03] mikeal: cause I was going to say you could do
[19:03] mikeal: var meta = {key:"key",size:"size"}
[19:04] mikeal: [header][JSON.stringify(meta)[header]document
[19:06] ph^ has joined the channel
[19:07] jarsen has joined the channel
[19:07] mikeal: creationix: one thing you'll also want is a "deleted":true
[19:07] mikeal: in the meta
[19:07] mikeal: because when you remove a document you'll just want to append the delete
[19:08] mikeal: and the next time you compact it'll go away
[19:12] creationix: good ideas, thanks
[19:12] creationix: I think I'll do the meta thing
[19:16] sveimac has joined the channel
[19:19] mitkok has joined the channel
[19:30] _announcer: Twitter: "Connect 0.1.0 released http://github.com/extjs/Connect/blob/master/History.md #nodejs - new api, bug fixes, more middleware, better docs etc" -- Edward Spencer. http://twitter.com/edspencer/status/17112837072
[19:30] rmurphey has left the channel
[19:32] jsilver has joined the channel
[19:32] JimBastard: fuck i gotta port http://github.com/ry/node/blob/master/lib/module.js to the browser
[19:32] JimBastard: this shit is simple, but slightly mind boggling at times
[19:35] mitkok1 has joined the channel
[19:40] kriszyp has joined the channel
[19:54] hellp has joined the channel
[20:05] tlrobinson_ has joined the channel
[20:11] _announcer: Twitter: "looking for an orm like framework for #couchdb and #nodejs" -- Sascha Depold. http://twitter.com/sdepold/status/17114958815
[20:12] pandark_ has joined the channel
[20:16] JimBastard: bradleymeck: can i get voice?
[20:16] JimBastard: !tweet @sdepold http://github.com/cloudhead/cradle couchdb orm that is bad ass
[20:17] JimBastard: nm
[20:19] JimBastard: if i dont get my chez burger soon im gonna loose my shit
[20:20] jarsen has joined the channel
[20:20] JimBastard: !tweet @sdepold http://github.com/cloudhead/journey for routing + http://github.com/cloudhead/resourcer for orm. cradle is just a quick easy one
[20:21] JimBastard: !tweet @sdepold http://github.com/cloudhead/journey for routing, http://github.com/cloudhead/resourcer for orm
[20:22] stevendavie has joined the channel
[20:23] JimBastard: i dont think _utility is listening for direct messages
[20:27] itistoday has joined the channel
[20:27] itistoday has left the channel
[20:38] charlesjolley- has joined the channel
[20:49] _announcer: Twitter: "# Wstdays from my last visit in 2008 were much better organized, thanks! :) Report about node.js disappoint." [ru] -- Phillip Kovalev. http://twitter.com/twilightfeel/status/17116931875
[20:50] visnup has joined the channel
[20:50] _announcer: Twitter: "#convergese node.js rules" -- Jed Schneider. http://twitter.com/jedschneider/status/17116986656
[20:56] kodisha: nice tweet :D
[20:59] creationix: why do I suck at data chunking!
[20:59] creationix: it's not that complicated, but I can't ever seem to get it right
[21:00] creationix: I just need to read data from the disk broken up by delimiters
[21:01] mikeal has joined the channel
[21:01] jarsen has joined the channel
[21:01] _announcer: Twitter: "Playing with nodejs and expressjs. Am I rockstar yet?" -- Sean Bryant. http://twitter.com/sadpandasean/status/17117541418
[21:02] tmpvar has joined the channel
[21:03] mitkok has joined the channel
[21:03] _announcer: Twitter: "@christkv Really? You're porting it to node-js? That's awesome!" -- Fredrik Matheson. http://twitter.com/movito/status/17117713264
[21:03] creationix: mikeal: did the game not go well?
[21:04] mikeal: we played well
[21:04] mikeal: Ghana won
[21:04] mikeal: but we played damn well
[21:04] creationix: ahh, that explains the tweets
[21:04] mikeal: in the last few minutes
[21:04] creationix: is is the world cup after all
[21:04] mikeal: the keeper was running all the way trying to pull headers
[21:04] mikeal: it was amazing
[21:04] mikeal: it went in to overtime
[21:05] creationix: mikeal: so I realized why I'm so resistant to the header thing
[21:05] creationix: I can't write code that reads in a file without knowing the number of bytes to read
[21:06] mikeal: huh?
[21:06] mikeal: when you first parse the file
[21:06] mikeal: you just open a readStream
[21:06] mikeal: and read through the entire file
[21:06] mikeal: so you just parse itertively in to your in-memory index of the db
[21:06] mikeal: and when you write, it's all append-only
[21:06] creationix: readStream?
[21:06] creationix: oh, I need to do it sync at startup
[21:07] mikeal: fs.openReadStreamhttp://nodejs.org/api.html
[21:07] mikeal: fs.createReadStream
[21:07] mikeal: whoops
[21:07] mikeal: http://nodejs.org/api.html#fs-readstream-137
[21:07] creationix: scary thing is I wrote the fs.readFile helper
[21:07] creationix: I *should* know what I'm doing
[21:08] mikeal: do you have any code up yet?
[21:08] mikeal: i could just write the parser
[21:08] mikeal: all i'm doing today is some yard work and setup for the BBQ
[21:09] creationix: I really need to learn how to do this chunking thing
[21:09] creationix: for some reason it's really hard for me
[21:09] creationix: if I read in 16 byte chunks, then it's pretty easy since there will never be more than one instance of the header at a time
[21:09] markwubben has joined the channel
[21:10] mikeal: no no, don't do that
[21:10] mikeal: that'll be super innefficient
[21:10] rauchg has joined the channel
[21:11] mikeal: just document the API that you want
[21:11] mikeal: push some code
[21:11] MattJ has joined the channel
[21:11] wilmoore has joined the channel
[21:11] mitkok1 has joined the channel
[21:11] mikeal: and i'll fork it and write the fileformat
[21:12] liucougar has joined the channel
[21:12] creationix: well, my format is simple:
[21:12] creationix: [16 byte header]{meta}[16 byte header]{doc}
[21:12] _announcer: Twitter: "JSDoc almost feels like JavaDoc. I don't really have to add that I should have started to document my code earlier. #js #jsdoc #node.js" -- Benjamin Erb. http://twitter.com/b_erb/status/17118231891
[21:12] creationix: and meta will have key, length, and deleted
[21:14] jarsen has joined the channel
[21:14] creationix: mikeal: http://gist.github.com/454347
[21:14] mikeal: eventually, what i would like, is an API to add stuff to meta
[21:15] mikeal: so that you can stick shit in to the k/v store that is cached in memory
[21:15] creationix: yeah, that would be cool
[21:15] creationix: but really, it's just an optimization, can be added later when it's needed
[21:15] creationix: the OS does some caching for you on small stuff
[21:15] mikeal: it's really minimal
[21:16] mikeal: but more interesting than that
[21:16] mikeal: you could get at the meta info without a callback
[21:16] creationix: true
[21:16] mikeal: so if you have some small part of your doc that you need on an event emitter, you can just stick it in meta
[21:17] creationix: that does sound useful
[21:17] creationix: I won't add it to this version, but our real one should have it
[21:17] mikeal: i gotta do some yard work
[21:17] mikeal: bbiab
[21:17] creationix: ok, have fun
[21:20] rauchg_ has joined the channel
[21:22] stepheneb has joined the channel
[21:24] _announcer: Twitter: "A lease-based cache for # j / # node.js: http://gist.github.com/454331" [de] -- Benjamin Erb. http://twitter.com/b_erb/status/17118830655
[21:28] bmizerany has joined the channel
[21:30] pquerna: is there a 'good' example of using defered threads to with a 3rd party library?
[21:40] piratepenguin has joined the channel
[21:41] liucougar_ has joined the channel
[21:43] sveimac has joined the channel
[21:44] pgriess has joined the channel
[22:00] mw has joined the channel
[22:03] mw2 has joined the channel
[22:10] voodootikigod_ has joined the channel
[22:11] drostie has joined the channel
[22:13] tmedema has joined the channel
[22:14] tmedema: Hi there, I have a question, are there any prebuild binaries available for node.js? I do not have the tools to build it myself
[22:15] _announcer: Twitter: "Just built a node worker for the factory... it formats pages using Readability.js on a headless server over a RESTful endpoint. API baby!" --  Terry Martin. http://twitter.com/tzmartin/status/17121149159
[22:15] shimondoodkin: for waht os do you need the binaries?
[22:16] shimondoodkin: what
[22:16] shimondoodkin: os =operating system
[22:17] christkv has joined the channel
[22:19] tmedema: shimondoodkin: uname -a returns Linux MSD 2007 i686 i686 i386 GNU/Linux
[22:21] christkv has joined the channel
[22:22] shimondoodkin: can you do 'cat /etc/*-release' or 'cat /etc/*-version'.
[22:22] christkv_ has joined the channel
[22:22] shimondoodkin: is it ubuntu?
[22:25] tmedema: hmmm
[22:26] tmedema: cat opens somekind of text editor shimondoodkin
[22:26] pufuwozu` has joined the channel
[22:26] tmedema: i'm not experienced with linux as you can see
[22:28] shimondoodkin: cat it is like type in dos
[22:28] shimondoodkin: it prints the text
[22:29] grantmichaels has joined the channel
[22:30] tmedema: so what do you want me to do shimondoodkin ?
[22:30] shimondoodkin: do you have the linux in virtual machine?
[22:31] tmedema: no, I access it from ssh
[22:31] tmedema: its a shared webhosting server
[22:31] mitkok has joined the channel
[22:31] shimondoodkin: is it yours?
[22:31] shimondoodkin: ahh
[22:31] tmedema: I rent it
[22:32] pufuwozu` has joined the channel
[22:40] pufuwozu` has joined the channel
[22:41] mape: why can't people stay logged into irc :S
[22:42] pzich has joined the channel
[22:49] kodisha: mape: my wifi sometimes disconnects for no reason
[22:49] Tim_Smart has joined the channel
[22:49] kodisha: it reconnects one second later
[22:51] mape: kodisha: nah not you, just mean people in general
[22:51] mape: need to get a hold of someone but they don't seem to idle
[22:53] kodisha: i love irc. but is not so good for 1 on 1 conversation, gtalk or some other im is much better for that
[22:53] mape: Ned_: you did node-irc right?
[23:00] mape: Ned_: Anyway, when you read this, remember we talked about the regex for nicks in node-irc didn't take names starting with _ ? Well seems it doesn't take names starting with [ or ] either. Just figured it was easier to let you know rather then to fork it all and do pull req.
[23:02] mape: Ned_: perhaps better to just remove the first [_a-zA-Z] all together?
[23:02] derferman has joined the channel
[23:02] twomashi has joined the channel
[23:03] Aria has joined the channel
[23:07] tmpvar has joined the channel
[23:08] satori has joined the channel
[23:14] wilmoore has joined the channel
[23:25] mw has joined the channel
[23:25] mattly has joined the channel
[23:29] mw2 has joined the channel
[23:34] _announcer: Twitter: "go to the bathroom node.js beginning to make" [ja] -- Yohei Sasaki. http://twitter.com/yssk22/status/17124802826
[23:34] mape: ...
[23:34] mape: what?
[23:36] tmpvar: haha
[23:36] tmpvar: he's going to poo while node builds
[23:36] mape: oh
[23:37] tmpvar: because there is nothing left to do when node is not available :(
[23:37] mape: slow computers in japan
[23:37] mape: or quick toilet visits
[23:37] Tim_Smart: "I can build node.js in the time it takes to crap"
[23:37] Tim_Smart: No time wasted.
[23:37] tmpvar: heh heh
[23:37] tmpvar: holla back when you're done building node, I'll be in the toilet
[23:38] shimondoodkin: definitly he is addicted
[23:38] khug has joined the channel
[23:38] brainproxy has joined the channel
[23:40] khug: hey all, does node support overriding toString on objects? I can't seem to make it happen :-/
[23:40] mape: ?
[23:41] khug: Route.prototype.toString = function(){….}
[23:41] khug: still outputs [object Object] when inspected
[23:41] mape: when you run new Route().toString() ?
[23:42] khug: doing a deep inspect, which I assume does exactly that
[23:42] mape: sys.inspect?
[23:42] khug: yep
[23:43] mape: that doesnt execute functions
[23:43] mape: just shows them
[23:43] khug: I'm inspecting a hash which contains an instantiated Route
[23:44] khug: will compile a pastie...
[23:45] brianmario has joined the channel
[23:47] khug: http://gist.github.com/454457
[23:47] shimondoodkin: you cant do that
[23:48] piratepenguin has joined the channel
[23:48] mape: inspecting that would give a string?
[23:48] Tim_Smart: +1 for mape
[23:48] shimondoodkin: var sys=require('sys');
[23:48] shimondoodkin: var Route={};
[23:48] shimondoodkin: sys.puts(Route);
[23:48] shimondoodkin: Route.prototype.toString1= function() { return "it is a string i swear" }
[23:48] shimondoodkin: var Newroute=new Route();
[23:49] Tim_Smart: err, pastie or gist my friend
[23:49] shimondoodkin: http://gist.github.com/454464
[23:50] Tim_Smart: khug: http://gist.github.com/454462
[23:50] khug: sorry, typo
[23:50] shimondoodkin: is says TypeError: Cannot set property 'toString1' of undefined
[23:50] khug: it is toString
[23:50] shimondoodkin: with function object it works
[23:50] shimondoodkin: surly i tried
[23:51] shimondoodkin: surely
[23:51] Tim_Smart: shimondoodkin: It is supposed to be a function
[23:52] khug: will clean up the gist with copied code
[23:52] khug: sec
[23:53] shimondoodkin: probably the prototypes on object are disabled
[23:53] shimondoodkin: you still can do prototypes on Object()
[23:54] _announcer: Twitter: "look at Node.js as something I find interesting, but I can do almost anything it can do in PHP already and with less effort. Hrm." -- Ed Finkler. http://twitter.com/funkatron/status/17125778560
[23:55] Tim_Smart: shimondoodkin: You only do prototypes on constructors. You can do __proto__ on objects however.
[23:56] mape: php :/
[23:58] khug: http://gist.github.com/454457
[23:58] shimondoodkin: maybe you can explain wahat it __proto__
[23:59] khug: this is closer to what I have, edited for brevity
[23:59] mape: khug: what is name suppse to be?
[23:59] mape: *suppose
[23:59] khug: the name of the route
[23:59] khug: it's set during the route setup
[23:59] mape: oh duh, sorry reading like a moron
[23:59] mape: that would be this.name though?
[23:59] khug: np