[00:01] trotter has joined the channel [00:02] [[zz]] has joined the channel [00:03] jwl_ has joined the channel [00:09] aschw has joined the channel [00:10] mattcodes has joined the channel [00:11] chrischris has joined the channel [00:11] Hello71 has joined the channel [00:11] Hello71 has joined the channel [00:11] Wizek: hi [00:11] Wizek: Mongoodse documentation seems to be out of date [00:12] Wizek: *Mongoose [00:12] Wizek: Is there anyone else here to confirm that? [00:14] aconbere has joined the channel [00:21] HAITI has left the channel [00:22] HAITI has joined the channel [00:27] aschw has joined the channel [00:32] tylerstalder has joined the channel [00:41] dgraunke has joined the channel [00:41] dnolen has joined the channel [00:44] jashkenas has joined the channel [00:48] StM has joined the channel [00:50] CarterA has joined the channel [00:51] CarterA: Has anyone figured out a way to do a recursive directory listing asynchronously? [00:53] omygawshkenas has joined the channel [00:58] sid__ has joined the channel [00:58] SubStack: CarterA: https://github.com/nshah/nodejs-walker [00:59] CarterA: SubStack: Neat, thanks. [00:59] EGreg_ has joined the channel [00:59] EGreg_: hey guys [00:59] EGreg_: if a module defines a function (with an object in its closure, like this) : [01:00] EGreg_: module.exports = function(Q) { return function(linked) { return some object } } [01:00] EGreg_: then can I call require() repeatedly with this module and passing the same object [01:00] EGreg_: and it won't keep creating new functions? [01:00] SubStack: require() gets cached [01:03] siculars has joined the channel [01:05] mikeal has joined the channel [01:09] torvalamo has joined the channel [01:09] aschw has joined the channel [01:10] spyrosl has joined the channel [01:11] mattcodes has joined the channel [01:15] isaacs: ryah: hey, you know how we do like dozens of stat calls for every require()? we should cache those so that we only ever have to stat a given path once. [01:16] AAA_awright: The filesystem really ought to know if stat() has changed since you last asked it [01:18] twoism has joined the channel [01:19] CarterA: isaacs: Just so you know, npm is awesome. [01:20] isaacs: CarterA: thanks :) [01:20] isaacs: AAA_awright: yeah, that's true [01:20] isaacs: i guess [01:20] isaacs: but asking the filesystem is sometimes slow [01:22] mdgrech has joined the channel [01:22] davidascher has joined the channel [01:24] eirikur has joined the channel [01:27] mdgrech: whats up folks [01:28] bbttxu has joined the channel [01:31] jbr has joined the channel [01:34] msekimura has joined the channel [01:39] matt_c has joined the channel [01:41] tek has joined the channel [01:43] torvalamo has joined the channel [01:48] Aikar: hmm [01:48] Aikar: i just had an interesting idea [01:51] Aikar: the node-cgi module demos the idea of running node scripts as an apache (or any other httpd i guess) CGI script. im pretty sure STDOUT of the child process is the file descriptor of the connection (otherwise that would be ineffecient), so we could grab the FD in a node script ran as a cgi under apache, connect to a unix domain socket server, pass the FD and let the cgi script die off. that should pass the FD to a node daemon from apache w/o piping data through a [01:52] Aikar: then from there emit a connection on a server and the daemon should now own the connection [01:53] torvalamo has joined the channel [01:54] Aikar: then you can run a PHP site and still make use of node for things like websocket servers [01:54] mikew3c has joined the channel [01:56] CarterA: Is there a node.js test coverage tool yet? Or am I out of luck there? [01:56] SubStack: expresso [01:56] SubStack: -c [01:56] CarterA: Didn't know it did coverage. Is it the only one? [01:58] achiu has joined the channel [01:58] mtodd has joined the channel [01:59] sh1mmer has joined the channel [02:01] torvalamo has joined the channel [02:01] rburhum has joined the channel [02:03] davidwalsh has joined the channel [02:18] richcollins has joined the channel [02:21] achiu has joined the channel [02:22] matt_c has joined the channel [02:22] mattcodes has joined the channel [02:22] mikeal has joined the channel [02:24] roberthahn has joined the channel [02:25] gf3 has joined the channel [02:27] roberthahn: good evening! I'm in the process of writing a web app using Express, and i'm wondering how I could test my controllers. I have them decoupled from the routes right now, and I'm thinking that in my test, I could call each controller with request and response mock objects. [02:28] ircretary has joined the channel [02:28] justinlilly: sounds reasonable. what's wrong with that? [02:29] roberthahn: nothing, justinlilly. I can see how this would be useful and wanted to set this up so that it's testing framework agnostic [02:29] jchris has joined the channel [02:30] o_o has joined the channel [02:30] roberthahn: i'm imagining the tests to be inside the response object. you'd call response.send("whatever") and somehow, in that function, I could test to see that i got 'whatever' [02:31] roberthahn: and i think that's a good idea, but as i said before, I can't quite see how to make it test framework agnostic [02:31] roberthahn: my fav. test framework is vows, but I didn't have to go far to see that many people don't use it [02:33] roberthahn: anyway, i'm sure i could figure something out; i just wanted to throw the idea out there to see if a) it's been done before, and b) if not, is this something people would find valuable, and c) if so, should I set it up as my own project or make it part of the Express (or Express-contrib) codebase [02:37] mattcodes has joined the channel [02:37] possibilities has joined the channel [02:44] jakehow has joined the channel [02:47] techwraith has joined the channel [02:47] techwraith: So, what's the best XML parser for node right now? And is anything easily installed via NPM? [02:47] StM has joined the channel [02:48] twoism has joined the channel [02:48] spetrea_ has joined the channel [02:48] isaacs: techwraith: depends on your use case. [02:48] isaacs: do you want a dom, or do you want to parse a stream thatmight never end? [02:48] techwraith: I'm using an API that only gives me xml, just need to convert what they give me into an object :) [02:49] techwraith: No streaming involved [02:50] isaacs: ok. libxmljs is pretty badass. there's also a few others. [02:50] isaacs: techwraith: npm ls xml <-- that should show you some [02:50] techwraith: Ah, forgot about ls! [02:51] ryah: isaacs: *shrug* [02:51] ryah: isaacs: how would you expire the cache? [02:51] isaacs: ryah: you woulnd't. [02:51] isaacs: ryah: files don't just *go away* [02:51] isaacs: stat's data is good forEVER [02:52] ryah: try { require('./something'); } catch (e) { loadSomething(); require('./something'); } [02:52] Phyllio has joined the channel [02:53] spyrosl has joined the channel [02:53] ryah: sounds like it possibly introduces strange cases - personally i haven't found require() to be slow. [02:53] jashkenas has joined the channel [02:53] davidascher has joined the channel [02:54] stephenjudkins has joined the channel [02:57] isaacs: no, me neither [02:58] isaacs: it's totally an academically slow case. [03:00] techwraith: libxmljs is pain in the ass to install :( [03:01] hornairs has joined the channel [03:03] ircretary has joined the channel [03:03] isaacs: ircretary: where are your logs? [03:03] ircretary: isaacs: Logs can be found at: http://irc.npmjs.org/node.js [03:03] isaacs: w00t! [03:07] ircretary has joined the channel [03:07] omygawshkenas has joined the channel [03:08] ircretary has joined the channel [03:11] ircretary has joined the channel [03:14] mscdex: isaacs: there ought to be timezone information there! ;-) [03:14] isaacs: mscdex: nah, utc ftw, man [03:14] mscdex: but people may not know that :P [03:14] isaacs: mscdex: you can ask ircretary what time it is. [03:15] isaacs: ircretary: what time you got? [03:15] ircretary: isaacs: It's 2010-12-12T03:15:02.222Z by my watch, sir. [03:15] jchris1 has joined the channel [03:15] MikhX has joined the channel [03:15] SubStack: the whole world should run on UTC [03:15] SubStack: then I wouldn't need to do as much mental math [03:15] mscdex: felix's logs were local time, just sayin' [03:16] isaacs: mscdex: i thought felix's are local time in germany? [03:16] jspiros has joined the channel [03:16] mscdex: yeah, that's what i mean [03:16] mscdex: local to him [03:16] isaacs: mscdex: er, no, they're also UTC [03:16] roberthahn: hmph, i once had to build a system where I had to send outlook calendar events to people around the world - the trick was to ensure they showed up at the correct time of day w.r.t. their timezone :) [03:17] mscdex: hmm [03:17] roberthahn: so i did some research - how hard could it be? [03:17] Aria: "Deeply painful" if the answer involves timezones. [03:17] roberthahn: 26 timezones. some of them are 1/2 hour off from others, one is 20mins off, another 3/4hr off [03:17] Aria: Or date math. [03:17] roberthahn: then you add in daylight savings [03:18] isaacs: time zones make perfect sense if you are a shepherd who never travels more than 30 miles in a day and doesn't talk to anyone you're not able to see with your unaided eyeballs. [03:18] roberthahn: then you try to figure out what to do with events that cross daylight savigns boundaries [03:18] SubStack: dammit which one is "network octet order" [03:18] boaz has joined the channel [03:18] SubStack: how hard is it to say which endianness that is? [03:19] roberthahn: i tried to sell people on the idea of observing UTC no matter where you are [03:19] Aria: And in those cases, "noonish" also works as well. [03:19] Aria: SubStack: Big-endian. [03:19] SubStack: yeah just verified it [03:19] roberthahn: that means noonish in my timezone would be 8am (assuming i did the math right) [03:20] roberthahn: no one liked the idea. they were too attached to lunchtime == 12:00 [03:20] Aria: Heh. [03:20] SubStack: endianness, signedness (both common variants), all super annoying [03:20] Aria: And here, lunch is 1300. [03:20] Aria: Because our timezone is kinda wide and a bit left of center. [03:20] isaacs: if i had it my way, we'd either a) shorten the second to 86.4% of its current length, or b) slow down the earth to 86.4% of its curent rotational speed, whichever proved less impractical. [03:20] isaacs: or just get off this silly rock. [03:21] Aria: And then there's Ohio. [03:21] isaacs: either way, a day should be 100,000 seconds. [03:21] Aria: Hehe. I still prefer base 360 numbers. [03:21] SubStack: isaacs: also it should be defined in terms of the speed of light [03:21] SubStack: that way we won't need to correct for the orbital drift and changes to the period from natural variation [03:22] isaacs: it's good to have one timescale which is "about a heartbeat" and another which is "about a circadean rhythm." [03:22] isaacs: but this 24*60*60 crap has gotta go [03:22] SubStack: also calendar dates [03:22] SubStack: I hate that shit. [03:23] isaacs: and a kilosecond is a really nice chunk of time to be able to talk about. [03:23] sh1mmer has joined the channel [03:23] SubStack: it will get far more complicated once humans start routinely traveling at relativistic speeds [03:24] isaacs: then our "week" could be replaced with a "megasecond", or 10 days [03:24] SubStack: unless FTL drives get invented first [03:24] Aria: .oO(Today is Sweetmorn, the 54th day of The Aftermath in the YOLD 3176) [03:25] SubStack: Hail Eris, Hack Linux! [03:25] isaacs: wee ddate [03:30] isaacs: the nice thing about the discordian calendar is the 5-day weeks. [03:30] isaacs: i love 5-day weeks. [03:30] cs44 has joined the channel [03:30] isaacs: work 3, half-work 1, full-rest 1. that's what i do when i dont' have a job, and so don't have to stick to the stupid 5-on 2-off thing [03:31] isaacs: 5 days is too many in a row to be productive. [03:31] isaacs: (or at least, maximally sustainably productive) [03:32] Floxxx: days off? what's that? [03:33] Floxxx: are those the days you work less than 12 hours? [03:33] ircretary has joined the channel [03:35] isaacs: of course, the discordian calendar is even crazier than the gregorian [03:37] Aria: I just love the five seasons thing. It matches my life a bit more. [03:37] Aria: Though Bureaucracy should include tax season. [03:37] Wyverald has joined the channel [03:42] isaacs: Aria: what if, instead of making bureaucracy include tax season, we just make spring NOT include tax season? [03:43] Aria: I'd be into that. [03:43] Aria: .oO(Monthly, consistent, and easy to calculate?) [03:43] isaacs: more like "not in any season, ever" [03:44] isaacs: death and taxes are two problems that most people have just foolishly and sloppily decided are unsolveable. [03:44] Aria: ACTION laughs. I don't mind the /paying/ taxes. I just mind the accounting. [03:44] Aria: (and lack of accounting on the other side) [03:44] isaacs: yeah, i don't actually mind getting less money in my bank account, as i'm pretty overpaid as it is, and my job is basically a lot of playing. [03:45] isaacs: i mind the unpleasant time i spend *doing* it [03:45] isaacs: and i also mind the way that it causes a net increase of misery, imo far above any benefits it provides to anyone anywhere. [03:46] Aria: I reap a lot for the taxes i pay. (A LOT -- and this in a state with sucky services!) [03:46] Floxxx: as i'm pretty overpaid as it is, and my job is basically a lot of playing. <-- can i have your job? :p [03:46] Aria: But man, I spend more time accounting for taxes than I do in the money I spend on them. [03:46] Aria: I wish I got paid for that time. [03:47] isaacs: Aria: srsly [03:48] isaacs: Floxxx: ;) [03:48] Aria: And my job .. well, not overpaid, but making it. And I get to play a lot. [03:48] isaacs: that's not to say my job isn't hard or challenging or sometimes demanding and a little stressful. [03:48] isaacs: but i mean, i was doing most of it before joyent hired me. [03:48] isaacs: so clearly i like it. [03:48] Aria: Nice. [03:49] Aria: (Heh, if only people liking what they did had anything to do with what they choose. . . But that's a lesson for ##psychology) [03:49] jchris1 has joined the channel [03:49] Floxxx: i was coding PHP before i got a fulltime job, doesn't mean it's fun when you HAVE to do it :p [03:49] Aria: Indeed. There's a certain amount of play you have to have built in to make creative work even work at all. [03:49] isaacs: i started enjoying work a LOT more when i stopped believing that it was somehow "mandatory" [03:50] Aria: (And coding that's NOT creative work sucks musty donkey dong.) [03:50] Floxxx: well, paying bills kinda makes work mandatory :p [03:50] isaacs: almost ever day, I remind myself that my job is optional. [03:50] isaacs: Floxxx: you could get your bills paid without any particular job. [03:50] isaacs: it's not hard. [03:50] Floxxx: orly? [03:50] isaacs: option 1) sell drugs. [03:50] Floxxx: lol [03:50] isaacs: option 2) start a company. (ANY company.) [03:50] Aria: (Selling drugs is WORK) [03:50] isaacs: really option 1 is a subset of option 2... [03:50] Aria: Heh. if only starting a company was easy without any assets. [03:51] isaacs: Aria: then you're selling the wrong drugs to the wrong people. [03:51] Floxxx: Aria: setting up an LLC is like $250 [03:51] Floxxx: and bam [03:51] Floxxx: you have a company :p [03:51] isaacs: ACTION does not know this from personal experience and definitely didn't pay all his bills in college with money made from selling lsd. [03:51] Aria: And hell, it's easy to get in over your head if you have no clue how to run a business well. [03:51] Aria: ($100 to start an LLC here!) [03:51] Floxxx: well, there you go [03:51] Aria: (But that won't tell you how to make money with it ;-)) [03:51] Floxxx: true [03:52] isaacs: right, well, i mean, if your problem is that you're not clever enough to turn programming ability into money, then you've got other problems. [03:52] Aria: Took me 8 years and some very clever juggling, and the days of easy credit to learn how to actually make money at it. [03:52] isaacs: option 3) don't be so expensive. [03:52] Floxxx: isaacs: problem is advertising [03:52] sepehr has joined the channel [03:53] Floxxx: if you can make wonderful stuff but nobody knows about it... [03:53] mischief has joined the channel [03:53] Aria: Yeah. Getting off the ground is a little interesting [03:53] Aria: Best way I've found to promote myself is to just get involved with every little bit of open source I use. [03:53] isaacs: Aria++ [03:53] v8bot: isaacs has given a beer to Aria. Aria now has 2 beers. [03:53] Aria: It's a rare project I don't toss a patch at. [03:53] Aria: Mmm, beer. [03:53] mscdex: v8bot++ [03:53] v8bot: mscdex has given a beer to v8bot. v8bot now has 8 beers. [03:53] Floxxx: that's a lot of work though, and in the meantime you're not making any money [03:54] isaacs: that's how i got my dream job, basically. "You know what node needs? a package manager. i'll go write that" [03:54] Aria: Yeah. Though the knack to being in the right place at the right time is interesting. I've missed that one a dozen times. [03:54] Floxxx: isaacs: npm has only one drawback [03:54] Floxxx: the root problem ;) [03:54] Aria: Hehe. It's being worked on ;-) [03:54] Floxxx: i know :p [03:54] isaacs: Floxxx: but you have a job NOW, right? so be less expensive, put money in the bank, get some other offers that your employer will have to match (or will let you trade up to another pay bracket), and then eventually, you'll have a cushion that makes any job optional. [03:55] Aria: I still think we just need a reviewed repo. [03:55] isaacs: if you have a year in the bank, you can quit any job any time. if you CAN quit, you don't HAVE to. [03:55] isaacs: (usually) [03:55] Aria: (Very often.) [03:55] jashkenas has joined the channel [03:55] isaacs: now, if you've got kids and stuff, it's harder. [03:55] Aria: (My dad keeps quitting his job, and they keep giving him a raise to make him stay...) [03:55] Aria: Yeah. Though kids don't have to cost an arm and a leg. [03:55] Aria: We poor folks manage it often. [03:55] Floxxx: i technically don't have a job, i own a company, but the only customer i have (and have time for atm) is the company i used to work, so i'm kinda grounded there atm [03:55] isaacs: Aria: i played that game at yahoo a lot. [03:56] SubStack: kids can fend for themselves, grifting out on the streets [03:56] Aria: ACTION nods at Floxxx. [03:56] SubStack: all children should learn to grift [03:56] Aria: ACTION laughs. [03:56] SubStack: valuable life skill [03:56] isaacs: ACTION did some grifting back in the day [03:56] isaacs: yep [03:56] Floxxx: and considering i have a family to take care of i can't just drop that [03:56] Aria: Kids fend for themselves relatively well, and if you're not careful, they're getting sysadmin jobs at 15. [03:56] Aria: .oO(Me.) [03:56] Floxxx: Aria: that would be great ;) [03:57] isaacs: Aria: well, you cheated. you didn't go through public education. [03:57] isaacs: not a fair comparison. [03:57] Floxxx: i should kick my stepdaughter to get a job [03:57] Aria: It's an option for anyone in the us ;-) [03:57] Floxxx: she's 17 and a royal pita [03:57] SubStack: Floxxx: at least you have one customer [03:57] Aria: Unschooling is legal in all 50 states now. [03:57] SubStack: that's more than I have! [03:57] Floxxx: SubStack: true [03:59] Floxxx: too bad my son is too young to code, i could train him and have him help me :p [03:59] cs44: i have an image manipulation process that i'd like to throw node in front of [03:59] SubStack: although we do have one company that wants to integrate asap [03:59] Floxxx: but i guess having a 2 year old coder is a bit weird :p [03:59] SubStack: and meeting with sencha next week [03:59] cs44: that said, i'm looking for benchmarks and such on concurrent connections [03:59] Floxxx: cs44: nodeload [04:00] SubStack: hopefully we'll have the new awesome display stuff and proxy features live by then [04:00] Floxxx: nodeload is a "port" of apache benchmark [04:00] cs44: oh nice [04:00] Aria: Floxxx: I was keying in programs for the TI 99/4a and speech synth we had at 6 years old... [04:00] cs44: thanks @Floxxx [04:00] Floxxx: lol, nice @ Aria [04:01] Aria: (And man did I love telling it to say "five" over and over. "Fibe. Fibe. Fibe." ... I'm not sure my parents were so enthused.) [04:01] cs44: that said, how well is node.js built for keeping open connections? [04:01] cs44: or is that something i still want to avoid? [04:01] SubStack: and with respect to taxes, I complete agree, the US should eliminate all deducations [04:01] Aria: cs44: It only keeps the socket and whatever state you explicitly keep, so it's well-suited. [04:01] max has joined the channel [04:01] SubStack: more money for them and less bullshit for us [04:02] Floxxx: SubStack: i like deductions :p [04:02] Floxxx: gives me a nice paycheck at the beginning of the new year ;) [04:02] cs44: Aria: hrmm. so unlike, say rails, i can safely keep a request waiting? [04:02] isaacs: cs44: you could say that "keeping open connections" is sort of the reason for nodejs. [04:02] cs44: isaacs: nice. [04:02] isaacs: cs44: yes. you can do that. that's what it's for. [04:02] Aria: cs44: Yes. It's not going to "occupy a backend and 44mb of RAM" [04:02] isaacs: cs44: check out socket.io. it's awesome. [04:02] possibilities: btw, which nodeload do you use? benschmaus's fork comes up first on google. [04:03] beta_ has joined the channel [04:03] isaacs: cs44: abstracts it all out. you jsut send messages and write js for both ends. [04:03] Floxxx: possibilities: i use benschmaus's [04:03] cs44: i'd love to be able to handle a request, do my image manipulation, then fire back the binary -- without need to poll from the client for completion, etc [04:04] cs44: sounds like this sort of thing is right up node.js's alley =) [04:04] Floxxx: cs44: socket.io then ;) [04:04] cs44: heh [04:04] cs44: i'll admit -- i'm having a hard time believing it! hehe [04:04] SubStack: how do you manipulate the images? [04:04] SubStack: if it's just an external program that should work pretty well [04:04] cs44: graphicsmagick [04:04] cs44: yep [04:04] SubStack: yep, should be pretty easy [04:05] Aria: cs44: Should be doable. If you want to handle many clients, and your image manipulation code doesn't always take the same amount of time, you may want to make the image processors separate processes (webworkers!), and have a node process route data, but yeah. It'll do it. [04:05] Aria: Yeah, exernal program win in that case. [04:05] jakehow has joined the channel [04:05] SubStack: if it were native node.js it would actually be harder to make it perform well [04:05] cs44: was thinking redis in teh middle [04:05] lstrojny_ has joined the channel [04:05] Aria: Why redis? [04:05] cs44: image manipulation is in ruby [04:05] Floxxx: node can do native image manipulation? [04:05] Aria: Some ;-) [04:06] Floxxx: node_gd ftw ;) [04:06] Aria: Single node process handling network connections, then spawn off image processors. [04:06] cs44: i'm familiar with redis (resque actually) [04:06] SubStack: Floxxx: if you don't mind flipping bits in huge buffers, then sure [04:06] Aria: Raphael and node-canvas ftw. [04:06] cs44: Aria: yep [04:06] cs44: that's the plan [04:06] mischief has joined the channel [04:06] mischief has joined the channel [04:06] Floxxx: lol SubStack [04:06] cs44: ahh crap [04:06] cs44: lol [04:06] Aria: I don't see what redis would buy you. [04:06] cs44: server-side raphael! [04:06] Aria: But you could use it, if the ruby program is persistent and you need a way to talk to it. [04:06] isaacs: Aria: well, if he's already got redis and ruby working to do that bit of it, swapping out nodejs for the fe/sockets side seems reasonable [04:06] cs44: Aria: well.. [04:06] isaacs: makes sense to me. [04:07] cs44: remember too [04:07] Aria: Ah, yeah. That'd make sense. [04:07] isaacs: cs44: sorry, guessing your gender based on the statistical breakdown of programmers. [04:07] cs44: most of this is my thinking where rails is in the front [04:07] bingomanatee_ has joined the channel [04:07] omygawshkenas has joined the channel [04:07] isaacs: very un-PC of me. [04:07] Aria: Hehe. It's a scarily safe assumption. [04:07] cs44: hence the no long lived connections [04:07] cs44: etc [04:07] cs44: isaacs: np, it is software after all [04:08] Aria: .oO(I am getting used to being the only (known)woman in a channel.) [04:08] cs44: Aria: hehe [04:08] cs44: well -- off to grab some dinner. [04:08] cs44: thanks again for the help [04:08] Aria: Sure thing. [04:08] cs44: would love to chat more about it after some digging =) [04:09] jashkenas has joined the channel [04:09] Aria: Do! [04:09] Floxxx: Aria: women on IRC is a rarity in the first place, women programmers on IRC is a statistically improbability ;) [04:09] jashkenas has joined the channel [04:09] isaacs: Floxxx: there are plenty of women on irc. just not in programming rooms. [04:10] isaacs: but yes, P(XX | irc U coding) is quite low. [04:10] Floxxx: hmm, maybe when there's a webchat available ;) [04:10] Aria: Okay, now THAT was sexist ;-) [04:10] Floxxx: lol [04:10] Aria: We're every bit as likely to be using screen and irssi, actually. [04:11] isaacs: yeah, you know, in my experience, the women in tech that i've known have been about the same spectrum (ha) of nerdiness as the guys. [04:11] Floxxx: i've been on IRC for at least 10 years, i don't think i've ever seen a woman who knows irssi, let alone screen :p [04:11] isaacs: just fewer of them. [04:11] SubStack: network effects! [04:11] SubStack: I blame these. [04:11] isaacs: Floxxx: let me introduce you to Aria, uber nerd extraordinairre. [04:12] Aria: You just don't know we're women most of the time. [04:12] Floxxx: my wife would say "wuh?" if i'd tell her about irssi :p [04:12] Aria: Since about 1/3 of the time, the reaction to that is "PIX or it isn't true!" [04:12] Floxxx: lol [04:12] SubStack: Floxxx: I know 2 in person who use irssi and screen [04:12] TrevorBurnham has joined the channel [04:12] SubStack: no wait 3 [04:12] Floxxx: pics or gtfo ;) [04:12] Aria: Hehe. [04:12] Floxxx: SubStack: lucky you ;) [04:13] isaacs: i'm really amazed that no one's gotten offended yet. [04:13] Floxxx: isaacs: it's the internet... [04:13] isaacs: gender + technology discussions usually lead directly to "well, it's cuz you're all a bunch of assholes" right away. [04:13] SubStack: I would get offended but I don't know how. [04:13] Aria: Often. [04:13] Floxxx: if you get offended you don't belong there :p [04:13] TrevorBurnham: Hi, can someone help me with npm? I'm going crazy. I've got a perfectly good package.json, but when I run `npm install .`, nothing gets created in ~/.node_libraries, so I can't `require` my module. [04:13] Aria: Try npm lint, perhaps? [04:13] isaacs: TrevorBurnham: version of npm? [04:14] isaacs: Aria: i don't think there is such a thing? [04:14] isaacs: but that'd be a neat idea. [04:14] Aria: Oh. I was thinking there was. [04:14] Aria: It's a great idea, and I must have dreamed it. [04:14] TrevorBurnham: I'm using 0.2.5-1 [04:14] SubStack: TrevorBurnham: `npm link` [04:14] isaacs: TrevorBurnham: ok, first step, npm update npm [04:14] isaacs: guys, guys, i got this. [04:14] isaacs: chill. [04:14] SubStack: kk [04:14] Aria: Hehe. isaacs++ [04:14] isaacs: :D [04:14] SubStack: I'll allow it. [04:14] Floxxx: isaacs: any idea how long it usually takes to receive a coupon for no.de? [04:15] SubStack: hah I see what you did there [04:15] isaacs: Floxxx: you coming to node camp? [04:15] Aria: .oO(I will not write npm lint until I've finished my tax accounting. I will not write npm lint until...) [04:15] Floxxx: doubt it [04:15] AAA_awright: We haven't made anyhting better than *irissi* yet? I'm seriously disappointed [04:15] TrevorBurnham: Uh, 0.2.5-1 is the version I got after updating. Should I be getting something newer? I'm on node 0.2.4. [04:15] AAA_awright: I've thought about an IRC client with Node.js [04:15] isaacs: TrevorBurnham: yeah... so that's weird. [04:15] isaacs: TrevorBurnham: what's `npm config get root`? [04:16] isaacs: maybe you installed it somewhere oddball, and now it's not successfully overwriting itself. [04:16] isaacs: TrevorBurnham: another question: did you install node and/or npm with Hombrew? [04:16] TrevorBurnham: @SubStack `npm link` doesn't seem to do any different. [04:16] isaacs: Floxxx: you request it already on the no.de api? [04:16] Floxxx: isaacs: yeh [04:16] TrevorBurnham: Yeah, I'm a Homebrew guy. [04:16] isaacs: TrevorBurnham: no, link will do the same thing as install [04:17] Floxxx: poor isaacs, he's typing his fingers off :p [04:17] isaacs: TrevorBurnham: ok, step 1) brew rm node ; brew rm npm step 2) do one of these: https://gist.github.com/579814 [04:17] isaacs: TrevorBurnham: and then it will work [04:18] Aria: Ooh. Problems with homebrew, eh? More work for me to poke at! [04:18] TrevorBurnham: Huh, what's wrong with Homebrew for node/npm? [04:18] possibilities: ACTION adds himself to the list of people pining away for no.de coupon [04:18] isaacs: TrevorBurnham: long story. [04:18] SubStack: ACTION recommends a new command: `npm fixit` [04:18] isaacs: haha [04:18] SubStack: fixes all problems [04:18] TrevorBurnham: I'm actually writing a book right now that deals with some of this stuff, so it'd be great if I could, uh, tell people how to install it properly... [04:18] isaacs: TrevorBurnham: check out the techniques in that gist. [04:19] Floxxx: lol [04:19] isaacs: homebrew does some oddball stuff. [04:19] Aria: (npm lint: check the package.json in the package specified or .; npm fixit: check operational problems in the npm install, and fix the fixable ones, carp if not.) [04:19] isaacs: Aria: you should write it up as a new issue, and then go do your tax stuff, and then implement it. [04:19] isaacs: procrastination++ [04:19] v8bot: isaacs has given a beer to procrastination. procrastination now has 1 beers. [04:19] Aria: Hehe. [04:19] TrevorBurnham: Alright... I'll check it out... but I'm going to stubbornly try Homebrew again first. [04:19] isaacs: ACTION drinks the sweet sweet beer of procrastination [04:20] Floxxx: hmmm, beer [04:20] Floxxx: too bad i have none in my fridge :( cba to go to the store [04:20] SubStack: ACTION takes a swig of bitter regret [04:21] isaacs: TrevorBurnham: has to do with the way that homebrew manages paths. [04:21] isaacs: and how it monkeys with the npm source code. [04:21] isaacs: and doesn't update more than once a quarter. [04:21] isaacs: etc. [04:21] SubStack: npm could silently disable homebrew and use itself as an intermediary to micromanage [04:21] isaacs: if you DO try the brew install again, at least do "brew update" and then brew install node and npm again, so you get closer to the latest versions. [04:22] isaacs: SubStack: yeah... i have a feeling they'd just edit that out. [04:23] Aria: Heh. In fact, there's a new npm in brew since the last time I pulled. [04:23] Aria: (which was less than a week ago) [04:23] Aria: Now only one rev down! [04:23] omygawshkenas has joined the channel [04:24] isaacs: ok, i just did "brew update" and npm is 0.2.5 [04:24] SubStack: I am far too set in my ways for this mac business [04:24] isaacs: that's ANCIENT. [04:24] Aria: It's 0.2.11 for me. [04:24] isaacs: hahahaa, but it's doing "make install", which pulls the latest npm anyway. [04:24] jchris1 has joined the channel [04:24] Aria: But yeah. They're doing funky in there. [04:24] isaacs: and completely freezing up, because it edits the makefile... jesus, this is a nightmare. [04:25] TrevorBurnham: OK, I installed npm 0.2.11-5 with Homebrew, but I'm still experiencing the same issue. [04:25] Aria: Welcome to package manager hell: package managers managed by package mangers never ends well. [04:25] amerine has joined the channel [04:25] Aria: (I still fight gems off and use RPM...) [04:25] isaacs: TrevorBurnham: when you get out from under homebrew, if it's still not working, i'll help you. [04:25] isaacs: TrevorBurnham: till then, all i can say is that i warned you about those demons. [04:25] TrevorBurnham: Guess I'll try installing it by a different method. `npm install .` *should* add something to ~/node_libraries, right? [04:26] isaacs: TrevorBurnham: if you have defined either a "modules" has or a "directories":{"lib" : "folder"} [04:26] Aria: It should add it to where node is installed, if that's writable. ~/.node_libraries is just one configuration. [04:26] isaacs: then yes [04:26] Floxxx: isaacs: any idea if they're gonna be taping node camp? would love to watch a webcast or so [04:26] chrischris has joined the channel [04:26] isaacs: TrevorBurnham: it'll go to `npm config get root` [04:26] isaacs: TrevorBurnham: which is by default /path/to/node/../lib/node [04:26] isaacs: TrevorBurnham: ie, /usr/local/lib/node [04:27] isaacs: Floxxx: yes, we'll be taping, and maybe streaming, i'm not sure about that, though [04:27] Floxxx: keep me informed :) [04:27] isaacs: Floxxx: don't go away, just a second.. [04:27] Floxxx: lol [04:28] omygawshkenas has joined the channel [04:31] TrevorBurnham: Oh, that may be the problem: I was only looking at `~/.npm_libraries`, which is apparently no longer my npm root dir. So yeah, just verified that everything's working now—and I think it was actually working under the fresh Homebrew install, too. (Just uninstalled, and reinstalled via brew, and everything seems to be golden.) [04:31] TrevorBurnham: Thanks a lot, isaacs. Keep up the good work. [04:31] isaacs: np :) [04:35] mbrochh has joined the channel [04:36] mr_daniel has joined the channel [04:40] PyroPeter has joined the channel [04:41] isaacs: yeah, so, here's my beef with the homebrew npm: it makes `npm update npm` not work. [04:41] isaacs: that is freaking lame. [04:44] bingomanatee_ has joined the channel [04:46] masahiroh has joined the channel [04:48] Phyllio has joined the channel [04:49] mischievious has joined the channel [04:49] mischievious has joined the channel [04:51] breccan has joined the channel [04:57] Aria: Wow. I just got bitten by semicolon insertion for the first time. [04:59] davidascher has joined the channel [05:00] mattcodes has joined the channel [05:01] bart2 has joined the channel [05:05] jashkenas: Aria: which flavor? [05:05] Aria: Function definition followed by a closure. [05:05] Aria: function a() { } [05:05] Aria: (function() { stuff() } () [05:06] jashkenas: ouch. [05:06] Floxxx: isaacs: looks like no.de doesn't like me :p it created the smartmachine successfully it says, but if i request the status it gives me a 404 [05:07] isaacs: Floxxx: what's your hostname? [05:07] isaacs: Aria: you mean, you got hit by the LACK of semicolon insertion? [05:07] Aria: Hehe. Yep. [05:07] isaacs: yeah. that's why starting a line with ( is not allowed. [05:07] isaacs: must be prefixed by ; [05:07] isaacs: same with [ [05:07] Floxxx: isaacs: floxxx.no.de [05:08] isaacs: Floxxx: works for me [05:08] isaacs: probably just dns propagation [05:08] isaacs: Floxxx: try 64.30.136.49 [05:08] Floxxx: when i curl the status it gives a 404 [05:08] Floxxx: https://api.no.de/#GET-:resource_uri/status [05:08] isaacs: we don't do that "oh, subdomains are automatic because everyone's on the same host" thing. [05:08] isaacs: every no.de machine is a unique ip [05:09] Aria: ++ [05:09] Floxxx: yah, i figured ;)\ [05:09] isaacs: like, it's out there, man. on the internet. [05:09] Aria: .oO(c'mon IP6!) [05:09] jashkenas: Is there a nice Node idiom for getting a line of input from the console? [05:09] isaacs: Aria: turns out ip6 is a pita [05:09] isaacs: i think we'rejust gonna nat forever. [05:09] Aria: Yeah? I have no problems with it. [05:09] isaacs: it's slow, i'm told. [05:10] isaacs: when you have to route to thousands of things [05:10] Aria: Oh, that's just routers not having hardware ASICs to route it, and so drop back to CPU [05:10] SubStack: jashkenas: there are some libraries like this one: http://github.com/jesusabdullah/prompt [05:10] isaacs: and no one speaks it [05:10] Aria: (The current routing tables are smaller than IP4) [05:10] SubStack: oh whoops [05:10] SubStack: https://github.com/jesusabdullah/node-prompt [05:10] jashkenas: without needing a library? like "gets" or "read-line", or something? [05:10] jashkenas: console.log backwards. [05:11] Aria: We'll see if adoption picks up in February when the first IPv4 allocation that meets policy gets turned down [05:11] tylerstalder has joined the channel [05:11] isaacs: jashkenas: stdin is a stream. if \n is magical to you, you must expres that magic in code. [05:11] SubStack: yep [05:11] isaacs: Aria: the ipv4 space is not as full as it seems. [05:11] jashkenas: ok. [05:11] isaacs: Aria: most providers have WAY more ips than they're actually using. [05:11] SubStack: jashkenas: also lazy can do line-buffering: https://github.com/pkrumins/node-lazy [05:11] Aria: Yep. But you can't just fragment the routing table without running a LOT of routers out of RAM. [05:11] Aria: And so suddenly you can't get fully routable IPs. [05:12] Aria: And so then you have to use tunnels. And the administrative overhead of that makes IP6 look really attractive. [05:12] sechrist: Anybody know how hard it is to send raw frames to an xserver? [05:12] jashkenas: isaacs: Since Node's adopted a browser-mimicing API, with console.*, what would you think about adding support for console's prehistoric cousins? alert(), prompt(), and confirm() ? [05:12] Aria: Oh man. X protocol sucks musty donkey dong. [05:12] sechrist: I just want to be able to see frames generated in node [05:13] Aria: jashkenas: What would prompt() do? [05:13] isaacs: jashkenas: those are blocking. [05:13] sechrist: at 30fps [05:13] sechrist: without base64 stringing into a browser [05:13] Aria: Oh, like image frames. Not like X protocol frames. [05:13] jashkenas: Yes, an only to be used when scripting around, like everything sync. [05:13] SubStack: jashkenas: embrace the async! [05:13] Aria: node-gtk should be able to do something like that. [05:13] sechrist: well I'm thinking of ways to show them -- and X server came to mind [05:13] isaacs: Aria: javascript:alert(prompt("type something")) [05:13] jashkenas: I can imagine you'd like prompt() for NPM console interation. [05:13] isaacs: jashkenas: nah, i got a little util. [05:13] isaacs: it's not hard to write [05:13] isaacs: i like npm being fully non-blocking [05:14] isaacs: a blocking prompt() function would offend my delicate sensibilities. [05:14] SubStack: not only is it hard to write, there are already async line-buffering modules on npm [05:14] SubStack: *not hard [05:14] SubStack: actually it is rather hard to write [05:14] SubStack: to write /well/ I should qualify [05:15] jashkenas: *sigh* It's not about being hard -- it's about being able to have a standalone Node script with basic interaction. But thanks for the answers, I'll give up the pursuit. [05:15] SubStack: ! [05:15] SubStack: npm is crazy easy [05:15] SubStack: just npm install prompt [05:15] SubStack: and you're done [05:15] sechrist: argh [05:15] sechrist: I can't figure out how to get gtk and glib on my mac [05:15] isaacs: jashkenas: yeah, it's the blocking io. that's the problem. [05:15] Aria: brew install gtk+ ? [05:15] isaacs: jashkenas: it wouldn't be hard to write a prompt() that takes a cb. [05:16] jashkenas: that's be fine by me ... as long as there's something built-in to rely on. [05:16] SubStack: why does it need to be built-in? [05:16] SubStack: node.js tries not to build too much in [05:16] SubStack: that's what external modules are for [05:17] jesusabdullah: npm install prompt, you say? [05:17] sechrist: prompt() eh? [05:17] jesusabdullah: I made that! [05:17] SubStack: jesusabdullah: I do say as such! [05:17] jesusabdullah: But I need to rewrite it [05:17] Aria: I honestly haven't used something like "gets" or "prompt()" since I was learning to write in $language. [05:17] sechrist: I started a cli library to have a general library for making clis [05:17] SubStack: jesusabdullah: shhhh, you're not helping my argument [05:17] sechrist: hacking up repl made me angry [05:17] jesusabdullah: It works pretty well actually [05:17] SubStack: sechrist: rawk sounds useful [05:17] jesusabdullah: doesn't *need* a rewrite [05:17] jesusabdullah: I just *want* to [05:18] Floxxx: isaacs: what does http code "411 Length required" mean when it comes to no.de? [05:18] sechrist: SubStack: btw do you intend to maintain chainsaw? [05:18] sechrist: I find myself using it a lot [05:18] isaacs: Floxxx: it means that you're sending a request that does not include a Content-Length, but it requires one. [05:18] SubStack: oh and there is a linebuffer module too [05:18] chapel: SubStack << not sure if you remember, I asked last night about if I should run some data in memory [05:18] isaacs: Floxxx: without knowing the request you made, i really don't know what was wrong with it. [05:18] SubStack: looks like Aria wrote it [05:18] Floxxx: isaacs: start and reboot command both give that [05:19] isaacs: but chances are, you didn't send a transfer-encoding, or a content-length, and the server didn't like it [05:19] Aria: Hehe. Yep. Though that's something else. [05:19] isaacs: Floxxx: how are you running them? [05:19] SubStack: sechrist: yep! [05:19] Floxxx: curl [05:19] chapel: well I made some code changes, got it to work in a hackish way, and so far, it cut response times locally with ab from 700ms to 215ms at the highest [05:19] SubStack: sechrist: I'm already using chainsaw in 3 or so modules [05:19] Aria: That's just for line-oriented input in general, not so specific. [05:19] isaacs: Floxxx: yeah, duh. what args. [05:19] Floxxx: -u, -k and -X PUT [05:19] Floxxx: (like the API shows) [05:19] SubStack: sechrist: because I was always writing the same code to do chaining [05:20] isaacs: Floxxx: you should ask in #joyent [05:20] sechrist: return this is gay [05:20] Floxxx: mmk [05:20] SubStack: chapel: sweet [05:20] SubStack: in-memory data stores can be pretty nice like that [05:20] chapel: well its just a variable, should I use a buffer? [05:20] chapel: object I should say sorry [05:21] SubStack: chapel: I can't comment without seeing some codes [05:22] hornairs: isaacs: https://api.no.de/♥ you guys are the coolest [05:22] SubStack: awww [05:22] hornairs: naw thats a real api method [05:23] chapel: SubStack << https://gist.github.com/f6b1a757517d3c449882 << its rough, and when I mean rough, I mean rough [05:24] isaacs: hornairs: :) that was sintaxi [05:24] masahiroh has joined the channel [05:24] sechrist: heart encoding [05:24] isaacs: you can also hit api.no.de/heart [05:25] sechrist: I wish I had known that [05:25] isaacs: had to add that, because people were telling each other the URL and failing it. [05:25] sechrist: ^ [05:25] hornairs: lol [05:25] Aria: Also because there's a couple ways to encode a heart character. [05:25] SubStack: chapel: well loading the code only happens at startup it looks like so it shouldn't be very much of an issue if your service doesn't start up very often [05:25] sechrist: with flowers, chocolates, and kisses [05:26] chapel: yeah its meant to just sit and run [05:26] SubStack: yeah I wouldn't bother messing with it then if it already works [05:26] chapel: I have some things to make it recheck if any data is written [05:26] chapel: what is the best way to profile? [05:27] SubStack: I mostly end up checking Date.now() :/ [05:27] SubStack: not exactly sophisticated [05:28] chapel: well the time it takes isn't exactly an issue atm, its fast, fast enough atm [05:28] bruce has joined the channel [05:28] chapel: could be faster obv [05:28] chapel: but I am more concerned with memory usage [05:29] chapel: I know I shouldn't be, but its fun to tinker [05:29] chapel: I am surprised there isn't a pluggable module that does profiling [05:30] chapel: more in the sense that you can set what you want to watch and get a report in a file [05:32] SubStack: looks like there are some on npm [05:34] chapel: last question for now, I am new to the different templating engines, like ejs/jade/haml, which would you recommend I look into, since I am new to them all [05:38] sechrist: hm I forgot how to chomp on arguments to a function to take the last one as the callback [05:39] sechrist: every node library does it but when I need an example I can't find one [05:39] SubStack: var args = [].slice.call(arguments) [05:39] ben_alman has joined the channel [05:39] SubStack: var cb = args.slice(-1)[0] [05:39] SubStack: v8: [1,2,3,4,5].slice(-1)[0] [05:39] v8bot: SubStack: 5 [05:39] chapel: any recommendations? [05:39] sechrist: SubStack: and for the function declaration, do I have to do anything special there? [05:40] SubStack: nope [05:41] SubStack: chapel: that stuff is mostly just personal preference [05:41] sechrist: jade is sexy [05:41] chapel: not asking for best [05:41] SubStack: I use jade a lot lately [05:41] sechrist: jade is sexy but iirc it only works in node [05:41] SubStack: not the css counterpart yet though [05:41] chapel: just recommendations, which is peoples preferences :P [05:41] sechrist: if I could use jade inside django [05:42] chapel: I would be using it only in node [05:42] sechrist: hot damn [05:42] chapel: so I will entertain jade :) [05:42] sechrist: djandno [05:42] sechrist: djadengo [05:42] SubStack: sechrist: also node-binary has loop() now so you can toss out bufferlist/binary completely [05:42] sechrist: I saw that! i haven't gotten around to converting my library yet [05:43] SubStack: yeah and let me know how it performs memory-wise [05:43] chapel: whats the point of using binary? [05:43] chapel: out of curiosity [05:43] sechrist: memory wise or performance wise? [05:43] SubStack: both I guess, but especially memory [05:43] SubStack: I have some tests already for performance [05:43] SubStack: it should be loads better since it only uses 2 static buffers [05:43] sechrist: btw are there any improvements that can be made on your getbytes functions? [05:44] sechrist: also what is the point of using two static buffers if bufferlist uses a giant list anyway? [05:44] SubStack: that's what I was doing all of yesterday [05:44] SubStack: sechrist: node-binary does not use a list [05:44] sechrist: hot [05:44] sechrist: wait what [05:44] SubStack: node-binary doesn't use bufferlist at all [05:44] sechrist: oh sh [05:45] sechrist: can I use it in the same way? [05:45] SubStack: pretty much [05:45] SubStack: just 'forever' is called 'loop' now [05:45] sechrist: chapel: I use it for parsing binary streams [05:45] SubStack: and I dropped the 'get' in front of the getWord functions [05:45] sechrist: SubStack: nah I meant like how do I push data onto it? [05:45] SubStack: Binary(stream) [05:45] sechrist: woah [05:46] chapel: hmm [05:46] sechrist: so I pass it my client.createConnection? [05:46] SubStack: sure [05:46] SubStack: the stream you get from that [05:46] sechrist: err tcp.createConnection rather [05:46] SubStack: it reads 'data' events by default and you can specify another event name as the second arg [05:46] sechrist: damn son that's cool [05:46] SubStack: also Binary(buffer) works [05:47] SubStack: for just a single-pass [05:47] sechrist: ok i'll work on converting it now [05:47] SubStack: awesome [05:47] sechrist: I have a baseline benchmark i'll compare before and after [05:47] SubStack: most excellent! [05:48] sechrist: any optimizations for Put yet? [05:48] sechrist: I use that in the same library for egress [05:48] SubStack: not yet [05:48] SubStack: is it slow? [05:48] sechrist: well my benchmark is of my msg passing library as a whole [05:49] SubStack: I was planning on adding signed functions [05:49] sechrist: so I don't know [05:49] SubStack: k [05:49] SubStack: put doesn't have as many moving parts at least [05:50] SubStack: for what node-binary does, 205 lines is pretty good I think ^_^ [05:50] stephenjudkins_ has joined the channel [05:51] SubStack: I want to abstract away the trick from loop into chainsaw itself though [05:52] sechrist: I hope I don't run into another closure bug :P [05:52] SubStack: yeah that would suck [05:52] SubStack: but anyways bufferlist is still there and works [05:53] chrischris has joined the channel [05:53] sechrist: agh, the way I made my library I abstracted away the stream [05:53] sechrist: will it work on any eventemitter? [05:53] SubStack: yep [05:54] SubStack: just emit 'data' [05:54] SubStack: along with a buffer [05:55] sechrist: no more flush and end? [05:56] jchris has joined the channel [05:56] SubStack: no more end() anyways [05:56] SubStack: not necessary with chainsaw [05:56] SubStack: oh I could bring flush back [05:56] SubStack: better do that since you can't assign directly to vars [05:56] sechrist: I forget what happens if I lose flush [06:01] davidascher has joined the channel [06:02] SubStack: pow, now it has flush() [06:02] cardona507 has joined the channel [06:02] sechrist: SubStack: it's slower [06:03] sechrist: at least in my initial use of it [06:03] SubStack: :( [06:04] SubStack: well for small stuff it is a bit slower in my tests too [06:04] SubStack: chainsaw overhead [06:04] sechrist: I average about 5500ish with my old bufferlist/binary and bufferlist impl and about 4000 sih this [06:04] SubStack: what about memory usage? [06:04] sechrist: about the same [06:04] SubStack: :/ [06:05] sechrist: basically I have a client and a server [06:05] sechrist: and i'm passing messages back and forth [06:05] sechrist: and counting in and out, and spitting it out every second [06:05] sechrist: unscientific but yeah i'll keep the old implementation until I figure out how to optimize it [06:05] SubStack: right [06:05] SubStack: I do have some ideas [06:06] twoism has joined the channel [06:06] sechrist: I'm using emit to pass chunks up to a parent class [06:06] sechrist: and that's probably unoptimal [06:06] SubStack: perhaps I can reuse the chainsaw context inside of loops [06:07] SubStack: anyhow I'll keep you posted [06:07] caligula has joined the channel [06:07] sechrist: sweet [06:07] sechrist: it's actually being used in production [06:08] SubStack: nice! [06:08] sechrist: on a cloud [06:08] sechrist: clooooudddd [06:08] SubStack: I've been using bufferlist in production for a while [06:08] SubStack: just need to get this new stuff MOAR FASTAR [06:08] sechrist: yes MOAR FASTAR [06:09] sechrist: actually I'm curious if that crankshaft jazz will give me any drop-in speed improvements [06:09] SubStack: crankshaft? [06:09] sechrist: a few days ago a v8 improvement came out [06:09] SubStack: oh v8 stuff [06:11] jesusabdullah: Totally gonna be so fast >:D [06:11] sechrist: I thought it was already in node [06:11] Yuffster has joined the channel [06:11] sechrist: did it yield any tangible benefits? [06:13] fangel has joined the channel [06:14] micheil has joined the channel [06:15] ben_alman has joined the channel [06:17] davidwalsh has joined the channel [06:19] noahcampbell has joined the channel [06:23] sh1mmer has joined the channel [06:24] HAITI: clear [06:24] HAITI: fail [06:25] HAITI: Cheers #node.js [06:28] abiraja has joined the channel [06:36] brianmario has joined the channel [06:39] matwill has joined the channel [06:44] Yuffster has joined the channel [06:52] jbr has joined the channel [06:52] dgraunke has left the channel [06:55] whyme has joined the channel [07:03] mscdex: i wish javascript had a language construct that allowed you to do like PHP and other languages and assign local variables to individual array elements returned by a function [07:03] mscdex: in order [07:04] mscdex: sigh [07:04] sechrist: (a,b,c,d) = [1,2,3,4]? [07:04] sechrist: yeah that would rock [07:04] sechrist: surprised it doesn't [07:05] mscdex: ACTION prays to the javascript gods [07:06] SubStack: the npm god demands keywords! [07:06] hdon: hi all :) can i launch a process whose stdio was created with pty? [07:06] hdon: openpty() [07:06] isaacs: hdon: yes! [07:06] isaacs: now you can! [07:06] isaacs: (as of 0.3.latest) [07:06] hdon: isaacs, amazing! :D [07:06] isaacs: hdon: require("tty").create [07:06] hdon: i just did that with GPSEE last weekend [07:06] sechrist: can I finally spawn ssh? [07:06] hdon: now though i want to do something with Node.js that also needs openpty() [07:07] sechrist: and have it work correctly? [07:07] hdon: isaacs, where are the docs for this new api? [07:07] hdon: how can i get bleeding edge node? [07:07] jashkenas: mscdex: you can do that in CoffeeScript: [a, b, c, d] = array [07:07] jashkenas: mscdex: and with object as well. [07:07] sechrist: CoffeeScript [07:08] jashkenas: And it's also proposed in ECMA harmony. [07:08] sechrist: AbstractScript [07:08] isaacs: hdon: Right here: var pair = require("tty").create("ls", ["-laF"]), fd = pair[0], childProc = pair[1] [07:08] mscdex: jashkenas: it is? [07:08] mscdex: i guess i missed that [07:08] jashkenas: yes, destructuring assignment. [07:08] sechrist: is there a way to use coffeescript in a browser [07:08] isaacs: hdon: it'll definitely never make it into 0.2.x, i'm afraid [07:08] jashkenas: yes. script type="text/coffeescript" works. [07:08] isaacs: this is 0.3.1+, most likely [07:09] sechrist: jashkenas: what? since when? [07:09] hdon: i can use destructuring bind with gpsee :P [07:09] jashkenas: mscdex: We use it for Node.js requires all the time... [07:09] sechrist: I need ie6 support [07:09] jashkenas: sechrist: Since the sprint. [07:09] jashkenas: *spring. [07:09] isaacs: hdon: you can also do process.binding("stdio").openpty() to get a masterFD/slaveFD pair [07:09] jashkenas: mscdex, check this out: {spawn, exec} = require 'child_process' [07:09] sechrist: oh damn that's pretty cool [07:09] hdon: ACTION nods [07:10] hdon: jashkenas, that's how i roll all the time, yo [07:10] hdon: :D [07:10] mscdex: hopefully that becomes available in javascript soon [07:10] mscdex: officially [07:10] mscdex: and v8 picks it up [07:10] hdon: you know how many CommonJS folks tore their hair out over a module specification that ruled out var FooConstructor = require("Foo")? [07:11] hdon: i can get pretty close to that on gpsee :) [07:11] elofland has joined the channel [07:11] hdon: mscdex, i am also working on a javascript parser. one of the applications is to parse javascript + language extensions and emit sans extensions [07:12] confoocious has joined the channel [07:12] elofland: hi, anybody home? [07:12] mscdex: elofland: nobody but us coffee drinkers [07:13] mscdex: elofland: got a question? [07:13] elofland: heh, I'm stuck on a checkout call, waiting on testers [07:13] hdon: actually a thing i would like to do with that is try to solve the same challenges that NarrativeJS attempts to [07:13] elofland: I'm trying to install htracr [07:13] hdon: something like NarrativeJS would go very good with node :) [07:14] elofland: and it's failing :( [07:14] hdon: and i want to support the Node API in GPSEE [07:14] jashkenas: hdon: NarrativeJS has a Node branch. [07:14] jashkenas: They're working on a commercial product around it. [07:14] mscdex: node-way! [07:14] mscdex: :p [07:14] hdon: jashkenas, well, that's cool :) the more the merrier [07:14] ossareh has joined the channel [07:14] aslosh has joined the channel [07:14] elofland: actually it's pcap that is failing [07:15] hdon: jashkenas, what is the product? [07:15] jashkenas: mscdex: here's the harmony page for destructuring http://wiki.ecmascript.org/doku.php?id=harmony:harmony [07:15] aslosh: hi all... where should I send possible errors in the doco to? [07:18] aslosh: http://nodejs.org/docs/v0.3.1/api/crypto.html#cipher.final currently has encodings of binary ascii or utf8 and I think it should be binary, hex or base64... someone correct me if I'm wrong though [07:18] jashkenas: hdon: I'm sorry, not narrative, stratified. [07:18] hdon: ACTION googles [07:19] jashkenas: http://comments.gmane.org/gmane.comp.lang.javascript.nodejs/16234 [07:19] jashkenas: http://onilabs.com/blog/stratifying-asynchronous-storage [07:19] jashkenas: just don't look at the generated JS ;) [07:20] hdon: looks like stackless javascript. i would also like to do something like this. the language extensions remind me of Oz [07:20] hdon: jashkenas, heheheh [07:20] mscdex: jashkenas: thanks for the link [07:20] jashkenas: mscdex: here's the link to our live implementation of it: http://jashkenas.github.com/coffee-script/#pattern_matching [07:24] saikat has joined the channel [07:25] claudiu__ has joined the channel [07:27] hdon: this looks interesting http://blog.westcoastlogic.com/lawnchair/ [07:28] jashkenas has joined the channel [07:32] sechrist: how much slower are slowbuffers from fastbuffers? [07:32] Aria: They're the same thing. Fastbuffers just get allocated all at once. [07:33] EGreg_ has joined the channel [07:33] EGreg_: hi [07:35] sechrist: "nasty sql" [07:36] sechrist: people.all('console.log(r)'); [07:36] sechrist: that scares me [07:36] SubStack: O_O [07:37] sechrist: http://blog.westcoastlogic.com/lawnchair/ [07:37] SubStack: yeah that looks really wrong [07:38] SubStack: I want to see more harmony-proxy based ORM systems [07:38] sechrist: sounds like the only place I'll actually be able to use harmony is in node [07:39] sechrist: that bugs me [07:39] sivy has joined the channel [07:40] Wyverald: v8: new Date() + 1 [07:40] v8bot: Wyverald: "Sun Dec 12 2010 02:40:25 GMT-0500 (EST)1" [07:41] isaacs: v8: 1 + new Date() [07:41] v8bot: isaacs: "1Sun Dec 12 2010 02:41:24 GMT-0500 (EST)" [07:41] chapel: v8: new Date() + 14 [07:41] v8bot: chapel: "Sun Dec 12 2010 02:41:32 GMT-0500 (EST)14" [07:41] isaacs: v8: 1 + (+new Date()) [07:41] v8bot: isaacs: 1292139693925 [07:41] Wyverald: Is there a trivial way to get a Date instance representing, say 1 second after the current time? [07:41] Wyverald: Oooh that [07:41] whyme: v8: Date.now() + 1000 [07:41] v8bot: whyme: 1292139708612 [07:41] chapel: hmm [07:41] isaacs: Wyverald: but that's 1ms [07:42] Wyverald: roger [07:42] isaacs: v8: new Date(Date.now() + 1000) [07:42] v8bot: isaacs: "Sun Dec 12 2010 02:42:03 GMT-0500 (EST)" [07:42] isaacs: v8: new Date(Date.now() + 1000).toISOString() [07:42] v8bot: isaacs: "2010-12-12T07:42:26.171Z" [07:42] inimino: Are there any preferred template language alternatives to Mustache? [07:42] isaacs: inimino: all the kewl kids use jade [07:43] isaacs: ACTION uses arrays [07:43] inimino: ...in a similar pure, simple, style [07:43] isaacs: yeah, arrays [07:43] isaacs: it's great [07:43] isaacs: you take an array of strings, and .join() it [07:43] inimino: heh [07:43] isaacs: a+ mega awesome numer 1 template win [07:43] inimino: maybe not that pure [07:43] isaacs: it's perfectly pure. [07:43] Wyverald: hehe [07:43] inimino: something that designers can use [07:43] isaacs: the template has no code, because it's just strings [07:43] Wyverald: It's way too pure [07:43] inimino: ACTION adds requirements as he goes [07:43] isaacs: and there's no compilation step! [07:44] isaacs: no, srsly, jade is probably what you want. [07:44] isaacs: or mustache [07:44] Wyverald: jade is good [07:44] inimino: hm [07:44] inimino: ACTION looks up jade [07:44] inimino: hm, it's HTML specific? [07:45] inimino: not that [07:45] Wyverald: you want something else? [07:45] inimino: I want something generic. [07:45] inimino: output-format agnostic [07:45] inimino: output can be CSS, JavaScript, TeX, HTML, JSON, XML, ... [07:46] Wyverald: look here maybe: https://github.com/ry/node/wiki/modules#templating [07:47] inimino: I'm probably going to use something Mustache-like, just was wondering if there was something new but similar. [07:48] inimino: ...and I haven't seen any Mustache implementations I like, and I probably want to tweak the syntax a bit, so ... [07:49] sechrist: jade is hot shit [07:49] sechrist: it just needs to be transferred to different languages [07:50] inimino: I'm sure, but I have no use for yet another HTML syntax in this project... [07:50] richcollins has joined the channel [07:52] sechrist: I meant like a PHP implementation, Django implemetnation, etc [07:53] inimino: ah, sure [07:54] mikew3c has joined the channel [07:54] ircretary has joined the channel [07:55] mscdex: ircretary: what is the meaning of life? [07:55] ircretary: mscdex: I'm not sure I follow your meaning... [07:55] mscdex: :> [07:56] isaacs has joined the channel [07:57] confoocious has joined the channel [07:59] datapimp has joined the channel [08:03] isaacs has joined the channel [08:04] Wyverald1 has joined the channel [08:08] sivy has joined the channel [08:12] ircretary has joined the channel [08:12] mscdex: ircretary: tell ircretary you could be the next Eliza [08:12] ircretary: mscdex: I'll be sure to tell ircretary [08:12] mscdex: :p [08:13] isaacs: ircretary: where do you put your log? [08:13] ircretary: isaacs: Logs can be found at: http://irc.npmjs.org/node.js [08:13] isaacs: oh, no! i broke it [08:13] mscdex: egad! [08:14] tprice has joined the channel [08:14] tprice: oh ym god im back [08:14] mscdex: orly? [08:15] daglees has joined the channel [08:16] tprice: so whats new in the worl of node [08:16] chapel: whos bot is that? [08:16] arrty has joined the channel [08:16] tprice: any world changing apps? [08:17] Wyverald1: there's now this ircretary thingy [08:17] Wyverald1: oh hey what's with the 1 [08:18] chapel: ircretary: hello [08:18] ircretary: chapel: Hello :) [08:18] chapel: :) [08:18] mscdex: ircretary: fix your logs! [08:18] ircretary: mscdex: Logs can be found at: http://irc.npmjs.org/node.js [08:18] mscdex: ;) [08:18] isaacs: there we go [08:18] chapel: I like the log formatting [08:19] mscdex: it could use a little more cowbell [08:19] mscdex: like nick coloring [08:19] chapel: I miht have to use it [08:20] mscdex: node-oscar is by far my largest module evar [08:20] Wyverald1: ircretary: obey God [08:20] ircretary: Wyverald1: Sorry, that requires admin access. [08:20] mscdex: so much stuff left to implement too [08:20] mscdex: :( [08:20] Wyverald1: hey! [08:21] isaacs: ircretary: where is god? [08:21] ircretary: isaacs: I'm not sure I follow your meaning... [08:21] tahu has joined the channel [08:21] isaacs: ircretary: I think you know what I mean. [08:21] ircretary: isaacs: I'm not sure I follow your meaning... [08:21] isaacs: ircretary: it would help if you'd at least play along. [08:21] ircretary: isaacs: I'm not sure what to do with that command. Ask for help in PM. [08:21] SubStack: binary protocols! [08:22] tprice: hey look at this [08:22] tprice: http://pinoytech.org/blog/post/Node.js-How-to-Handle-Form-POSTS [08:22] mscdex: SubStack: yeah, they're fun! especially when little endian values are used for no reason out of nowhere! [08:22] tprice: is there a better way of doing it? [08:22] mscdex: tprice: node-formidable? [08:22] SubStack: mscdex: yeah I hate that crap [08:22] tprice: its to much code [08:23] mscdex: SubStack: thankfully it's a fairly small section of the protocol that uses them, but still... [08:23] mscdex: for oscar [08:23] SubStack: endianness makes me want to start thrashing violently [08:23] tprice: but you can get form data from querystring.parse? [08:23] SubStack: oh but signedness ambiguities can be just as bad [08:23] mscdex: tprice: as long as you don't have file data i guess [08:23] SubStack: since you can have a sign bit or two's compliment [08:23] SubStack: *compelement [08:24] tprice: what encode would file data be? [08:24] tprice: binary? [08:24] mscdex: yeah [08:24] mscdex: afaik [08:24] tprice: then thats not a problem [08:24] SubStack: oh goodness there are more of them http://en.wikipedia.org/wiki/Signed_number_representations [08:25] mscdex: SubStack: heh yeah [08:25] qFox has joined the channel [08:26] d0k has joined the channel [08:26] chapel: what if I want to take the data, and pipe it to somewhere else? [08:26] mikeal has joined the channel [08:27] isaacs: mikeal: i added those anchors you ordered. [08:27] isaacs: mikeal: http://irc.npmjs.org/node.js/2010-12-11#NODE-JS-2010-12-11T00-02-06-731Z [08:27] sechrist: Is there a way to tell what V8 is waiting on to exit? [08:28] sechrist: my program isn't ending after a connection ends and i'm having trouble figuring it out [08:28] mikeal: dammit isaacs [08:28] mikeal: writing code for me [08:28] mikeal: you're such a dick :P [08:29] mikeal: looks great btw [08:29] chapel: hmm, what do you use to parse the logs? [08:29] mikeal: better than my idea, which was just to skip you there [08:29] sechrist: he saves children but not the ruby children [08:29] chapel: mind sharing the code? [08:29] sechrist: ACTION LOLS [08:29] sechrist: jesusabdullah++ [08:29] v8bot: sechrist has given a beer to jesusabdullah. jesusabdullah now has 2 beers. [08:29] mscdex: isaacs: you should add a pandorabot to ircretary :p [08:29] mikeal: this even highlights the line [08:30] isaacs: chapel: the code is now open, yes [08:31] chapel: link? [08:31] chapel: I mean, all I want is the log parsing atm [08:31] chapel: looking at the source though, doesn't look that hard to handle [08:31] isaacs: chapel: i use https://github.com/isaacs/ircretary to shove the data into couchdb, and then https://github.com/isaacs/couch-irc-log to turn the couchdb into html [08:31] woozoo has joined the channel [08:31] SubStack: I was there when jesusabdullah asked Richard Dawkins about keyboard cat. [08:32] isaacs: ircretary is running on a no.de instance, and i added some envs for the various login bits [08:32] ircretary: isaacs: I'm not sure what to do with that command. Ask for help in PM. [08:32] mscdex: ha [08:33] SubStack: aparently it has good memetic fitness since it hasn't varied much over time [08:34] tprice: do you think apple will drop the websocket from the iphone? [08:34] tprice: or is it in for good now [08:36] techwraith has left the channel [08:36] jesusabdullah: What did I do? [08:37] femtoo has joined the channel [08:38] jesusabdullah: orite, i remember now [08:38] mattcodes has joined the channel [08:40] ircretary has joined the channel [08:41] ircretary has joined the channel [08:41] jesusabdullah: I'm trying to remember who was saving children [08:41] ircretary has joined the channel [08:42] mikeal1 has joined the channel [08:42] isaacs: mscdex: your "tell ircretary" joke confused teh hell out of it [08:42] mscdex: haha [08:43] mscdex: i thought for sure it wouldn't work [08:43] isaacs: it was like "hey, i have notes for you" and then responding with the note, which contained the string "tell ircretary..." [08:43] isaacs: oh, no, totally spiked the ram and network [08:43] isaacs: it was basically a race between rcapd and freenode's ddos protection [08:43] jesusabdullah: What was the ircretary jhoke? [08:43] chapel: cause its telling itself [08:43] mscdex: why did it include the 'tell ircretary' part? [08:44] hdon: sechrist, people are eval()ing strings now because it's shorter than an anonymous function? [08:44] isaacs: mscdex: because that was the note you told it [08:44] hdon: people.all('console.log(r)'); [08:44] sechrist: ffffffffffffffffff [08:44] mscdex: oh, i thought it just sent the text after that to the other person [08:44] isaacs: mscdex: so, it did /msg ircretary I have notes for you, reply with "notes" to read them. and that was a message containing the word "notes" so it printed out the notes for ircretary [08:45] sechrist: that doesn't even make any sense [08:45] jesusabdullah: oh geez [08:45] isaacs: mscdex: which included "tell ircretary blahah" [08:45] isaacs: etc. [08:45] isaacs: gotta prevent that... [08:46] mscdex: ah ok, i've never gotten a note yet, so i didn't know. i apologize [08:47] chapel: heh [08:47] chapel: isaacs: couldn't you just have it ignore ones for itself [08:47] isaacs: chapel: on that [08:47] chapel: :) [08:47] isaacs: mscdex: nono, it's cool :) [08:47] isaacs: mscdex: it was pretty hilarious to watch the log on the server blowing up [08:47] chapel: I am trying to deploy it on nodejitsu, but for some reason their interface isn't responding... [08:47] isaacs: (she's not too bright) [08:48] hdon: sechrist, ahh, i see that the eval() is optional [08:48] chapel: well best to find it now [08:48] ircretary has joined the channel [08:48] isaacs: ircretary: tell ircretary she's an idiot. [08:48] ircretary: isaacs: I'll be sure to tell ircretary [08:49] isaacs: ok, kewl, no log asplosion [08:49] chapel: heh [08:49] adambeynon has joined the channel [08:51] isaacs has joined the channel [08:54] isaqual has joined the channel [08:55] sechrist: hdon: optional doesn't mean it should even be possible [08:55] hdon: ACTION shrugs [08:57] Nohryb has joined the channel [08:57] ircretary has joined the channel [08:57] jesusabdullah: what eval() is this? [08:59] ircretary has joined the channel [08:59] jesusabdullah: oh nvm I see [09:00] sechrist: hurr i don't like typing function so i'm going to eval this string instead [09:01] jesusabdullah: Who was doing this? [09:01] sechrist: http://blog.westcoastlogic.com/lawnchair/ [09:01] sechrist: "The only problem with async style coding is typing the word function all the time. Lawnchair has a nice terse shorthand syntax for that too." [09:02] jesusabdullah: heh [09:02] jesusabdullah: Point---however, now you're evaluating strings, and that isn't the best idea imo [09:03] jesusabdullah: idk, I guess it just seems impure to me [09:03] sechrist: impure [09:03] SamuraiJack has joined the channel [09:03] isaacs: sechrist: you sure it wasn't evalling a function string because it was stored as a json string suitable for couchdb? [09:03] isaacs: json.parse won't give you a function [09:04] sechrist: nah that specifically is used in place of a real closure [09:04] isaacs: where? [09:04] sechrist: look under retrieving documents [09:04] jesusabdullah: It makes sense if you're "working around" the inherent limits of json serialization [09:05] sechrist: that's not the reason he's doing it [09:05] isaacs: oh, meh [09:05] kayue has joined the channel [09:06] isaacs: that's so clearly a "phones only have N bytes of something" type hack [09:06] isaacs: i mean, given the author [09:06] jesusabdullah: huh? [09:06] isaacs: (brianleroux is one of the phonegap dudes) [09:06] sechrist: meh [09:06] jesusabdullah: phonegap? [09:06] sechrist: is phonegap actually useful? [09:06] jesusabdullah: Now I'm confused :( [09:06] isaacs: and lawnchair is basically "couchdb on the mobile browser" [09:06] sechrist: internally we're looking into using it along with sencha touch [09:06] isaacs: (or any webkit browser) [09:06] jesusabdullah: and my internet is so laggy I can't even open web pages [09:07] datapimp: sechrist: what have you found so far? i've been considering the same thing [09:07] isaacs: sechrist: phonegap is pretty awesome, so i've heard [09:07] chapel: hmm [09:07] isaacs: it's like the yui/jquery/dojo for mobile. makes mobile browsers not as crappy, standardizes the interface a lot [09:07] sechrist: it works as advertised. I wish it gave me more native access on platforms that it could [09:07] sechrist: last time I tried I couldn't pick the front or back camera if I had an iphone 4 [09:07] chapel: isaacs: I just ran the bot, but it isn't joining the channel I set it to :( [09:08] isaacs: chapel: did you set the relevant configs? [09:08] isaacs: i think there's some envs it needs. [09:08] chapel: yep, got this error command: 'err_nomotd', [09:08] chapel: rawCommand: '422', [09:08] chapel: commandType: 'error', [09:08] chapel: args: [ 'loggy', 'Message of the day file is missing.' ] } ] [09:08] isaacs: not well documented [09:08] sechrist: is there a way to see what the javascript engine is waiting on to exit node? [09:08] sechrist: I have a setinterval leaked somewhere I think [09:09] isaacs: sechrist: i can't think of any way offhand [09:09] jesusabdullah: sechrist: print statements? :v [09:09] sechrist: been trying to isolate it [09:10] chapel: hmm, any configs past couchdb server info and irc server settings? [09:12] datapimp: sechrist: what about with gdb [09:12] sechrist: have a suggested method? I wouldn't know what to look for in the heap [09:13] jesusabdullah: ACTION goes to bed. Flying to San Fran/Oakland tomorrow! [09:13] sechrist: I want to go to node-conf so bad [09:13] sechrist: argh [09:14] jesusabdullah: (where's node-conf?) [09:14] jesusabdullah: (I'm going to a geophysics conference) [09:14] sechrist: if I show up anyway [09:14] sechrist: will tim let me in? [09:14] sechrist: It's in SF in a few days [09:15] isaacs has joined the channel [09:15] jesusabdullah: Oh snap I could totally drop by if it's sometime next week [09:15] chapel: isaacs: you are using env, what should I do for those? [09:15] jesusabdullah: Probably won't though---busy week! [09:16] mytrile has joined the channel [09:16] isaacs: no, nodeCAMP is on tuesday [09:16] jesusabdullah: But if anyone wants to meet up I'd probably be inte3rested. It's not often I get to leave the cold, frigid North. [09:16] isaacs: nodeCONF is months away, in portland, iirc [09:16] jesusabdullah: WELL THEN I COULD CRASH NODECAMP [09:16] isaacs: chapel: i'm setting the env in the /home/node/node-service/profile file [09:16] jesusabdullah: *handsonhips* [09:16] chapel: hmm, can I just hardcode those settings? [09:17] jesusabdullah: but I'd have to wake up for it, so I'd better try to just get my 5 hrs rest in [09:17] jesusabdullah: Gnight cool people [09:17] isaacs: chapel: sure, [09:17] isaacs: chapel: until i decided to share the lib, i had them hardcoded [09:17] achiu has joined the channel [09:17] chapel: okay cool [09:18] isaacs: grep through brains.js for process.env [09:18] BHSPitMonkey has joined the channel [09:19] sechrist: damn it is 1:20 and I am at the office on a saturday night [09:19] sechrist: wtf am I doing [09:21] beta_ has joined the channel [09:22] DanielSim has joined the channel [09:22] westoque has joined the channel [09:23] iszak has joined the channel [09:23] iszak has joined the channel [09:24] sechrist: conf/camp/con [09:24] sechrist: all the same thing [09:26] SubStack: will there be smores at node camp? [09:26] SubStack: and scary stories [09:27] sechrist: any southbay node-thangs about to happen? [09:27] sechrist: SF is _so far away_ from santa clara [09:28] mscdex: smores.js [09:28] sechrist: smores.js, hosted at the hacker dojo [09:28] sechrist: I'd go [09:28] WaterCooled has joined the channel [09:28] mscdex: i wish there was some closer east-coast nodejs meetup action [09:28] chapel: ircretary: tell chapel hello [09:28] ircretary: chapel: I'll be sure to tell chapel [09:28] mytrile has joined the channel [09:29] sechrist: ircretary: tell v8 1+1 [09:29] ircretary: sechrist: I'll be sure to tell v8 [09:29] sechrist: v8: 1+1 [09:29] v8bot: sechrist: 2 [09:29] sechrist: ircretary: l [09:29] ircretary: sechrist: I'm not sure what to do with that command. Ask for help in PM. [09:29] sechrist: v8bot: l [09:29] v8bot: sechrist: Use v8: to evaluate code or "`v commands" for a list of v8bot commands. [09:29] sechrist: v8bot: v commands [09:29] v8bot: sechrist: Use v8: to evaluate code or "`v commands" for a list of v8bot commands. [09:29] dguttman has joined the channel [09:29] sechrist: v commands [09:30] sechrist: `v commands [09:30] v8bot: sechrist: Commands: Type `v . Optionally, type `v @ to send to a specific user. `v Commands are: about, beers, commands, git, google, help, macro. Other commands: v8, `re, `pcre, `ref. Type `v help for more information. Join #v8bot for more support. [09:30] sechrist: ircretary++ [09:30] ircretary: sechrist: I'm not sure what to do with that command. Ask for help in PM. [09:30] v8bot: sechrist has given a beer to ircretary. ircretary now has 1 beers. [09:30] sechrist: ircretary++ [09:30] ircretary: sechrist: I'm not sure what to do with that command. Ask for help in PM. [09:30] v8bot: ircretary is getting too many beers. Don't let ircretary get drunk! [09:30] faust45 has joined the channel [09:31] kayue has left the channel [09:32] sveimac has joined the channel [09:32] ircretary2: ircretary2: test [09:32] ircretary2: ircretary2 l [09:32] ircretary2: ircretary [09:32] ircretary: ircretary2: I'm not sure what to do with that command. Ask for help in PM. [09:32] ircretary2: ircretary_ [09:33] mytrile has joined the channel [09:35] isaacs: ircretary: tell ircretary2 to get lost. [09:35] ircretary: isaacs: I'll be sure to tell ircretary2 [09:35] isaacs: ;P [09:35] isaacs: i don't think she actually will [09:35] sechrist: meh [09:35] isaacs: (gotta PART and re-join) [09:35] sechrist: hm [09:35] isaacs: it doens't watch name changes [09:35] sechrist: I'm annoying like 50 other channels [09:35] sechrist: so [09:35] sechrist: ircretary: tell sechrist sup [09:35] ircretary: sechrist: I'll be sure to tell sechrist [09:35] sechrist has left the channel [09:36] sechrist has joined the channel [09:36] sechrist: i got nothing [09:36] Wyverald1: ircretary: tell me your name [09:36] ircretary: Wyverald1: I'll be sure to tell me [09:36] isaacs: oh, i don't think you can tell yourself something [09:36] sechrist: v8bot: "test" [09:36] v8bot: sechrist: Use v8: to evaluate code or "`v commands" for a list of v8bot commands. [09:36] isaacs: ircretary: tell sechrist sup [09:36] ircretary: isaacs: I'll be sure to tell sechrist [09:36] sechrist has left the channel [09:36] sechrist has joined the channel [09:36] chapel: hmm [09:36] sechrist: lame [09:36] iszak: Thanks isaacs. [09:36] sechrist: ircretary: you have a bug [09:36] isaacs: ircretary: tell v8bot something [09:36] ircretary: sechrist: I'm not sure what to do with that command. Ask for help in PM. [09:36] ircretary: isaacs: I'll be sure to tell v8bot [09:36] chapel: I can't get it to join a channel iszak [09:37] twoism has joined the channel [09:37] chapel: isaacs [09:37] chapel: I removed the env stuff and replaced them appropriately [09:37] sechrist: I wish ircretary worked and v8bot parted and rejoined [09:37] isaacs: sechrist: you're not getting a pm? [09:37] sechrist: loop [09:37] chapel: I get a nomotd error [09:37] sechrist: oh wait [09:37] sechrist: it's a pm [09:37] isaacs: chapel: meh. dunno? [09:37] sechrist: I thought it would be in the channel [09:37] isaacs: oh, no, that'd be way too noisy [09:38] isaacs: i get notes from ircretary every time i join [09:38] sechrist: is ircretary nodebased? [09:38] isaacs: i told her to "watch for npm isaac isaacs issacs" [09:38] isaacs: sechrist: yeah [09:38] isaacs: i wrote it over node knockout [09:38] sechrist: sweet sauce [09:38] isaacs: (mostly) [09:39] isaacs: just set up the logging the other day, though with a couchapp [09:39] chapel: hmm [09:40] chapel: isaacs: can you try a network for me, irc.moofspeak.net [09:40] isaacs: room? [09:40] chapel: umm, doesn't matter #wyl I guess [09:40] chapel: since thats mine [09:41] isaacs has joined the channel [09:41] bluegene has joined the channel [09:43] chapel: :) [09:43] isaacs: chapel: yeah, i don't know. that's a bug for gf3 [09:43] chapel: well can you get your bot to connect to the network fine? [09:43] isaacs: http://gf3.github.com/IRC-js/ [09:43] chapel: if you dont mind testing [09:44] isaacs: nah, i'm fadin [09:44] chapel: but I guess I could clean room the irc stuff [09:44] chapel: thanks though [09:44] ph^ has joined the channel [09:46] mraleph has joined the channel [09:47] iszak: i remember a guy called gf3 [09:47] steffkes has joined the channel [09:48] iszak: true story. [09:52] chiller76 has joined the channel [09:54] chiller76: hello i cant compile npm as non-root [09:54] chiller76: npm ERR! Could not create /usr/local/lib/node/.npm/.cache/npm/0.2.12-1/package.tgz [09:54] isaacs: chiller76: https://gist.github.com/579814 [09:54] SubStack: --prefix=$HOME/moo [09:55] isaacs: chiller76: there are a few ways out of that problem. [09:55] chiller76: thx Isaacs [09:57] ircretary has joined the channel [10:01] losing has joined the channel [10:04] lmorchard has joined the channel [10:12] sechrist: okay node-gtk is pretty coo [10:12] tprice: what is node-gtk? [10:12] cognominal has joined the channel [10:12] sechrist: or node-gui rather [10:12] sechrist: an early attempt at getting node to use gtk bindings [10:13] tprice: yeah that would be cool [10:17] yarinb has joined the channel [10:18] sechrist: I'm trying to find the easiest way to spawn a window and send png data to it [10:18] sechrist: at 30fps [10:18] sechrist: doesn't have to be spawned by node, I just have to be able to send the frames from node [10:18] sechrist: any idea? [10:18] tekky has joined the channel [10:19] iszak: the fps will clearly be limited to the users bandwidth and png data size. [10:19] sechrist: to your users [10:19] sechrist: this is localhost [10:19] sechrist: it's just for me [10:19] sechrist: and eventually in a cloud of servers after I prove this is viable [10:19] iszak: okay. [10:20] sechrist: I tried canvas and websockets but the base64 overhead kind of killed node [10:20] iszak: so spawn children to kill [10:21] sechrist: no I mean the base64 overhead is literally 90% of the cpu usage of the entire process [10:21] sechrist: it has to be cut out [10:21] iszak: how large are the files? [10:21] sechrist: 2-3k [10:21] iszak: and the base64 encoding of them was slow? [10:21] sechrist: well when I went up to 720p the png size increased, but yeah [10:21] sechrist: base64 encoding of anything is slow [10:22] chiller76: sechrist i remember that i have seen somebody doing remote desktop stuff with node [10:22] chiller76: with lots of buffer stuff... [10:22] sechrist: yeah that's SubStack's node-rfb and it's for parsing the rfb protocol [10:22] iszak: well if node.js is doing base64 in JS then it's going to be much slower than doing it by C++ [10:23] chiller76: ah k u already read it [10:23] sechrist: what I'm saying is, I shouldn't need to base64 [10:23] sechrist: the only reason I'm doing that is because the browser is the only way I can find to do this [10:24] zorzar has joined the channel [10:25] matjas has joined the channel [10:27] wao: c/w 31 [10:28] altamic has joined the channel [10:31] everzet has joined the channel [10:32] stephank has joined the channel [10:33] everzet has joined the channel [10:34] sveisvei has joined the channel [10:36] zomgbie has joined the channel [10:37] tekky has joined the channel [10:37] andrzejsliwa has joined the channel [10:37] everzet has joined the channel [10:38] everzet_ has joined the channel [10:38] mgutz has joined the channel [10:41] mytrile has joined the channel [10:42] sepehr has joined the channel [10:53] stagas has joined the channel [10:55] Ezku\ has joined the channel [10:56] altamic has joined the channel [10:56] felixge has joined the channel [11:06] chapel: anyone mind helping with some express templating stuff? [11:07] altamic has joined the channel [11:08] saschagehlich has joined the channel [11:09] pt_tr has joined the channel [11:13] andrzejsliwa has joined the channel [11:16] chapel: I am trying to use this example, https://github.com/visionmedia/express/blob/master/examples/jade/app.js [11:16] chapel: outside of some variable name changes, it is similar code [11:16] liar has joined the channel [11:16] Wyverald1: and? [11:16] chapel: but keeps saying that the local var I set, in the example named users, isn't working [11:16] chapel: 1. '- if (cols.length)' [11:16] chapel: cols is not defined [11:17] Wyverald1: maybe it's the version [11:17] Wyverald1: try {locals:{cols:cols}} instead of {cols:cols} [11:17] chapel: okay [11:17] confoocious has joined the channel [11:18] sechrist has joined the channel [11:18] chapel: well now I get an error that its trying to read a partial, hmm [11:20] Wyverald1: chapel: you mean it cannot read a partial? [11:21] chapel: okay [11:22] chapel: I got it to work by changing the layout [11:22] chapel: bah, sucks the examples don't work as advertised [11:22] Wyverald1: depends on whether you have master or another version, of course [11:22] fly-away has joined the channel [11:22] saschagehlich: anyone familiar with the smtp protocol? [11:23] chapel: of node [11:23] chapel: or express? [11:23] Wyverald1: express [11:23] chapel: hmm [11:23] Wyverald1: 1.0.0? [11:23] Wyverald1: because I'm using 1.0.0 and the docs serve me just right [11:23] chapel: yep [11:24] chapel: well im using the examples from github [11:24] chapel: since there is actual code and layout code [11:24] Wyverald1: yeah, maybe switch a tag? I'm not sure [11:24] Wyverald1: just tried, switch the tag to 1.0.0 and you get a working example [11:25] aklt has joined the channel [11:27] matjas_ has joined the channel [11:50] Phyllio has joined the channel [12:01] torvalamo has joined the channel [12:06] tilgovi has joined the channel [12:08] whyme has joined the channel [12:11] Wyverald has joined the channel [12:13] altamic has joined the channel [12:14] Wyverald1 has joined the channel [12:15] oal has joined the channel [12:17] InsDel has joined the channel [12:21] altamic_ has joined the channel [12:23] saschagehlich: is there no stable mailer for node.js that handles encodings right? [12:29] skampler has joined the channel [12:31] cjm has joined the channel [12:32] mgutz has joined the channel [12:34] ewdafa has joined the channel [12:38] ruxkor has joined the channel [12:39] everzet has joined the channel [12:40] ruxkor: hey all, I'm currently using expresso to write some tests. Is there an intuitive method to include setUp and tearDown things for tests? they should be execute before and after the tests, not in parallel [12:40] ruxkor: (in my case i'd like to setUp a table and then drop it in the tearDown) [12:42] justinlilly: ruxkor: looks like beforeExit might be the hook you want? [12:42] justinlilly: but looking at the docs, it doesn't look nice. [12:43] ruxkor: im using the beforeExit in the tests itself, since most calls I test are async. [12:43] christophsturm has joined the channel [12:43] justinlilly: you may be able to get away with nesting it another level. [12:43] ruxkor: but i feared the same justinlilly : ( [12:43] Anti-X has joined the channel [12:44] justinlilly: function(beforeExit) { do_setup(); beforeExit(function () { actual_test_case() });}; [12:44] justinlilly: so many testing frameworks to choose from :-P [12:44] ruxkor: yes... [12:44] v_y has joined the channel [12:44] ruxkor: i am using expresso mainly because of the jscoverage integration [12:45] ruxkor: but if vows had it , i would immediatly switch to vows [12:45] v_y: is there a socketio channel? [12:45] oal has joined the channel [12:45] everzet has joined the channel [12:46] saschagehlich: v_y: I don't think so, just ask here [12:47] v_y: ok. can anyone see the issue with this socketio test server code? http://pastebin.com/d27P3ciw [12:47] v_y: the client connects but then disconnects, and socketio seems to go through numerous connect/disconnect attempts [12:48] ruxkor: @v_y the last time I tried socket.io [12:48] ruxkor: it was listening only on a specific path [12:48] ruxkor: and I did not have to manually specify the .js files [12:49] ruxkor: but they were automatically routed thanks to the binding of socket.io [12:49] v_y: you mean the '/client/socket.io.js'? [12:49] v_y: that's the client side socket.io [12:49] v_y: it's just serving it along with index.html [12:51] ruxkor: ok, I think I tried that too but I eventually had to use the socket.io client js that socket.io served directly, but sry apart from that I don't see anything strange in the code right now [12:51] v_y: : \ [12:51] v_y: d'oh.. [12:51] sveisvei has joined the channel [12:51] v_y: do you know what path it directly serves it on? [12:51] ruxkor: have you tried using the socket.io.js under socket.io? [12:52] ruxkor: /socket.io/ usually [12:52] tonio has joined the channel [12:53] v_y: hmm [12:53] v_y: oh.. wow.. [12:53] v_y: interesting [12:54] everzet has joined the channel [12:54] v_y: ah yeah, this works... [12:55] v_y: i don't see why though [12:55] ruxkor: : ) [12:55] v_y: but w/e i guess [12:55] ruxkor: had exacly the same headaches a few months ago [12:55] v_y: thanks a lot [12:56] ruxkor: and eventually stopped using it : / [12:56] ruxkor: hope you have more luck with it : ) [12:56] v_y: you mean after you figured this out you still encountered other issues? [12:56] v_y: haha, that's good to know [12:57] ruxkor: yes, and at that time it was too much of a black-box-system to me.. and since longpolling was enough I just built my own thing [12:58] v_y: i see... [12:58] v_y: *sigh* [13:01] altamic_ has joined the channel [13:07] everzet has joined the channel [13:07] izz: hey guys, Im having some problems with npm and path in os x [13:07] izz: I have installed node.js and npm with homebrew [13:07] izz: and then installed socket.io with npm [13:08] izz: require('socket.io') fails with 'Error: Cannot find module 'socket.io'' [13:08] izz: but it does work if I specify the full path to socket.io (/usr/local/lib/node/socket.io) [13:09] izz: suspect it's some kind of path issue, don't know where to start though [13:13] Sbioko has joined the channel [13:13] Sbioko: Hello [13:14] Sbioko: Who can help me with Socket.io? [13:14] izz: I can try :P [13:14] Sbioko: I use websockets [13:14] Sbioko: with node.js [13:15] Sbioko: when someone connects, I get in console such info(line): Client 22353287693113089 connected [13:15] Sbioko: how to get in node.js script this number(22353287693113089) [13:15] Sbioko: ? [13:15] izz: hm I don't know [13:15] Sbioko: it is unique id [13:15] izz: can't you just use the client object? [13:15] femtoo has joined the channel [13:15] Sbioko: don't know [13:15] Sbioko: maybe [13:15] izz: I mean this: [13:15] izz: socket.on( 'connection', function(client) { [13:16] Sbioko: yeah, I understood [13:16] Sbioko: will try [13:16] Sbioko: aha [13:17] Sbioko: got it [13:17] Sbioko: thanks :-) [13:17] izz: :) [13:18] ruxkor: does anybody know how I can expresso tests easily? [13:19] v_y has joined the channel [13:19] v_y: how do i show line number when i catch an exception [13:19] v_y: it seems catch(error) { /* error is just a string */ } [13:20] everzet has joined the channel [13:20] ruxkor: (eeeh. no english last sentence.) does anybody know how I can _debug_ expresso tests easily [13:25] Sbioko: bye [13:25] Sbioko has left the channel [13:31] everzet has joined the channel [13:32] daglees has joined the channel [13:33] matjas has joined the channel [13:34] xla has joined the channel [13:35] mscdex: node.js rules! [13:35] saschagehlich: mscdex++ [13:35] v8bot: saschagehlich has given a beer to mscdex. mscdex now has 0 beers. [13:36] mscdex: woot! i'm no longer in the red! [13:36] saschagehlich: :D [13:36] saschagehlich: but there's no good mailer for node :( [13:36] mscdex: oh? [13:37] saschagehlich: mscdex: well at least no good mailer that can handle umlauts [13:37] mscdex: ah [13:37] mscdex: i thought about doing smtp after i more or less finished the bulk of node-imap, but i was tired of email by that point [13:37] mscdex: ;-) [13:38] saschagehlich: mscdex: I would write another node mailer with mime encoding etc. but I need a good one right now :( any alternatives? [13:38] everzet has joined the channel [13:39] mscdex: not sure what to tell you. the only other one was one that was basically a front end to the command-line linux mail utility [13:39] aubergine has joined the channel [13:40] mscdex: saschagehlich: have you checked some of the node-smtp-client forks? [13:41] saschagehlich: mscdex: nope not yet, let me look that up [13:43] saschagehlich: mscdex: well looks like nobody did encoding stuff for node-smtp-client yet [13:43] mscdex: i can't imagine it'd be that difficult to add it, although i admit i haven't really looked at the smtp rfc in any great detail [13:44] saschagehlich: hmm... I hope that someone is doing this pretty soon :( [13:45] mscdex: ircretary: tell micheil he needs to add umlaut support to node-smtp-client [13:45] ircretary: mscdex: I'll be sure to tell micheil [13:45] mscdex: :P [13:45] everzet has joined the channel [13:45] mikew3c_ has joined the channel [13:47] mscdex: google says most smtp servers only support 7bit [13:47] mscdex: that might be why [13:47] mscdex: ACTION shrugs [13:48] kriszyp has joined the channel [13:49] Hello71 has joined the channel [13:49] Hello71 has joined the channel [13:50] mscdex: saschagehlich: have you tried sending with the command-line sendmail utility? [13:51] saschagehlich: haha, a secretary for irc? how cool is that?! [13:52] mscdex: saschagehlich: it's isaacs' creation ;-) [13:52] saschagehlich: mscdex: no, I didnt try this yet [13:52] mscdex: saschagehlich: if sendmail works, then you could just fire up a child process and do it that way until better encoding support is added to node-smtp-client [13:53] saschagehlich: mscdex: okay, I'll try that [13:53] everzet has joined the channel [13:58] cjm has joined the channel [13:59] sveimac has joined the channel [13:59] saschagehlich: mscdex: well, mails with umlauts sent by sendmail come out like this: https://gist.github.com/fa79f23d3f47bc1d290b [14:00] everzet has joined the channel [14:09] everzet has joined the channel [14:09] saschagehlich: ryah: what font did you use in the node.js logo? [14:10] lowik has joined the channel [14:10] mape: saschagehlich: He didn't do it, someone random on the mailing list did [14:10] neynenmo has joined the channel [14:10] saschagehlich: okay, does anyone know the font? [14:17] genbit has joined the channel [14:17] everzet has joined the channel [14:18] herbySk has joined the channel [14:19] andrzejsliwa has joined the channel [14:20] derren13 has joined the channel [14:22] Ori_P has joined the channel [14:22] brianmario has joined the channel [14:22] ruxkor: hey everybody, do you know of any way to use jscoverage that not with expresso? (like with vowsjs?) [14:23] ruxkor: (that not --> apart from using it) [14:24] delapouite has joined the channel [14:24] everzet has joined the channel [14:25] ruxkor: expresso proves to be a bit too simplistic for me, especially the async support [14:25] ben_alman_ has joined the channel [14:25] Aikar: sechrist: may instead of sending png send instructions on the windows, their sizes, their contents, and render it with RaphaelJS ;) [14:25] Aikar: have a 2d vector of the window [14:27] mbrochh has joined the channel [14:27] ben_alman_ has joined the channel [14:28] stagas has joined the channel [14:31] everzet has joined the channel [14:33] mgutz has joined the channel [14:39] mattcodes has joined the channel [14:39] everzet has joined the channel [14:43] femtoo has joined the channel [14:44] stagas has joined the channel [14:51] everzet has joined the channel [14:51] alek_br has joined the channel [14:52] flashingpumpkin has joined the channel [14:56] everzet has joined the channel [14:58] iszak has joined the channel [14:58] iszak has joined the channel [15:02] demolithion has joined the channel [15:11] isaqual has joined the channel [15:13] kates has joined the channel [15:13] mikew3c has joined the channel [15:19] Hello71 has joined the channel [15:21] jspiros has joined the channel [15:23] abiraja has joined the channel [15:29] mikew3c_ has joined the channel [15:32] genbit has joined the channel [15:33] jesusabdullah: Good morn! [15:34] iszak: Good evening. [15:46] mohiam has joined the channel [15:47] namelessnotion has joined the channel [15:48] boaz has joined the channel [15:57] possibilities has joined the channel [16:02] gf3 has joined the channel [16:05] genbit has joined the channel [16:08] MattJ has joined the channel [16:09] sugardave has joined the channel [16:09] zorzar has joined the channel [16:11] v_y has joined the channel [16:12] v_y: is it possible to catch the output of console.trace? [16:16] izz: any idea on why include('socket.io') would not work on os x with homebrew: node.js/npm? [16:16] izz: Error: Cannot find module 'socket.io' [16:16] v_y: i don't think it comes packaged [16:16] izz: need to include full path, although I've installed with npm [16:16] v_y: oh [16:16] v_y: no clue, sorry [16:18] possibilities has joined the channel [16:21] GasbaKid has joined the channel [16:25] aconbere has joined the channel [16:27] bartt has joined the channel [16:27] genbit has joined the channel [16:30] markwubben has joined the channel [16:31] cronopio has joined the channel [16:34] cronopio: Hi!, im doing some tests with nodestream, but i have a problem, if dont use :realtime in view, disconnect event work great, but when use :realtime disconnect not work and my connections counter increase with every refresh [16:34] cronopio: I hope not all are sleep xD [16:38] mscdex: it's a sunday morning, so probably ;-) [16:39] mscdex: ircretary: tell everyone to wake up [16:39] ircretary: mscdex: I'll be sure to tell everyone [16:39] mscdex: :P [16:40] mscdex: ircretary: ask isaacs how long ircretary messages are kept [16:40] mscdex: ircretary: tell isaacs how long are ircretary messages are kept? [16:40] ircretary: mscdex: I'll be sure to tell isaacs [16:43] zorzar has joined the channel [16:43] aubergine has joined the channel [16:43] woozoo has joined the channel [16:43] ivan has joined the channel [16:43] mqt has joined the channel [16:43] MrNibbles has joined the channel [16:43] kgf has joined the channel [16:43] sideshow has joined the channel [16:43] kjeldahl has joined the channel [16:44] frodenius: ircretary㇀ help [16:44] ircretary: frodenius: I'm not sure what to do with that command. Ask for help in PM. [16:46] tanepiper: stagas: that SWOS clone is awesome! [16:46] stagas: tanepiper: thanks :D [16:47] tanepiper: the ball controll is amazing - i would change the name though [16:47] zorzar has joined the channel [16:47] aubergine has joined the channel [16:47] woozoo has joined the channel [16:47] ivan has joined the channel [16:47] mqt has joined the channel [16:47] MrNibbles has joined the channel [16:47] kgf has joined the channel [16:47] sideshow has joined the channel [16:47] stagas: tanepiper: I wanted to get it close to the original so I spent a lot of time in dribbling, comparing to the original. I think it's pretty close [16:47] stagas: it can get better though [16:48] tanepiper: i would definetly say so, for a game at this stage anyway [16:48] tanepiper: planning on running tournements once it's up? :D [16:48] lowik has left the channel [16:51] stagas: tanepiper: I can't wait! it's hard though, there are so many stuff need to be done but I estimate a month until it's playable over net [16:51] spoobie has joined the channel [16:52] stagas: tanepiper: I'm working on making the code totally modular, so it's easy to just work on one thing, it's like a framework on its own right now [16:54] possibilities has joined the channel [16:57] jakehow has joined the channel [16:59] gf3 has joined the channel [17:00] mohiam has joined the channel [17:02] jmar777 has joined the channel [17:02] chrischris has joined the channel [17:06] bingomanatee_ has joined the channel [17:06] jmar777: ryah: have you happened to check out the url.parse(url, true) thread yet? http://groups.google.com/group/nodejs-dev/browse_thread/thread/d926c3ab9e96d470 [17:06] jmar777: ryah: just looking for some confirmation before I make a pull request [17:07] cloudhead has joined the channel [17:11] dioxide has joined the channel [17:11] ruxkor: @cloudhead cudos for the vowsjs framework! Especially for the topic scoping and the nice documentation. I need to document test coverage so for now I'm stuck with expresso, but nevertheless I think it's really awesome : ) [17:13] vineyard has joined the channel [17:13] pHcF has joined the channel [17:13] pHcF: any designer here? [17:14] pHcF: webdesigner, i mean [17:17] smtlaissezfaire has joined the channel [17:17] altamic_ has joined the channel [17:18] tprice has joined the channel [17:19] arpegius has joined the channel [17:22] springmeyer has joined the channel [17:22] yarinb has joined the channel [17:23] dguttman has joined the channel [17:24] stagas: pHcF: almost everyone? :) [17:24] pHcF: lol [17:24] pHcF: a good webdesigner :P [17:25] stagas: pHcF: designer as in photoshop or developer as in coding? [17:25] pHcF: in photoshop [17:25] cloudhead: ruxkor: thanks! [17:25] pHcF: the html/css code i can develop :P [17:25] stagas: pHcF: oh then almost noone :P [17:26] pHcF: yeah [17:26] pHcF: that's the problem :P [17:26] pHcF: it's a cool project [17:26] pHcF: in nodejs [17:27] Max-Might has joined the channel [17:27] pHcF: https://github.com/pedrofranceschi/Blogode [17:27] pHcF: wordpress-like blog system in nodejs [17:27] vineyard: hey guys, when I update node from the git repo [17:28] vineyard: do i have to make and make install it again? [17:28] vineyard: or just make install? [17:28] pHcF: make and make install [17:28] vineyard: kk [17:28] pHcF: otherwise you'll install the last compiled version you have [17:35] qFox has joined the channel [17:35] tapwater has joined the channel [17:40] bingomanatee: Hey is there any feature in Ubuntu so you can conveniently snap windows to quadrants (half or fourth-screen size regions) a la win 7? [17:41] Druid_ has joined the channel [17:41] namelessnotion has joined the channel [17:41] bingomanatee: I am a web de3veloper - what do you need and is it paid? [17:42] bingomanatee: pHcF: what do you need exactly? [17:42] pHcF: bingomanatee: a blog theme [17:42] pHcF: a simple blog theme [17:42] pHcF: it's not paid [17:42] pHcF: it's for an open source project [17:42] bingomanatee: doable. [17:42] sudoer has joined the channel [17:42] pHcF: BUT, you'll get credits [17:42] bingomanatee: good 'nuff. [17:43] cardona507 has joined the channel [17:43] pHcF: bingomanatee: it's just a simple blog theme, like wordpress initial theme [17:43] pHcF: but very simple [17:43] pHcF: with a right sidebar [17:43] pHcF: a header, a bottom [17:43] pHcF: a search bar [17:43] pHcF: and that's it [17:44] bingomanatee: okay how about this - generate out a few HTML pages, finished with content, so I can see all the DOM you expect to get, and mail it to dave@wonderlandlabs.com [17:44] cs44 has joined the channel [17:45] cs44: is using brew to install node.js a decent practice? [17:45] pHcF: bingomanatee: i'll do that [17:45] paulrobinson has joined the channel [17:45] bingomanatee: pHcF Also, not that I'd insist, but its kind of almost mandatory nowadays that font colors and background image be user selectable, and the user be able to upload their logo - I'd suggest thinking about an architeture that supports that kind of modularity. [17:46] pHcF: bingomanatee: the user will be able to modify all the theme [17:46] pHcF: including the logo, etc [17:46] bingomanatee: a-some. [17:46] mohiam has joined the channel [17:46] mikew3c has joined the channel [17:46] pHcF: i'll give him a template editor [17:46] bingomanatee: Okay [17:46] pHcF: where the user can edit whatever he want [17:47] bingomanatee: I'm going sailing today so I prob. won't get back to you for about two or three days, but I will get it done. [17:47] abiraja has joined the channel [17:48] pHcF: bingomanatee: no problem [17:49] isaacs has joined the channel [17:50] googol has joined the channel [17:51] isaacs: izz: you get it sorted out? [17:52] isaacs: izz: short answer: brew rm npm; brew rm node; then do one of these: https://gist.github.com/579814 [17:52] isaacs: izz: more complicated method: when you installed npm with Homebrew, it told you a bunch of paths, adn to add them to various environment variables. do that. [17:52] cs44: isaacs: no brew? [17:52] isaacs: cs44: it sucks. [17:52] cs44: gotcha [17:53] cs44: i use brew for most of my os x installs, figured it'd be ok [17:53] isaacs: cs44: various "module not found" errors constantly. [17:53] cs44: right gotcha [17:53] isaacs: yeah, it's a shame. [17:53] cs44: thanks for the gist [17:53] isaacs: also, it breaks `npm update npm` [17:53] chapel: i find for node [17:53] chapel: it is really simple to do a git clone [17:53] chapel: and then the standard, configure/make/makeinstall [17:54] Yuffster has joined the channel [17:54] isaacs: chapel: yeah, i do the same thing in my main root, then nave subshells for testing other versions [17:55] isaacs: when node and npm are not changing every week, it'll maybe make sense to figure out the homebrew thing. [17:55] isaacs: or just convert all the recipes to package.json files. [17:55] cs44: nice, nave looks cool [17:55] isaacs: ;) [17:56] isaacs: thanks [17:57] TrevorBurnham has joined the channel [17:58] TrevorBurnham: I've got npm troubles: What does it mean when an npm-installed module can be found by other npm-installed modules, but can't be found by a file I run directly with `node file.js`? [17:58] isaacs: TrevorBurnham: can you gist your code? [17:58] isaacs: what is in "file.js"? [17:59] TrevorBurnham: It just fails on the line `require('modulename')`; likewise if I run that line on the REPL. [17:59] isaacs: TrevorBurnham: npm config get root [17:59] isaacs: what's that say? [17:59] isaacs: jsut the stdout line, this is fine: npm config get root --loglevel silent [18:00] smtlaissezfaire has joined the channel [18:00] sudoer has joined the channel [18:00] smtlaissezfaire has left the channel [18:00] TrevorBurnham: It's /usr/local/lib/node [18:00] TrevorBurnham: And yeah, the module is in there. [18:01] isaacs: ok, in your file.js, do this: console.error(require.paths) [18:01] isaacs: should dump out an array [18:01] TrevorBurnham: Ah, it's [ '/Users/trevor/.node_libraries', '/usr/local/Cellar/node/0.2.5/lib/node'] [18:01] isaacs: there ya go :) [18:01] isaacs: homebrew ftl [18:02] isaacs: brew rm npm ; brew rm node; https://gist.github.com/579814 [18:02] isaacs: a homebrew node/npm install will work just long enough to convince you that it's working, andthen fail miserably and surprisingly. [18:03] tahu has joined the channel [18:03] isaacs: alternatively, you could maybe add /usr/local/lib/node to your NODE_PATH environ, and then wait for the next thing to convince you to not use homebrew with node. [18:04] isaacs: it's not easier. [18:05] MattJ has joined the channel [18:06] TrevorBurnham: Thanks, all fixed. Installing npm directly set the root to /usr/local/Cellar/node/0.2.5/lib/node... which is kind of ironic. Weird that the last brew install put it somewhere else. [18:06] isaacs: TrevorBurnham: you must remove node AND npm from brew, and build both of them. [18:06] davidwalsh has joined the channel [18:06] isaacs: it's pretty easy [18:06] isaacs: and it works 100% of the time. [18:06] jashkenas: buildingnodefromsource++ [18:06] v8bot: jashkenas has given a beer to buildingnodefromsource. buildingnodefromsource now has 1 beers. [18:07] isaacs: (ok, not 100%, but like 90-something) [18:07] isaacs: givingbeertoabstractconcepts++ [18:07] v8bot: isaacs has given a beer to givingbeertoabstractconcepts. givingbeertoabstractconcepts now has 1 beers. [18:08] TrevorBurnham: Thankee, once again. [18:08] isaacs: np [18:10] mr_daniel has joined the channel [18:10] jmpe has joined the channel [18:11] GasbaKid has joined the channel [18:14] richcollins has joined the channel [18:20] strmpnk has joined the channel [18:20] slaskis has joined the channel [18:20] zorzar has joined the channel [18:23] spoobie: v8bot++ [18:23] v8bot: spoobie has given a beer to v8bot. v8bot now has 10 beers. [18:23] spoobie: --v8bot [18:23] spoobie: v8bot + Fosters = ! Australian [18:23] Floxxx: v8bot-- [18:23] v8bot: v8bot is getting too many beers. Don't let v8bot get drunk! [18:24] Floxxx: v8bot is already drunk, can't subtract anymore :p [18:24] V1 has joined the channel [18:25] V1 has left the channel [18:29] robotarmy has joined the channel [18:30] ewdafa has joined the channel [18:31] dmcquay has joined the channel [18:36] jchris has joined the channel [18:36] nuba has joined the channel [18:38] Aikar: SubStack: you here? [18:44] Ori_P has joined the channel [18:44] temp01: does nodejs from nodejs.org compile on windows under cygwin? [18:46] Floxxx: http://nodejs.org/#build [18:46] stagas: temp01: git checkout v0.3.1 first [18:46] stagas: temp01: or the latest from v0.2.x [18:47] temp01: so it does, thanks [18:47] creationix has joined the channel [18:48] rburhum has joined the channel [18:48] creationix has left the channel [18:48] temp01: do old versions compile fine too? [18:51] Floxxx: no idea tbh [18:51] Floxxx: try it out ;) [18:54] achiu has joined the channel [18:56] faust45 has joined the channel [18:58] isaacs: temp01: https://github.com/ry/node/wiki/Building-node.js-on-Cygwin-(Windows) [18:58] isaqual has joined the channel [18:58] temp01: thanks isaacs [18:59] lowik has joined the channel [18:59] temp01: I feel like the build section on nodejs.org should link there [19:05] aubergine has joined the channel [19:07] allengeorge has joined the channel [19:08] kenbolton has joined the channel [19:10] Ecu-Truin has joined the channel [19:11] isaacs: temp01: yeah, that'd be helpful [19:16] dguttman has joined the channel [19:18] arrty has joined the channel [19:21] jakehow has joined the channel [19:22] jtoy has joined the channel [19:23] beta_ has joined the channel [19:24] isaacs: pHcF: `make install` will re-build if anythign has changed. [19:25] pHcF: orly? [19:25] isaacs: pHcF: noticed this while tweaking the log thing: http://irc.npmjs.org/node.js/2010-12-12/#NODE-JS-2010-12-12T17-28-37-838Z [19:25] isaacs: yeah [19:25] isaacs: make is MAGICAL [19:25] pHcF: hehe [19:25] isaacs: you just say install depends on /bin/foo, and /bin/foo depends on ./foo, and ./foo depends on foo.c and foo.h [19:25] isaacs: change foo.c, and it cascades down [19:26] isaacs: usually it has to be done in two steps because `make install` requires sudo, and you don't want to create root-owned files in your homedir. [19:31] torvalamo: totes brah [19:34] jesusabdullah: Realized why npm segfaulted on my laptop [19:34] jesusabdullah: basic node built-ins are borked on this install! D: [19:37] richcollins has joined the channel [19:41] ChosenOne has joined the channel [19:41] ChosenOne: hey [19:41] ChosenOne: anyone dissected icmp packets with node pcap successfully? all attributes are returning undefined to me [19:43] mw has joined the channel [19:45] siculars has joined the channel [19:46] V1 has joined the channel [19:47] ajpiano has joined the channel [19:51] noahcampbell has joined the channel [19:53] alexfner has joined the channel [19:54] isaacs: jesusabdullah: whoa. what builtins? [19:56] Anti-X has joined the channel [19:56] jesusabdullah: isaacs: It was an old, awkward build of head [19:56] jesusabdullah: I think it will work much better now [19:57] jesusabdullah: but yeah, fs.readFile() 'sploded before I rebuilt >_< [19:58] jesusabdullah: Yeah, much better [19:59] pHcF: guys [19:59] ossareh has joined the channel [19:59] pHcF: there's any way to pass a locals variable to my layout ejs (using expressjs.com ?) [19:59] Dark_Sun has joined the channel [19:59] Dark_Sun: hello [20:01] maushu has joined the channel [20:02] twoism has joined the channel [20:05] ryah: isaacs: rad log [20:05] isaacs: ryah: inorite? [20:05] isaacs: couchapps are fun [20:05] isaacs: if you click the little green [+] on the right, you can get the actual raw data [20:06] Dark_Sun: wichh is the best way to handle an sock disconnection in node? [20:06] aconbere has joined the channel [20:06] wattz: win 10 [20:06] wattz: oops [20:06] wattz: lol [20:06] isaacs: Dark_Sun: "handle"? like, respond to the event? are you the server or the client? [20:06] Dark_Sun: the server [20:07] Dark_Sun: i have 2 main events, on close and on end. [20:07] Dark_Sun: but is not enough. sometime i discover some dead socket [20:08] Dreamer3 has joined the channel [20:09] ryah: Dark_Sun: http? [20:09] Dark_Sun: yes [20:09] Dreamer3 has joined the channel [20:09] ryah: req.connection.on('close') [20:10] Dark_Sun: exactly what i use [20:10] ryah: how are you discovering the dead socket? [20:10] ryah: there is a bug right now that write sometimes can fail before 'close' is issued [20:10] ryah: not sure if youre hitting htat [20:11] Dark_Sun: i made a comet-like server. each connection store some data. on disconnect, that data is dropped. [20:11] Yuffster_ has joined the channel [20:12] isaacs: Dark_Sun: are you doing req.on("close") or req.connection.on("close"? [20:12] Dark_Sun: connection [20:12] Dark_Sun: of course :D [20:12] Dark_Sun: is very annoying... i should try a setInterval with a sort of sock-garbage collector [20:13] stride: are you sure those aren't just unclean disconnects that didn't yet run into the timeout? [20:13] Dark_Sun: when the events 'close' and 'end' are exactly fired ? [20:13] Dark_Sun: i also binded a request.connection.on('timeout') :D [20:14] Dark_Sun: i made everything to catch each disconnection and keep the server clean [20:15] Guest70759 has joined the channel [20:15] isaqual has joined the channel [20:16] Dark_Sun: i also noticed something interesting. each request.connection has an attribute, "fd", i suppose file descriptor.. that is a kind of unique id for each existent socket. well, if a new connection is made, request.connection.fd is a low interger, like 9 or 10. [20:16] chapel: tell me this is sound code? var stats = (statStore[req.params.col]) ? statStore[req.params.col][0] || 0 : 0 [20:17] Dark_Sun: when there are many concurrent connection, that number reach higher levels, but when there's no connection, it decrease until its starting value. [20:17] Dark_Sun: i mean, if i connect, i get a fd = 10. if i disconnect and reconnect, i get another fd = 10 [20:18] altamic has joined the channel [20:19] Dark_Sun: that's ok. but while running, the server tends to behave differently, fd increase and increase, like there are dead and undeleted socket around [20:19] Dark_Sun: anyone noticed the same ? [20:19] mike_ has joined the channel [20:20] ShinMei has joined the channel [20:20] mscdex: chapel: my mind just imploded [20:22] chapel: odd right? oddly it works as expected [20:22] stride: chapel: why are you putting parenthesis around the condition? [20:23] paparent has joined the channel [20:23] isaacs: v8: var stats = (statStore[req.params.col]) ? statStore[req.params.col][0] || 0 : 0 [20:23] v8bot: isaacs: ReferenceError: statStore is not defined [20:23] chapel: idk, cause that is how I learned [20:23] isaacs: v8: statStore = {}; var stats = (statStore[req.params.col]) ? statStore[req.params.col][0] || 0 : 0 [20:23] v8bot: isaacs: ReferenceError: req is not defined [20:24] chapel: haha [20:24] skohorn has joined the channel [20:24] isaacs: v8: req={params:{}} ; statStore = {}; var stats = (statStore[req.params.col]) ? statStore[req.params.col][0] || 0 : 0 [20:24] v8bot: isaacs: {} [20:24] stride: hm. var stats = statStore[req.params.col] && statStore[req.params.col][0] || 0; would be equivalent, right? [20:24] isaacs: v8: req={params:{coll:"foo"}} ; statStore = {foo:[1,2,3]}; var stats = (statStore[req.params.col]) ? statStore[req.params.col][0] || 0 : 0 [20:24] v8bot: isaacs: {"foo": [1, 2, 3]} [20:24] chapel: v8: var a = {}; var stats = (a[1]) ? a[1][0] || 0 : 0 [20:24] v8bot: chapel: undefined [20:25] isaacs: v8: a = {}; a[1] && a[1][0] || 0 [20:25] v8bot: isaacs: 0 [20:26] isaacs: v8: a = {1:null}; a[1] && a[1][0] || 0 [20:26] v8bot: isaacs: 0 [20:26] isaacs: v8: a = {1:undefined}; a[1] && a[1][0] || 0 [20:26] v8bot: isaacs: 0 [20:26] isaacs: v8: a = {1:[false]}; a[1] && a[1][0] || 0 [20:26] v8bot: isaacs: 0 [20:26] isaacs: v8: a = {1:[9999]}; a[1] && a[1][0] || 0 [20:26] v8bot: isaacs: 9999 [20:26] isaacs: 0 [20:26] isaacs: chapel: is that the behavior you're after? [20:27] Ecu-Truin has left the channel [20:27] chapel: pretty much, well atm my code works, though yours seems even cleaner [20:28] isaacs: yeha, conceptually, it seems like you want the bash-style fallthrough short circuits [20:29] pt_tr has left the channel [20:33] pekim has joined the channel [20:33] V1 has joined the channel [20:33] skampler has left the channel [20:34] V1: Does anybody know how to tell Express to use ejs as default render engine for templates with a .html extension? [20:34] isaacs: ryah: you should add http://irc.npmjs.org/node.js to the /topic [20:35] chapel: so yeah, I updated to your code [20:35] chapel: var stats = statStore[req.params.col] && statStore[req.params.col][0] || 0 [20:35] mikeal has joined the channel [20:36] ysynopsis has joined the channel [20:40] chapel: how can I clean this up? https://gist.github.com/6f52e13483b0ce6dfc5a [20:41] sudoer has joined the channel [20:41] sechrist: damn limechat tells me I got buzzed [20:41] gf3 has joined the channel [20:41] sechrist: but doesn't keep a long enough scrollback to see it [20:42] stride: [15:25:46] < Aikar> sechrist: may instead of sending png send instructions on the windows, their sizes, their contents, and render it with RaphaelJS ;) [20:42] stride: was your last mention here [20:42] sechrist: nah that's not my use case [20:43] sechrist: my use case has nothing to do with a browser [20:45] stride: chapel: what's the if (... > 1) for? with the forEach that should do the same for an array of length 1, right? [20:46] chapel: well [20:46] chapel: for some reason, it balked when there was only 1 [20:46] stride: what's the type of data.avatars? [20:46] chapel: its an array [20:47] stride: hmkay.. weird :) [20:47] aubergine has joined the channel [20:47] chapel: yeah [20:48] chapel: hmm [20:48] chapel: well I just took it out to make sure, maybe I mistook the issue [20:48] chapel: seems to be working as expected [20:49] kriszyp has joined the channel [20:50] chapel: cleaned it up to this https://gist.github.com/6f52e13483b0ce6dfc5a [20:52] kenbolton has joined the channel [20:52] scvrory has joined the channel [20:53] torvalamo has joined the channel [20:53] stride: chapel: don't you need a return in the < 1 case? [20:54] Anti-X has joined the channel [20:56] chapel: well, its express, need to display something to the users [20:57] stride: ah, I see :) ok [20:58] chapel: you wanna peek at the rest of my code, see how to clean it up? [20:58] Ecu-Truin has joined the channel [20:59] Ecu-Truin: What do you guys think about implementing Wave in Node? Feasable? [20:59] stride: chapel: not really, I've got enough own code to clean up ;) [20:59] chapel: :P [20:59] stride: Ecu-Truin: why not? that's just xmpp with extensions under the hood iirc [21:00] matjas has joined the channel [21:01] aubergine has joined the channel [21:06] nail_: Mmh i see in the doc that there is a forEach method available for array, where does that come from? Is it documented somewhere along with all other "non-js-native" features? I couldn't find that in the API documentation [21:07] boaz_ has joined the channel [21:08] indexzero has joined the channel [21:08] indexzero: afternoon nodejs [21:08] mape: nail_: it is native [21:09] mape: nail_: https://github.com/ry/node/wiki/ECMA-5-Mozilla-Features-Implemented-in-V8 [21:09] mscdex: node.js rules! [21:09] nail_: ah great, thanks mape [21:09] indexzero: hey: anyone got a good example of SSL in node > 0.3.1? [21:10] mscdex: there's some tests at least [21:10] indexzero: I've got some links here: http://www.delicious.com/indexzero/nodejs+ssl but not sure if they're accurate [21:10] indexzero: mscdex: Ok, I'll check that out [21:10] mscdex: i'm not sure https is there yet [21:10] mscdex: i dunno [21:11] indexzero: mscdex: Yeah, I've heard that. I suppose nginx reverse proxy to a non-ssl nodejs server is the way to go? [21:11] mscdex: as long as you're not doing websockets i guess [21:12] mscdex: or maybe use stunnel or something [21:12] mscdex: i've never tried that route though [21:12] mscdex: er not stunnel [21:12] mscdex: but whatever it's called [21:12] stagas_ has joined the channel [21:13] mscdex: maybe it is stunnel [21:14] indexzero: cool, I'll check it out [21:14] Aria has joined the channel [21:14] indexzero: I know they're running nodejs in ssl in production at loggly (at least I think they are) [21:15] arpegius has joined the channel [21:15] tprice: whats the best xml to json mobule for node? [21:15] mscdex: tprice: sync or async? [21:16] richcollins has joined the channel [21:16] tprice: async would be better [21:16] mscdex: i wrote one awhile back that uses libxmljs's push parser [21:16] tprice: whats it called? [21:17] aaronblohowiak has joined the channel [21:17] mscdex: tprice: https://gist.github.com/416021 [21:19] ysynopsis has joined the channel [21:21] hassox has joined the channel [21:22] stagas has joined the channel [21:22] sudoer has joined the channel [21:23] tprice: 0) { } [22:40] CarterA: Alright, I need help. I've been hitting my head for a while now trying to figure out how to get this to work, so any insight is appreciated: https://gist.github.com/738413 . The description is a little lengthy so I put the whole issue into a gist. [22:40] Aikar: if its synchronous that will work, where as async wouldnt, so is it sync? [22:40] tilgovi_ has joined the channel [22:40] chewbran1a has joined the channel [22:40] Aikar: tap(buffer)* [22:41] _figital has joined the channel [22:41] SubStack: Aikar: that wouldn't work [22:41] Aikar: :/ [22:41] ben_alman_ has joined the channel [22:41] sid__ has joined the channel [22:41] SubStack: for one there is no tap function outside of a chain [22:41] SubStack: you can't start one at the head [22:41] rajab has joined the channel [22:41] Aikar: ? i did that in a chain [22:42] liar_ has joined the channel [22:42] SubStack: but var len; tap().... [22:42] SubStack: what is that about? [22:42] theary has joined the channel [22:42] jashkenas-work_ has joined the channel [22:42] Aikar: err sorry i meant binary(buffer).word32le().tap [22:42] javajunky1 has joined the channel [22:42] rburhum has left the channel [22:42] reid has joined the channel [22:42] reid has joined the channel [22:43] Aikar: that ws a nice network fart [22:43] er1c_ has joined the channel [22:43] jan____ has joined the channel [22:44] Aikar: SubStack: var len, buffer = new Buffer([11,22,33,44]); binary(buffer).word32le('length').tap(function(vars) { len = vars.length; }); if(len > 0) { } [22:44] cs44: trying to send some binary back (300k) through write(bytes, "binary") [22:44] cs44: oddly, seems like the connection is being closed half way [22:44] cs44: not sure if i'm going crazy or what =) [22:44] jan___ has joined the channel [22:45] JusticeFries has joined the channel [22:46] SubStack: Aikar: chainsaw uses a nextTick so len won't be defined by the time the if fires [22:46] SubStack: but you can just move that if inside the tap() [22:46] jan____ has joined the channel [22:47] SubStack: it would be useful to have a synchronous interface for static buffers though [22:47] Aikar: SubStack: not really in the way im using it :/ [22:47] SubStack: Aikar: you can nest chains in the tap callback though [22:48] SubStack: the chain is `this` [22:48] yonkeltron has joined the channel [22:49] Aikar: im using it in a for loop, im reading out a length of a binary message, and if the full message wasnt received in this chunk, itll wait till the remainder comes in over another loop where len is already defined. so my code that reads the binary cant be apart of the tap() callback [22:50] SubStack: Binary has its own loop() you could use [22:50] Aikar: can we get a sync method? [22:50] yonkeltron: i'm getting errors related to DNS [22:50] yonkeltron: hmmm [22:50] yonkeltron: events:12 [22:50] yonkeltron: throw arguments[1]; [22:50] yonkeltron: ^ [22:50] yonkeltron: Error: ENOTFOUND, Domain name not found [22:50] yonkeltron: when using an ip addy dotted quad [22:50] SubStack: I see the utility of a synchronous interface for buffers though [22:51] Aikar: any chance you can get it added tonight lol? [22:51] Aikar: in airport on layover atm was hoping to code :/ [22:51] Aikar: and do some coding while im out of town [22:51] yonkeltron: Aikar: haha. [22:51] yonkeltron: Aikar: i know that feeling [22:51] Aikar: planes already dedlayd 30m ;( [22:51] SubStack: Aikar: well check out loop() first and see if you can refactor to use it [22:52] Aikar: and they told people who was taking our flight that leaving from the next place may not be doable and they may have t ostay overnight [22:52] SubStack: oh [22:52] SubStack: Aikar: Binary(stream) [22:52] Aikar: nashville is blanketed in snow atm [22:52] SubStack: do that [22:52] SubStack: it will buffer asynchronously until enough data has arrived [22:52] Aikar: what about variable length buffers? [22:52] SubStack: those are easy [22:53] Aikar: the first 4 bytes i was using to be the length of the buffer [22:53] SubStack: specifically you can do Binary(stream).word16be('len').buffer('buf', 'len').tap(function (vars) { console.log(vars.buf) }) [22:53] SubStack: or what-have-you [22:54] SubStack: or if you need to parse a series of messages like that you could do [22:54] SubStack: Binary(stream).loop(function (end) { this.word16be('len').buffer('buf', 'len').tap(function (vars) { console.log(vars.buf) }) }) [22:54] Aikar: https://gist.github.com/738427 is what i currently have [22:56] SubStack: Binary will take care of pretty much all of the code you have there that manages buffering [22:56] Aikar: yeah looks like it hmm [22:57] siculars has joined the channel [22:58] CarterA: SubStack: Can you take a look at my issue? https://gist.github.com/738413 [22:59] SubStack: Aikar: if it helps here's the beginnings of a socks5 proxy I've been writing https://gist.github.com/738436 [23:00] liar has joined the channel [23:01] SubStack: CarterA: you need to export functions with exports or module.exports [23:01] CarterA: SubStack: But the function is attached to an object that is exported. [23:02] CarterA: var File = exports = module.exports = function [23:02] SubStack: well for one you can't assign into exports [23:02] SubStack: only module.exports [23:02] SubStack: since the reference gets lost [23:02] CarterA: Express does it. [23:03] CarterA: (not that that makes it a good practice, but it clearly works for them: https://github.com/visionmedia/express/blob/master/lib/express/server.js) [23:05] achiu has joined the channel [23:06] CarterA: Ah, figured it out. [23:06] CarterA: Putting the function inside the File declaration made it work. [23:06] CarterA: Using this.process instead of File.prototype.process [23:10] breccan has joined the channel [23:13] tekky has joined the channel [23:13] lowik has left the channel [23:15] sepehr has joined the channel [23:16] V1 has left the channel [23:18] Aikar has joined the channel [23:18] Aikar has joined the channel [23:19] zemanel has joined the channel [23:22] Phyllio has joined the channel [23:22] kenbolton has joined the channel [23:25] BHSPitMonkey has joined the channel [23:30] sid__ has joined the channel [23:32] torvalamo has joined the channel [23:40] googol has joined the channel [23:40] pHcF: is there any way to pass local variables to my layout.ejs (to use them with <%= myvar %>)? [23:40] pHcF: in express i mean [23:40] kenbolton has joined the channel [23:42] reid has joined the channel [23:44] sechrist has joined the channel [23:44] FuzzYspo0N has joined the channel [23:44] FuzzYspo0N: Ahoy [23:47] sechrist: chips? [23:47] FuzzYspo0N: with v8 , inside of a named getter callback - how can i get hold of the js c++ object for a named property? For example, an object for file , might have a child path. When i call file.path = from JS, c++ calls my getter. how do i get the path from the callee? Using args.Holder()->Get results in stack overflow, because it calls the getter each time i use Get. [23:48] reid has joined the channel [23:53] mikew3c has joined the channel [23:53] markwubben has joined the channel [23:58] tprice: hey on a http.createClient and the response.on('end', function(chunk){ would there be a chunk on event end? maybe like this response.on('end', function(){