00:04:27  * dominictarrquit (Ping timeout: 260 seconds)
00:09:45  * thatguydanjoined
00:38:00  * jibayquit (Remote host closed the connection)
00:44:48  * AvianFlujoined
00:49:29  * zz_shykeschanged nick to shykes
00:56:36  <rowbit>Hourly usage stats: [developer: 0, free: 9]
01:00:49  * tilgoviquit (Remote host closed the connection)
01:16:42  * tphummelquit (Quit: tphummel)
01:27:39  * shykeschanged nick to zz_shykes
01:48:42  * py1hon_quit (Quit: Changing server)
01:54:16  * ryan_stevensquit (Quit: Leaving.)
01:56:36  <rowbit>Hourly usage stats: [developer: 0, free: 30]
02:02:34  <st_luke>isaacs: pretty reasonable comment on that gist
02:11:36  * py1honjoined
02:13:19  * py1honquit (Client Quit)
02:13:29  * py1honjoined
02:17:46  * py1honquit (Client Quit)
02:17:57  * py1honjoined
02:19:54  * ryan_stevensjoined
02:39:52  * st_lukequit (Remote host closed the connection)
02:56:36  <rowbit>Hourly usage stats: [developer: 1, free: 27]
03:56:36  <rowbit>Hourly usage stats: [developer: 6, free: 25]
04:44:53  * ryan_stevensquit (Quit: Leaving.)
04:45:45  * st_lukejoined
04:56:36  <rowbit>Hourly usage stats: [developer: 0, free: 20]
04:59:24  * st_lukequit (Remote host closed the connection)
05:10:42  * ryan_stevensjoined
05:21:05  * tphummeljoined
05:22:33  * tphummelquit (Read error: Connection reset by peer)
05:53:14  * tomshredsquit (Quit: Leaving...)
05:54:57  * zz_shykeschanged nick to shykes
05:56:36  <rowbit>Hourly usage stats: [developer: 3, free: 30]
05:57:55  * thatguydanquit (Read error: Connection reset by peer)
06:17:50  * hij1nxquit (Quit: leaving)
06:38:42  * dominictarrjoined
06:54:57  * AvianFluquit (Remote host closed the connection)
06:56:36  <rowbit>Hourly usage stats: [developer: 0, free: 27]
07:04:35  * shykeschanged nick to zz_shykes
07:09:32  * ryan_stevensquit (Quit: Leaving.)
07:34:56  * dominictarrquit (Ping timeout: 245 seconds)
07:55:54  * dominictarrjoined
07:56:36  <rowbit>Hourly usage stats: [developer: 0, free: 12]
08:12:13  <dominictarr>substack, what do you think about having a header on every stream that contains information about it?
08:12:50  <dominictarr>like what format it's in, what's needed to parse it etc.
08:14:29  <dominictarr>hmm, or what might be smarter, is a headers stream that can add and parse headers.
08:15:04  <dominictarr>probably, it would be good to have multiple pluggable header styles, with the ability to detect which is in use.
08:15:50  <dominictarr>so, a binary stream would probably like a length packed header, but a json stream should just use a json object in the first line...
08:16:44  <dominictarr>I've been noticing that binary formats usually have a magic number at the start that identifies the particular format, and this is probably a very good idea.
08:32:45  * jibayjoined
08:39:57  <mbalho>dominictarr: we talked at node summercamp about how streams need headers
08:40:27  <dominictarr>mbalho, interesting.
08:40:29  <mbalho>dominictarr: but at that point we might as well just use http
08:40:58  <dominictarr>yeah well, http is just one format. http is fine for REST, but there are other patterns.
08:41:10  <mbalho>lets list all of them!
08:41:32  <dominictarr>well, REST is just request/response.
08:42:13  <dominictarr>but arn't meant to do full duplex with it.
08:42:14  <mbalho>rest, yes, but http can be a streaming transport
08:42:35  <mbalho>just because a lot of http clients wont do full duplex doesnt meant it wasnt meant for it
08:42:44  <mbalho>and say we're in a browser with websockets but not full duplex http
08:42:47  <mbalho>we can just do http over websockets
08:42:58  <mbalho>e.g. learn http and use different transports to move it around
08:43:05  <dominictarr>okay, and you could multiplex an http message though a muxer
08:43:13  <mbalho>i look at http and see a body with headers, thats it
08:43:27  <dominictarr>or write a file with an http header on it already
08:43:35  <mbalho>yea
08:43:37  <dominictarr>mbalho, it's a little more than that
08:44:06  <dominictarr>there is also chunking - necessary to parse the end point when pipelining. or a content-length
08:44:15  <dominictarr>which is also necessary for pipelining
08:44:20  <mbalho>fucking pipelining
08:44:39  <dominictarr>mbalho, agree. but that is built into the http format.
08:44:49  <mbalho>maybe we switch to spdy
08:45:18  <dominictarr>mbalho, does spdy have a different format?
08:45:48  <mbalho>http://dev.chromium.org/spdy/spdy-whitepaper
08:45:50  <dominictarr>I thought it just changed the pipelining, allowing pushes, and maybe multiplexing?
08:46:07  <mbalho>basically spdy allows pipelined requests to arrive out of order
08:46:22  <mbalho>and you can turn pipelining on and off via a header with spdy
08:46:58  <mbalho>pipelining is a pain to implement because it forces ordering
08:47:56  <dominictarr>mbalho, there are use-cases for it, but more where you'd rather not have it.
08:48:11  <mbalho>yea
08:48:19  <mbalho>it sucks that its enforced in http and theres no opt out
08:48:31  <dominictarr>also, the first line of the http header GET /whatever HTTP1.1
08:48:40  <dominictarr>doesn't make sense.
08:48:50  <dominictarr>if it's just gonna be a header on a file.
08:49:25  <mbalho>you mean its hard to detect that its http based on the first lines content?
08:50:03  <mbalho>i gotta go pick up my airbnb, ttyl
08:50:12  <dominictarr>ttyl
08:50:34  <dominictarr>I mean that it's nothing to do with what the file is.
08:51:33  <dominictarr>the http headers that are allowed are also all tied to requests, and caches, and networking.
08:51:46  <dominictarr>which is too specific.
08:56:36  <rowbit>Hourly usage stats: [developer: 0, free: 36]
09:56:36  <rowbit>Hourly usage stats: [developer: 5, free: 57]
10:03:20  * saijanai_joined
10:03:21  * saijanai_quit (Excess Flood)
10:04:14  * saijanai_joined
10:18:55  <mbalho>dominictarr: im just cautious about building new things when old simple things could suffice
10:19:40  <dominictarr>mbalho, agree that is why I think new line seperated JSON is good. it's just JSON and regexps
10:20:14  <dominictarr>also there is never a HTTP.pares HTTP.stringify anywhere
10:20:23  <dominictarr>it's always bundled into the http server
10:21:12  <mbalho>a stream of json objects is pretty desirable, yes
10:21:26  <mbalho>but where do you put metadata if you arent using http?
10:22:04  <dominictarr>mbalho, thinking just make the first line the header.
10:22:46  <dominictarr>the thing that kinda sucks though, is that this header corrupts the file.
10:22:56  <mbalho>x = new websocketStream('/foobar'); x.on('headers', gotHeaders); x.on('object', gotObject)
10:23:11  <mbalho>(for receiving end)
10:23:22  <dominictarr>what is 'object' for?
10:23:28  * blakmatrix_quit (Read error: Connection reset by peer)
10:23:32  <mbalho>stream of json objects
10:23:46  <mbalho>not object in the json sense but object in the abstract sense
10:25:19  <mbalho>for http its like get('resource', function(headers, body) {})
10:25:52  <mbalho>body can be an infinite stream of data but headers will always arrive first
10:26:33  <dominictarr>mbalho, yes.
10:26:57  <dominictarr>what the headers are and what the body is should be completely independent.
10:27:12  <dominictarr>should be able to strap a header onto any file.
10:27:26  <mbalho>you mean like there shouldnt be a required content length or whatever
10:27:43  <dominictarr>yeah, that is often unworkable.
10:28:14  <dominictarr>maybe you don't know what length the file is, like may it's a log file
10:28:19  <mbalho>right
10:28:23  <mbalho>but sometimes you do and you want to include that
10:28:24  <dominictarr>but you do know it's gziped line seperated json
10:28:36  <dominictarr>of course, that is up to you
10:28:44  <mbalho>spdy to me seems like a more flexible http, thats why im interested in it
10:28:50  <dominictarr>another good thing would be a checksum or sha hash.
10:28:56  <mbalho>but i wonder if it is flexible enough for stateless things
10:29:24  <dominictarr>mbalho, surely handling stateless things should be easier
10:29:57  <mbalho>i want the same api for both
10:30:05  <mbalho>but there should be lots of stuff you can opt-in on
10:30:31  <mbalho>like the most basic thing is just a body, no headers
10:31:28  <dominictarr>yeah, the benefit of standardish header format means you could do lots of stuff like the capability detection that mikeal does
10:31:41  <dominictarr>in request, and filed, etc.
10:31:51  <mbalho>but that also sounds like yak shaving/idealism and we could totally use http for all of this just fine it just wont be as pretty as writing our own protocol
10:31:56  <mbalho>(thats my main point)
10:32:24  <dominictarr>mbalho, right, what if you just used the http api
10:32:36  <dominictarr>setHeaders, etc
10:32:43  <dominictarr>.headers
10:33:00  <mbalho>if you define the api you want to see i'm sure we could write a thing like emitStream that takes in your api, translates it into http and vice versa
10:33:14  <mbalho>puts 'x-' in front of all the headers, etc
10:33:38  <dominictarr>yup, that is the sort of thing i'd want to achieve
10:33:46  <mbalho>but also we could write websocketObjectStream as well as httpObjectStream as well as tcpObjectStream
10:33:49  <mbalho>or whatever we call it
10:34:01  <mbalho>maybe its just called data-stream
10:34:48  <dominictarr>you don't need typeObjectStream
10:35:08  <dominictarr>just typeStream and then you pipe a serialized stream of objects to it.
10:36:30  <mbalho>i was still talking about objects in the abstract sense
10:36:32  <mbalho>but yea i agree
10:37:16  <mbalho>if you are running a server with many clients connected and one client is using http as their transport you need a thing that converts their http object stream into the generalized version that you can then re-encode and send to tcp, websocket etc clients
10:37:37  * mikealquit (Quit: Leaving.)
10:38:02  * mikealjoined
10:39:15  <dominictarr>well, the stream that comes out of the nodejs parser is already parsed. so you don't need to parse it
10:39:30  <dominictarr>but just pull the headers off of it.
10:39:50  <mbalho>thats what im saying
10:40:07  <dominictarr>of course.
10:40:13  <dominictarr>I'm just thinking out loud
10:40:25  <mbalho>1 api that can be bidirectionally represented as http, tcp and websocket messages would be cool
10:40:34  <mbalho>but at the same time it still feels like yak shaving :)
10:41:03  <dominictarr>yeah, it diffinately feels like work.
10:41:39  <dominictarr>but then, like request and filed already do this.
10:42:07  <mbalho>they both use content-type
10:42:16  <mbalho>well, file extension and mimetypes for filed
10:42:21  <mbalho>but same idea
10:42:27  <dominictarr>so if the api matches either of those then it will JUST WORK, with request and filed.
10:42:43  <dominictarr>it uses the file name?
10:42:48  <mbalho>filed does, yea
10:42:50  <mbalho>the extension
10:43:11  <dominictarr>hmm, not perfect.
10:43:28  <mbalho>https://github.com/mikeal/filed/blob/master/main.js#L33
10:43:30  <dominictarr>macintosh had meta information on every file. but not unix.
10:43:38  <mbalho>yea its a messy problem
10:43:47  <mbalho>you can override it though
10:43:54  <mbalho>but it doesnt do any header sniffing magic
10:43:57  <dominictarr>maybe we need a time machine for this one.
10:43:59  <mbalho>that would be a cool module
10:44:14  <mbalho>that or we need to let go of perfection :)
10:44:31  <dominictarr>yeah, or maybe we can interest tj in this problem.
10:45:12  * xaqjoined
10:45:31  <mbalho>so the problem, to state it one way, is that people are writing non-interoperable node modules
10:45:52  <mbalho>(right?)
10:46:01  <dominictarr>I don't see it like that
10:46:17  <dominictarr>more like this would just pave over some details and make it super slick
10:46:49  <mbalho>how would you state the problem?
10:46:59  <dominictarr>like you could use this to pipe from a js object stream straight to a text stream, and pipe would detect this and serialize it for you.
10:47:25  <dominictarr>"persistent meta-data for streams"
10:48:14  <mbalho>hah thats not a problem statements its a solution :)
10:49:32  <mbalho>what if we added a new event to the streams api in node called 'headers'
10:49:46  <mbalho>not by adding it to core but by adding it to all of our streaming modules
10:49:53  <dominictarr>yeah.
10:50:13  <dominictarr>although sometime you might already have the headers, and can set a header property
10:50:54  <dominictarr>like if a server has recieved the connection, it can just wait until the headers arrive and give it to you then.
10:51:27  <mbalho>are you talking about readable or writable
10:51:34  <dominictarr>readable.
10:51:51  <dominictarr>of course you can set writable headers when you create it.
10:51:57  <mbalho>so you woul demit headers when you get them
10:52:14  <dominictarr>you mean parse them?
10:52:38  <mbalho>server.writeHeaders(headerData)
10:52:43  <mbalho>client.on('headers', cb)
10:53:32  <dominictarr>yeah, you could use setHeader(key, val) too, but only before the first .write(data)
10:54:36  <mbalho>maybe headers is a misnomer
10:54:55  <mbalho>and metadata or info is a better word
10:55:00  <mbalho>headers implies it will arrive first
10:55:04  <mbalho>but i dont see why we need to support that
10:56:36  <rowbit>Hourly usage stats: [developer: 0, free: 53]
10:59:43  <dominictarr>mbalho, some things DO want to be at the end... like checksum
11:00:09  <dominictarr>but then, you have to be able to parse the stream to know what the metadata is.
11:00:39  <dominictarr>maybe the correct solution is to just have an api, and leave the implementation upto the stream.
11:00:44  <dominictarr>(or a baseclass)
11:00:48  <mbalho>yea
11:01:35  <dominictarr>actually, maybe we should just do nothing.
11:02:05  <dominictarr>until there is a definite problem to solve
11:02:18  <mbalho>that sounds rasonable
11:02:20  <mbalho>+e
11:02:49  <dominictarr>still, talking about how it might work is good.
11:03:17  * xaq_joined
11:04:29  * xaqquit (Read error: Connection reset by peer)
11:04:34  <dominictarr>mbalho, oh look at this http://www.linux-mag.com/id/8741/
11:04:43  <dominictarr>extended meta-data for files
11:05:03  <dominictarr>but guessing this won't be cross-platform
11:05:38  <mbalho>setfattr is a great cli tool name
11:05:42  <mbalho>getfattr
11:05:42  <mbalho>haha
11:06:14  <dominictarr>hmm, doesn't work for me.
11:06:42  <mbalho>me niether
11:06:44  <dominictarr>it's not worth it if you have to mount your filesystem with a particular option
11:06:50  <dominictarr>(whatever that even means)
11:19:09  <dominictarr>mbalho, what do you call the bumps on lego bricks?
11:19:37  <mbalho>brick connectors
11:20:52  <dominictarr>hmm
11:26:32  <dominictarr>"Stud: The small raised portion of a Lego brick. These are also called pods, bumps, nubs and other assorted terms. These can vary in number according to the size of the brick or be completely void on some elements that are usually referred to as 'tiles'. The stud interlocks with another brick or element or can be left exposed. Studded pieces are most painful to step on when barefoot, something that any parent of a Lego enthusiast will attest to. "
11:34:13  * Madars_changed nick to Madars
11:43:33  * xaqjoined
11:46:25  * xaq_quit (Ping timeout: 244 seconds)
11:56:36  <rowbit>Hourly usage stats: [developer: 1, free: 40]
12:06:25  * mikealquit (Quit: Leaving.)
12:23:39  * substackonline
12:24:55  * xaqquit (Remote host closed the connection)
12:25:06  <substack>mbalho: which metro stop should I start wandering around at?
12:28:36  * xaqjoined
12:31:38  * xaqquit (Read error: Connection reset by peer)
12:31:54  * xaqjoined
12:43:58  <dominictarr>substack, was wondering where you'd got to. did you miss the train last night?
12:44:08  <dominictarr>I missed mine by about 10 minutes
12:44:11  <substack>yeah
12:44:18  <substack>there's bus service all night though
12:44:28  <substack>heading to Gneisenaustra├čemore
12:44:28  <dominictarr>ah, good.
12:45:58  * substack&
12:54:32  * AvianFlujoined
12:56:36  <rowbit>Hourly usage stats: [developer: 0, free: 42]
13:10:48  * tomshredsjoined
13:12:08  <mbalho>substack: im in kreuzberg at Alexandrinenstra├če roughly
13:13:20  * juliengrenierjoined
13:15:18  <juliengrenier>browserling doesn't seem to work with my trackpad(or chrome) anymore. The click events don't seem to be reaching the VM. :(
13:28:42  * tphummeljoined
13:46:48  * tphummelquit (Ping timeout: 244 seconds)
13:49:16  <pkrumins>looks like yesterday's z-index: -1 fix broke it
13:50:48  * tphummeljoined
13:52:17  * tphummelquit (Client Quit)
13:54:31  * tomshredsquit (Ping timeout: 245 seconds)
13:56:36  <rowbit>Hourly usage stats: [developer: 1, free: 51]
14:27:53  * mikealjoined
14:46:37  <rowbit>SubStack, pkrumins: At least 5 people waiting in the queue for free servers! (Waiting: 5)
14:46:53  <dominictarr>mbalho, substack hey what up? I'm getting hungryish if you guys are in thinking about dinner
14:56:36  <rowbit>Hourly usage stats: [developer: 1, free: 34]
14:56:38  * tomshredsjoined
15:07:02  * tphummeljoined
15:07:05  * xaqquit (Remote host closed the connection)
15:16:37  <rowbit>SubStack, pkrumins: At least 5 people waiting in the queue for free servers! (Waiting: 5)
15:23:10  * tphummelquit (Ping timeout: 240 seconds)
15:35:24  * st_lukejoined
15:45:24  <isaacs>st_luke: Thanks, I was worried that it was a bit too ranty.
15:45:49  <fotoverite>issacs: Not at all a pet peeve of mine also
15:49:45  * mikealquit (Quit: Leaving.)
15:51:00  * xaqjoined
15:56:35  <rowbit>Daily usage stats: [developer: 81, free: 865]
15:56:36  <rowbit>Hourly usage stats: [developer: 0, free: 66]
16:36:30  * zz_shykeschanged nick to shykes
16:36:34  * _sorensenjoined
16:38:24  <mbalho>dominictarr: we are at rubens coffee lounge
16:38:36  <mbalho>dominictarr: just got here, it has wifi and power and coffee
16:39:33  <mbalho>dominictarr: adress: mehringdamm 65
16:48:18  * xaqquit (Remote host closed the connection)
16:56:36  <rowbit>Hourly usage stats: [developer: 0, free: 39]
17:00:06  * ryan_stevensjoined
17:04:52  * wiwilliajoined
17:07:14  * ryan_stevensquit (Quit: Leaving.)
17:18:29  <dominictarr>mbalho, just got out of the bath, you guys still there?
17:33:42  * dominictarrquit (Remote host closed the connection)
17:35:12  * tphummeljoined
17:41:23  * shykeschanged nick to zz_shykes
17:56:35  <rowbit>Hourly usage stats: [developer: 7, free: 17]
18:01:46  * ryan_stevensjoined
18:21:30  * zz_shykeschanged nick to shykes
18:42:28  * jibayquit (Ping timeout: 246 seconds)
18:49:26  * tilgovijoined
18:56:01  * dominictarrjoined
18:56:20  <dominictarr>mbalho, you there?
18:56:22  * jibayjoined
18:56:36  <rowbit>Hourly usage stats: [developer: 11, free: 32]
19:01:10  * dominictarrquit (Ping timeout: 245 seconds)
19:34:36  * mike-djoined
19:53:07  <rowbit>SubStack, pkrumins: Encoders down: (free3)
19:54:25  <pkrumins>where is substack
19:54:27  <pkrumins>i need him right now
19:54:29  <pkrumins>shit's broken
19:54:43  <pkrumins>doominictarr, mbalho, can you tell substack to get on irc right now?
19:54:52  <fotoverite>I think they're all out to dinner.
19:55:24  <pkrumins>i see
19:55:41  <fotoverite>Try DMing max he has his phone on him.
19:56:02  <pkrumins>good idea
19:56:36  <rowbit>Hourly usage stats: [developer: 2, free: 36]
19:56:42  <pkrumins>do you know how to DM?
19:56:54  <pkrumins>i cant see an option
19:57:02  <fotoverite>On twitter?
19:57:06  <pkrumins>yes
19:57:12  <fotoverite>you press the mail icon
19:57:19  <niftylettuce>he needs to follow u prob to do that?
19:57:24  <fotoverite>yes
19:57:28  <fotoverite>Alright I'll DM max
19:57:28  <pkrumins>i see
19:58:16  <pkrumins>thanks
19:58:42  <fotoverite>Sent
19:58:46  <pkrumins>thanks
20:10:15  * juliengrenierquit (Quit: juliengrenier)
20:51:10  * AvianFluquit (Remote host closed the connection)
20:53:57  * wiwilliaquit (Ping timeout: 272 seconds)
20:56:36  <rowbit>Hourly usage stats: [developer: 10, free: 39]
21:25:15  * wiwilliajoined
21:56:36  <rowbit>Hourly usage stats: [developer: 2, free: 27]
22:10:35  * wiwilliaquit (Ping timeout: 272 seconds)
22:16:18  * AvianFlujoined
22:16:27  <mbalho>pkrumins: substack is on his way home, i gave him your message whenever bergman messaged me but we were away from the internet
22:18:54  <pkrumins>thanks
22:19:00  <pkrumins>we've to fix this issue
22:19:51  * wiwilliajoined
22:41:24  <st_luke>isaacs: it was definitely pretty ranty
22:42:20  <st_luke>isaacs: but getting ranty about tech stuff while keeping it constructive is all good.
22:51:19  * wiwilliaquit (Ping timeout: 246 seconds)
22:56:36  <rowbit>Hourly usage stats: [developer: 7, free: 32]
23:12:53  <isaacs>st_luke: cool, i'm glad you enjoyed it :)
23:32:56  * tommybergeronjoined
23:36:50  * tomshredsquit (Ping timeout: 244 seconds)
23:56:36  <rowbit>Hourly usage stats: [developer: 0, free: 20]