00:01:10  * stlsaintjoined
00:01:10  * stlsaintquit (Changing host)
00:01:10  * stlsaintjoined
00:08:15  * idletomquit (Ping timeout: 244 seconds)
00:26:16  <Raynos>whats a good watch files re-run node process program
00:27:41  <dominictarr>node-supervisor
00:40:23  <substack>back in oak towne
00:41:46  * joshwnjjoined
00:49:28  <Raynos>yeah using supervisor
00:49:30  <Raynos>its good
00:54:14  * stlsaintquit (*.net *.split)
00:57:38  <substack>https://twitter.com/sintaxi/status/241223604807815169
00:58:13  * stlsaintjoined
01:00:16  * idletomjoined
01:02:11  <substack>more japanese writeups http://53log.com/wp/blog/%E3%81%82%E3%81%AA%E3%81%9F%E3%81%AE%E3%83%96%E3%83%AD%E3%82%B0%E3%81%AF%E5%A4%A7%E4%B8%88%E5%A4%AB%EF%BC%9F%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6%E3%81%94%E3%81%A8%E3%81%AB%E8%87%AA%E5%88%86%E3%81%AE/
01:02:15  <substack>haha
01:10:46  <dools>testring
01:11:23  * wiwilliaquit (Ping timeout: 245 seconds)
01:31:35  * stlsaintquit (Quit: leaving)
01:49:47  <substack>Raynos, dominictarr: any good ideas for how form parsing could work with streaming "middleware" via https://github.com/substack/response-stream ?
01:50:02  <substack>I could probably use the same approach as oppressor I'm thinking
01:50:21  <substack>oh actually it's quite different because the parameters need to feed downstream not upstream
01:50:42  <substack>but I don't want to duplicate parsing if multiple pipes downstream pull have an upstream form parsing requirement
01:54:27  <substack>actually fuck it parsing post data is crazy fast anyhow
01:54:41  <substack>that can just be an explicit step on the user's part
01:55:35  <substack>idea: since streams are just event-emitters I can pass the parameters as events
01:56:04  <substack>formStream(req).pipe(s0).pipe(s1).pipe(oppressor(req)).pipe(res)
01:56:36  <substack>then I'll modify response-stream to forward events to the next pipe in the chain
01:57:41  <substack>so s0 can do rs.on('post', fn) or whatever
01:58:28  * substackoff to berkeley &
02:41:40  * substackfg
03:12:37  <Raynos>substack: ?
03:13:23  <Raynos>substack: reemit downstream for all the meta data
03:13:28  <Raynos>that solves most of the problems
03:13:34  <Raynos>and buffer the meta data until next tick
03:24:43  * AvianFluquit (Ping timeout: 240 seconds)
03:25:32  <substack>yes but streams pass all the data through
03:25:35  <substack>I think I've got it though
03:26:03  <substack>the chains in the pipe should just parse the data each themselves since they have it
03:27:12  <Raynos>yeah they should
03:27:14  <Raynos>for real data event
03:27:18  <Raynos>the notion
03:27:23  <Raynos>of parsing it onces at the start
03:27:29  <Raynos>and passing pre-parsed data along is silly
03:27:39  <Raynos>thats what express does with req.body
05:00:38  * shykeschanged nick to zz_shykes
05:12:22  * idletomquit (Ping timeout: 246 seconds)
05:19:01  * timoxleyjoined
05:29:35  * timoxleyquit (Quit: Computer has gone to sleep.)
05:47:22  * zz_shykeschanged nick to shykes
06:04:15  * shykeschanged nick to zz_shykes
06:14:05  <substack>Raynos: yes it's pretty silly
06:14:09  <substack>should probably just pass the req
06:14:17  <substack>or pass an emitter that takes the req
06:15:08  <substack>var params = formParams(req); someThing(params).pipe(s1).pipe(anotherThing(params)).pipe(res)
06:15:29  <substack>formidable might already work this way
06:15:37  <substack>or probably something else on npm does if not
06:28:27  <Raynos>substack: that works but is kind of ugly
06:28:30  <Raynos>what is params?
06:30:53  <substack>some event thing
06:33:40  * timoxleyjoined
06:36:35  <Raynos>weird
06:37:01  <Raynos>i dont even know
06:37:03  <Raynos>whats going on
06:37:36  <Raynos>you can always just do this\
06:37:53  <Raynos>httpline(req, ..., res)
06:37:57  <Raynos>and ... are some streams
06:38:05  <Raynos>and httpline does stream.emit("req", req)
06:38:13  <Raynos>then pipes them together
06:38:15  <Raynos>that seems cleaner
06:39:26  * timoxleyquit (Ping timeout: 264 seconds)
06:55:42  <substack>lumping all the elements into a single function call doesn't seem very modular though
06:56:00  <substack>it forces you to have all the streams in one place
06:57:08  * timoxleyjoined
06:57:22  <Raynos>substack: but you do have them all in one place
06:57:28  <Raynos>there is one place where you have both req & res
06:57:41  <Raynos>for a pipeline of streams to work you need to start with req, have all the streams and end with res
06:57:56  <Raynos>I guess you could do
06:58:09  <Raynos>httpline(req, ...) httpline(...) httpline(..., res)
07:02:39  <substack>I want to encapsulate pipes so they are self-similar
07:02:46  <substack>so I can treat chains of pipes as a single pipe
07:03:06  <substack>in other files especially
07:03:14  <substack>or perhaps other processes
07:03:35  <Raynos>oh
07:03:43  <Raynos>you want this to work cross process
07:04:11  <substack>maybe not yet
07:21:15  * timoxleyquit (Quit: Computer has gone to sleep.)
07:26:56  * timoxleyjoined
07:29:49  * timoxleyquit (Read error: Connection reset by peer)
07:50:04  * joshwnjquit (Quit: ERC Version 5.3 (IRC client for Emacs))
08:01:28  * idletomjoined
08:08:25  * idletomquit (Ping timeout: 260 seconds)
08:25:49  <dominictarr>substack, mikeal tweeted something about adding a (the first) dep to request, for handling form data with a streaming parser felix wrote
08:26:43  <dominictarr>as a user, I think id want the metadata attached to the stream object, like in http.
09:11:08  * Altreusquit (Changing host)
09:11:08  * Altreusjoined
11:53:47  * AvianFlujoined
12:05:05  <dominictarr>substack, event-stream.pipeline turns multiple streams into a single stream.
12:11:08  <dominictarr>Raynos, [email protected] now depends on scuttlebutt.
12:11:39  <dominictarr>also, I've added createReadStream and createWriteStream to scuttlebutt,
12:11:50  <dominictarr>so now scuttlebutts can be persisted.
12:28:55  <dominictarr>yes! peers works WAY better with the new scuttlebutt based crdt
12:42:15  * ITprojoined
12:55:02  * dominictarrquit (Ping timeout: 264 seconds)
12:56:12  * dominictarrjoined
13:44:54  * wiwilliajoined
14:20:24  * stlsaintjoined
14:31:10  * wiwilliaquit (Ping timeout: 252 seconds)
14:34:11  * idletomjoined
14:39:10  * wiwilliajoined
15:04:42  * _sorensenjoined
15:37:13  * wiwilliaquit (Ping timeout: 244 seconds)
15:40:24  * wiwilliajoined
15:53:20  <dominictarr>substack, Raynos check this out http://en.wikipedia.org/wiki/QML
15:53:42  <dominictarr>looks really good, if only it was a generic js api, not a parsed DSL.
15:54:12  <dominictarr>I'm thinking something that just works win a generic Observable/Model
15:59:54  * idletomquit (Ping timeout: 252 seconds)
16:20:21  <dominictarr>interestingly, it's a very similar approach to puppet: http://docs.puppetlabs.com/guides/faq.html
16:20:32  <dominictarr>except puppet is for managing servers.
16:20:55  <dominictarr>it's also kinda like make...
16:21:32  <dominictarr>hey substack: do domains work in browserify?
16:44:40  <Raynos>dominictarr: crdt3.0.0 is not on github
16:44:49  <dominictarr>oops
16:45:20  <Raynos>dominictarr: We need a good way to handle security. That's like massive for me
16:46:11  <dominictarr>Raynos, git tells me everything is up to date. afraid we are having a case of the caches.
16:46:13  <Raynos>dominictarr: I don't think QML is that useful
16:46:33  <Raynos>dominictarr: have you forgotten to add 3.0.0? :P
16:46:45  <Raynos>Instead of QML just write SVG and use CSS
16:47:03  <dominictarr>no, else it wouldn't http://npm.im/crdt wouldn't say 3
16:47:04  <Raynos>oh I see QML has like functions and computed properties
16:47:22  <Raynos>dominictarr: push --force
16:47:23  <dominictarr>yeah, it's the declaritive aspect that interests me
16:47:47  <dominictarr>oops, I wasn't on master
16:48:08  <Raynos>dominictarr: https://twitter.com/Raynos2/status/241054761451941889
16:48:22  <Raynos>Look at things like attribute-stream and text-node
16:48:28  <Raynos>I think those are better solutions
16:50:14  <dominictarr>you know, they arn't all that different actually.
16:50:47  <dominictarr>they are both about setting up the relation ships between a collection of entities so that everthing updates properly.
16:52:06  <Raynos>I agree
16:52:24  <Raynos>but QML is a DSL that encourages you to do all your logic in the DSL
16:52:43  <Raynos>attribute-stream & text-node are small streams that do one thing well and if they can't do what you want you do it manually using the DOM
16:53:03  <Raynos>it's about making that line between what is better to do programmatically and declaratively more obvouis
16:53:36  <dominictarr>I'm not saying lets use QML for anything, just that it's an interesting idea.
16:54:08  <Raynos>I agree. But I've used angular in production
16:54:10  * wiwilliaquit (Ping timeout: 250 seconds)
16:54:14  <Raynos>and that's not the correct direction to go in
16:54:37  <dominictarr>what it's making me think of is a Observable class, with a reasonable way of expressing computable fields
16:54:50  <dominictarr>so that they update when something changes.
16:55:26  <dominictarr>doing it with pure node, and not coupling it to the any ui stuff.
16:56:45  <dominictarr>cos you could use this for server side scripts too, and dev ops stuff.
16:59:38  <dominictarr>Raynos, is your observable model for lists? or objects?
16:59:47  <Raynos>dominictarr: Delta is for objects
16:59:54  <Raynos>SpliceStream has List & MovableList
17:00:03  <Raynos>which needs to be refactored to be a scuttlebutt stream
17:00:45  <Raynos>dominictarr: I think the important thing is having every component be a scuttlebutt stream and using higher level abstractions like reliable events & Delta & MovableList
17:03:05  <dominictarr>yup, I'm just considering adding a way to add a computed field to those classes.
17:03:12  <dominictarr>that is all really
17:05:28  <dominictarr>maybe... add a local fields that arn't replicated.
17:08:32  <Raynos>why do you want computed fields?
17:08:47  <Raynos>all a computed field is a getter that runs logic
17:10:13  <Raynos>dominictarr: https://gist.github.com/3555957
17:11:03  <dominictarr>it's slightly more than that when you want computed fields to emit change events too.
17:11:17  <Raynos>dominictarr: observable is deprecated. Use delta-stream ( https://github.com/Raynos/delta-stream#example )
17:11:18  <dominictarr>I'm also interested in this from a dev ops perspective
17:11:25  <dominictarr>okay.
17:11:43  <Raynos>well yeah they can emit change events
17:11:53  <Raynos>the only problem with computed fields is doing them efficiently
17:12:02  <Raynos>and not recomputing them for every incoming delta
17:12:26  <Raynos>dominictarr: Btw it's important for me that crdt.Row, crdt.Set, crdt.Seq and crdt.Doc are all scuttlebutt streams of their own right
17:13:41  <dominictarr>hmm... you'd just have to filter out the parts of the Doc's stream that isn't in the row, set, seq.
17:14:18  <dominictarr>for a row, that would be easy... filter everything where [key != row.id,...]
17:15:07  <dominictarr>for row and set it doesn't quite map cleanly, because crdt does not send add, remove, move events.
17:15:33  <dominictarr>instead, the type of change is computed from the changes in member states.
17:16:28  <dominictarr>you could make a scuttlebutt stream that did add and remove though.
17:16:55  <dominictarr>just make sure that it still works if the remove event arrives before an add event.
17:17:12  <dominictarr>(I mean, it needs to still have the same eventual result)
17:18:00  <dominictarr>another approach would be to just filter the stream the non significant events.
17:18:27  <dominictarr>i.e. changes to objects that don't cause a move, add, or remove... hmm. that is not exactly simple...
17:19:27  <dominictarr>really, I think it might be better to have an ElementList hook directly to a crdt Set/Seq.
17:19:36  <dominictarr>rather than use a stream.
17:21:54  <Raynos>dominictarr: a scuttlebutt stream that does add and remove is List from SpliceStream.List
17:22:26  <Raynos>dominictarr: hooking directly to Set/Seq is a pain in the ass. it's cleaner to hook through streaming representations
17:23:06  <Raynos>dominictarr: would you want me to refactor Row/Set/Seq to be scuttlebutt subclasses ? or should this be a seperate module
17:23:27  <Raynos>ideally all the Set / Seq logic can be abstract List and MovableList interfaces
17:23:36  <Raynos>and Set / Seq just contain logic to hook up to a Doc
17:23:47  <dominictarr>I'd rather it be a seperate module.
17:23:59  <Raynos>substack: is there a json CLI ?
17:24:13  <dominictarr>crdt is at a comfertable level of complexity right now
17:24:37  <Raynos>dominictarr: would you be open to Set / Seq / Row being instances of List / MovableOrderedList / Delta or similar abstract scuttlebutt things
17:25:38  <dominictarr>Yeah, i'm fine with generalizing their superclasses to something that it's a generic observable of a set, and a list
17:25:56  <Raynos>cool.
17:25:58  <Raynos>I'll do that
17:26:18  <Raynos>I've also released splice-stream doesn't work. and i should represent a List as key / value
17:26:31  <Raynos>also [beforeId, afterId, ts, source] doesn't work either
17:26:47  <Raynos>as that package is meaningless if both beforeId & afterId have been removed from the list
17:27:04  <Raynos>the only meaning ful thing is [keyFromBetween(beforeId, afterId), value, ts, source]
17:27:21  <Raynos>the between notion to generate "position" as a key is the only thing that works
17:27:46  <dominictarr>right, how do you do deletes?
17:33:24  <substack>dominictarr: domains don't work in browserify but they could using crazy trickery
17:33:53  <dominictarr>substack, don't they mostly hook into event emitters?
17:34:06  <substack>oh true
17:34:07  <dominictarr>and setTimeout, setInterval, process.nextTick
17:34:28  <substack>but in browsers exceptions get thrown in dom callbacks too
17:34:35  <dominictarr>guess you'd need to hook into XmlHttpRequest
17:34:37  <dominictarr>oh right.
17:34:40  <dominictarr>those things
17:34:52  <substack>but I can use ast exception transform shenanigans
17:34:53  <dominictarr>if only they where propper event emitters.
17:35:00  <substack>well
17:35:09  <substack>there's http://github.com/substack/ever
17:35:19  <substack>but that would only work if you only use that lib
17:35:36  <dominictarr>yeah.
17:41:18  * wiwilliajoined
17:56:52  <dominictarr>Raynos, okay. so having messed around with it a little, I see that all you really want it a module for gathering events into one place...
17:58:51  <dominictarr>https://gist.github.com/3556551
17:59:04  <dominictarr>like that...
18:00:13  <dominictarr>maybe, but it could be separate from any particular observable implementation,
18:00:18  <dominictarr>just use event emitters.
18:00:40  <Raynos>dominictarr: I do deletes like delta-stream does deletes
18:00:48  <Raynos>set the value to undefined and register it as a delete
18:00:50  <dominictarr>__delete = true ?
18:01:16  <dominictarr>oh, so: [key, undefined, ...]
18:01:21  <Raynos>dominictarr: https://github.com/Raynos/delta-stream/blob/master/index.js#L41
18:01:24  <Raynos>yeah [key, undefined
18:01:42  <dominictarr>that works.
18:14:41  <dominictarr>Raynos, just replied to https://github.com/dominictarr/scuttlebutt/issues/6#issuecomment-8196456
18:18:14  <Raynos>dominictarr: replied
18:27:00  <dominictarr>Raynos, replied
18:32:28  <Raynos>dominictarr: btw this security thing really excites me
18:32:37  <Raynos>Once we can identify that a node really did make this update
18:32:41  <Raynos>without impersonation
18:32:44  <Raynos>or other things
18:32:45  <dominictarr>oh yeah it's super interesting-
18:32:51  <Raynos>then I can write a distributed authentication strategy
18:33:00  <Raynos>where if like 50% of the nodes all make the same update
18:33:02  <Raynos>it goes through
18:33:23  <dominictarr>there are lots of ways
18:34:05  <Raynos>also replied
18:34:07  <dominictarr>there is some crazy stuff
18:34:14  <dominictarr>like multi node hash
18:34:40  <Raynos>substack: I solved how you build a large browser app as many small things
18:35:04  <Raynos>substack: the equivelant of mountie for browsers is a multi-page app where every page is a seamless iframe to single page app
18:35:09  <dominictarr>it's a encryption method that needs a bunch of nodes to decrypt something, but no one node ever knows the whole key.
18:35:25  <Raynos>dominictarr: It's also important we build a DHT on top of scuttlebutt
18:36:05  <dominictarr>well, we'd use scuttlebutt to replicate the locations of all the nodes
18:36:20  <dominictarr>and then a hash ring to decide what nodes hold what data
18:36:42  <dominictarr>basically scuttlebutt is the bottom half of dynamo.
18:38:35  <Raynos>interesting
18:38:41  <Raynos>send me the link to that dynamo paper again
18:38:45  <Raynos>I'll bookmark it this time :D
18:42:21  <dominictarr>just google "amazon dynamo paper"
18:42:44  <dominictarr>it explains merkle trees too.
18:43:13  <dominictarr>merkle trees would be nice next to scuttlebutt. plus you could use it to replicate whole files!
18:43:41  <dominictarr>(we are currently about 1/3 the way to implementing dynamo in node.js)
18:44:19  <dominictarr>actually, I know there is already a hash-ring module so 2/3
18:45:05  <dominictarr>Raynos, the biggest security hole is browser plugins.
18:45:27  <Raynos>dominictarr: because they can steal private keys
18:45:46  <Raynos>dominictarr: we need to tell WHATWG we need a private key HTML5 API
18:46:05  <dominictarr>yeah exactly, there is no safe place to keep the file ... just local storage.
18:46:12  <Raynos>window.PrivateKey.sign(...) window.PrivateKey.encrypt(...) window.PrivateKey.giveMePublicKey()
18:46:14  <dominictarr>Raynos, THAT IS A VERY GOOD IDEA.
18:46:53  <Raynos>dominictarr: the best we can do for private keys is get them from a file -> into browser memory and require you to do that every time
18:47:01  <dominictarr>the plugins will still be able to see that.
18:47:05  <Raynos>then figure out a way to build a memory thing in a closure where other peopel cant temper with it
18:47:19  <dominictarr>oh, it would stop them from copying the private key though!
18:47:31  <Raynos>the only attack vectors left are native browser plugins and memory hackery
18:48:03  <dominictarr>maybe have a thing where you encrypt the key, then auth to the server
18:48:14  <dominictarr>then the server sends back the secret to unlock it.
18:48:23  <Raynos>dominictarr: browser plugins can steal sessions. Its the same vulnerability as sessions
18:48:37  <Raynos>dominictarr: I dont think the auth server helps
18:48:47  <dominictarr>maybe the solution is just don't worry about it.
18:48:59  <dominictarr>warn people about plugins.
18:49:09  <dominictarr>they can turn them off on that app.
18:49:19  <dominictarr>but leave them on on others.
18:49:39  <dominictarr>and also... make native apps with peer to peer.
18:50:03  <dominictarr>that works a lot better because you can actually do ssh keys properly.
18:50:35  <dominictarr>there is even a npm ssh-agent module.
18:50:36  <Raynos>yeah.
18:50:45  <Raynos>the other concern then plugins
18:50:54  <Raynos>is other attack vectors
18:51:21  <Raynos>like XSS
18:51:23  <dominictarr>yeah, browsers suck. use like app.js to make native apps.
18:52:08  <dominictarr>plus we have npm etc.
18:54:02  <dominictarr>have nodes that can run or your desktop, or be deployed to servers (by anyone)
18:54:27  <dominictarr>and run a totally peer to peer system.
18:54:28  <Raynos>dominictarr: can't do
18:54:32  <Raynos>I want browser apps
18:54:47  <Raynos>I want peer to peer browsers
18:55:16  <Raynos>with webrtc you can open udp connections
18:55:20  <Raynos>what more would you need?
18:55:38  <dominictarr>yeah, webrtc could be used.
18:56:15  <dominictarr>it's not a big deal then. you could make it run as server, browser, or desktop.
18:56:35  <dominictarr>just the more paranoid will not choose browser.
19:02:36  <Raynos>dominictarr: what would be needed to use ssh with webrtc?
19:03:02  <dominictarr>well, scuttlebutt needs a reliable connection.
19:03:15  <dominictarr>can webrtc open a tcp connection?
19:04:11  <dominictarr>do you mean just ssh keys? or a whole ssh implementation?
19:04:32  <dominictarr>you could port ssh to js. it's quite complicated though.
19:04:50  <dominictarr>there is a lot of stuff for negoitating the connection.
19:05:25  <dominictarr>negotiating the type of authentication & encryption.
19:05:38  <dominictarr>substack has started it though.
19:11:25  <dominictarr>man, I can't wait to hear the music that dubstepper's teenage children of the future play to piss off their parents.
19:27:50  * elliottc1blequit (Ping timeout: 265 seconds)
19:28:20  * purrquit (Ping timeout: 276 seconds)
20:04:23  <st_luke>classic rock
20:06:19  <Raynos>dominictarr: webrtc can do both tcp & udp
20:06:46  <dominictarr>can it bind to a port?
20:06:51  <Raynos>no
20:06:58  <dominictarr>ah stink
20:06:59  <Raynos>it uses a discovery network to estabilish a connection
20:07:09  <Raynos>it can send offers and answers
20:07:10  <dominictarr>so two clients connect?
20:07:17  <Raynos>and uses ICE to negotiate the actual thing
20:07:42  <dominictarr>ah, milani was just telling me about ICE in #node.js
20:07:45  <Raynos>you send ICE candidates which as far as I understand is a description of the network path of how to get from A to B
20:07:56  <Raynos>the offer is send to say "I want to open a connection to you"
20:08:04  <Raynos>the answer means "yes open the connection I want it to"
20:08:17  <Raynos>then you exchange candidates until you have a proper NAT based path between the two machines
20:09:12  <dominictarr>right, sounds complicated I hope someone writes a module for it.
20:09:29  <Raynos>yeah
20:09:33  <Raynos>it's called discovery-network
20:09:53  <Raynos>discovery-network emulates webrtc with connections to a relay server
20:10:00  <Raynos>until webrtc udp data channels land
20:10:33  <dominictarr>ah yeah, that is the easy way to do it,
20:12:49  * idletomjoined
20:26:33  <tanepiper>substack: with mountie/seaport setup, would there be any way to make apps support multiple domains? For example: https://gist.github.com/5f8fa0c9d71c64134322 ?
20:49:39  <tanepiper>i'm trying this, but it doesn't seem to be working :/ https://gist.github.com/a01ae972d25231ad59e7
20:50:04  <tanepiper>says no matching services are running - but if i take the count. off the subdomain in my browser, it works fine
20:58:28  <tanepiper>ahh weird - it's not clearing the request header - https://gist.github.com/97040e3c5a6de6704dbb
21:33:12  * wiwilliaquit (Ping timeout: 244 seconds)
21:40:20  * wiwilliajoined
22:16:04  <dominictarr>okay, next phase towards making this peer to peer stuff awesome is I need metrics.
22:16:12  <dominictarr>so I can see how good it is.
22:16:17  <dominictarr>streaming metrics.
22:38:17  <dominictarr>substack, looks like request doesn't work in the browser any more
22:38:38  <dominictarr>because it's dep, mime, uses readFileSync
22:39:22  <substack>blarg
22:39:47  <substack>I was using it for some things since browser-request isn't properly pipe-able
22:40:15  <tanepiper>substack: ^ some weirdness with mountie
22:40:17  <substack>fs.readFileSync() is a thing that could be statically analyzed
22:41:20  <substack>tanepiper: ports.service(['web.chartaca.com', 'web.count.chartaca.com'], {mount: '/pb'}, function (port, ready) { ???
22:41:39  <substack>2 service names?
22:42:24  <tanepiper>mehh don't worry about that, i just moved the code around so i could do https://gist.github.com/54affd7aadbfd971793c
22:42:46  <tanepiper>but i did have some weirdness bouncing a new url
22:43:51  <tanepiper>basically i removed the count. from the incoming url, and bounced to the new url, but it still had count.chartaca.com in the request header of the new request
22:45:01  <substack>tanepiper: you've got to be explicit about which role names map to which services
22:45:50  <dominictarr>substack, how to I check we are in the browser? process.browser === true?
22:46:11  <substack>dominictarr: that works sure
22:46:21  <dominictarr>whats the recommend way?
22:46:29  <substack>if (process.browser)
22:47:38  <substack>tanepiper: oh actually I see you're using the web. prefix in the routes
22:47:49  <substack>tanepiper: so the bug is that the headers aren't getting properly reset?
22:48:01  <substack>I wonder if this is related to keep-alive
22:48:38  <tanepiper>yea, lemme show you what i did https://gist.github.com/a01ae972d25231ad59e7
22:49:08  <tanepiper>https://gist.github.com/97040e3c5a6de6704dbb was the requests
22:49:27  * st_lukequit (Remote host closed the connection)
22:49:45  <dominictarr>substack, [email protected] works.
22:51:14  <substack>dominictarr: if these were json files loaded with require() it would work https://github.com/broofa/node-mime/blob/master/types/mime.types
22:51:38  <substack>perhaps I should just use static analysis to pick off fs.readFileSync
22:51:56  <dominictarr>substack, yeah I'm trying to run graph-stream
22:52:35  <dominictarr>substack, is it really worth the headache? I mean it's probably 1% of modules.
22:53:05  <substack>fs.readFileSync would be awesome for loading static assets too
22:53:07  <dominictarr>and then they probably use path.join(__dirname, ...)
22:53:21  <substack>Raynos: ^^^
22:53:26  <tanepiper>dominictarr: sounds like we are trying to solve similar problems with metrics :)
22:53:31  <Raynos>?
22:53:38  <dominictarr>tanepiper, yeah I think so.
22:53:45  <Raynos>I always use path.join(__dirname, ...)
22:53:47  <substack>Raynos: instead of overloading require() to pick off html and css files, use fs.readFileSync
22:54:02  <Raynos>substack: that's fine with me if browserify handles that
22:54:22  <tanepiper>my only problem is I basically have had to refactor an existing service that wasnt made well in the first place, so i'm having to do so many hacks
22:54:23  <substack>browserify is already doing an ast traversal
22:54:27  <dominictarr>what I want is some moving graphs so I can visually see how well my modules are performing.
22:54:41  <Raynos>dominictarr: I use `var html = require("./x.html"), elem = Element(html)` a lot
22:54:57  <Raynos>so having `var html = fs.readFileSync('./x.html')` would be cool
22:55:06  <substack>and more reusable with node
22:55:16  <Raynos>dominictarr: graphing is a pain in the ass. Do it manually in SVG or use a library
22:55:20  <dominictarr>the problem here guys as that people use readFileSync too many ways.
22:55:27  <substack>true
22:56:09  <dominictarr>the situation I am in, where it's actually breaking something,
22:56:33  <dominictarr>is because mikeal wasn't expecting request to be used from the browser
22:56:52  <substack>that's why we need browser badges
22:57:01  <dominictarr>mime would just be used for when you are piping files
22:57:14  <dominictarr>which is never gonna happen?
22:57:29  <substack>request is trying to solve a lot of problems
22:57:55  <dominictarr>yeah, it's trying to be pretty fancy.
22:57:58  <substack>doesn't filed already do all the mime crap?
22:58:03  <substack>just let filed handle that
22:58:08  <dominictarr>maybe we just need some sort of minimal request.
22:58:32  <dominictarr>like maybe ... [email protected] ?
22:58:46  <dominictarr>(which still works, btw)
22:59:01  <dominictarr>a request with patches but no new features.
23:00:41  <substack>you could send jhs a patch for browser-request to make it streaming
23:01:10  <substack>or just send mime a patch to turn those .type files into json
23:01:14  <substack>and load them with require()
23:01:35  <dominictarr>nah, I'm just gonna use [email protected]
23:01:47  <dominictarr>I'm sure it has no problems.
23:03:48  <substack>I'm going to drink coffee and finish browser badges :D
23:04:08  <substack>and probs send isaacs some tap pull requests to make it more browser friendly
23:04:13  <substack>or else just fix those issues in browserify
23:13:07  <dominictarr>tanepiper, http://smoothiecharts.org/
23:13:13  <dominictarr>^looks good
23:14:40  <tanepiper>interesting
23:15:20  <tanepiper>still canvas based
23:22:42  <dominictarr>you need svg?
23:23:07  <dominictarr>surely it can be done. it looks good, and it's small. that is the appeal for me right now.
23:26:31  <tanepiper>dominictarr: well yes and no :) The dashboard i am working on needs to work on tablet devices - and i think SVG might look better, and use less memory
23:27:01  <dominictarr>ah, you have much stricter requirements than me.
23:27:24  <dominictarr>this lib is pretty simple, you can probably port it to svg.
23:31:30  <tanepiper>what do you think of 'tinynode' as a consultancy name?
23:31:43  <tanepiper>tinyno.de is available :D
23:31:49  <Raynos>dominictarr: I like a minimal browser request
23:31:53  <maxogden>not as cool as fatnode
23:32:47  <dominictarr>normal people don't understand whats so great about being tiny
23:33:29  <dominictarr>I want to eat a hamburger made by fatnode
23:34:26  <tanepiper>fatno.de is available :)
23:35:03  <tanepiper>i prefer tiny though :)
23:35:10  <dominictarr>Raynos, there is like so much work gone into request, I'm sure it attained perfection somewhere around @1.x.x
23:35:12  <tanepiper>because it's apps made of tiny things
23:35:43  <dominictarr>tanepiper, I'm not sure fatno.de is a consultancy. I'm pretty sure it's a cyberpunk themed burger bar
23:35:58  <Raynos>dominictarr: Your probably right.
23:35:59  <dominictarr>I know! get both
23:36:14  <dominictarr>and have the consultancy out the back, and burgers in the front.
23:36:52  <tanepiper>ahh crap
23:37:03  <tanepiper>i need an admin contact in germany for buying it
23:37:42  <substack>dominictarr: it's some sort of fact about reality that the bigger software gets the more brittle and harder to repurpose it becomes
23:37:46  <substack>request is getting that way
23:37:50  <substack>socket.io is long past that stage
23:38:15  <dominictarr>tanepiper, I'm in germany atm
23:38:57  <dominictarr>Raynos, s/software/system/
23:40:59  <dominictarr>it affects organizations, and other systems too.
23:41:19  <tanepiper>dominictarr: yea, i need a permenant address to have as an admin contact
23:41:39  <dominictarr>tanepiper, how permanent?
23:41:49  <tanepiper>to buy a domain name?
23:41:49  <dominictarr>what are they gonna do to check?
23:41:54  <tanepiper>no idea
23:41:58  <dominictarr>tanepiper, yeah.
23:42:21  <dominictarr>nothing is permanent anyway. not even in germany.
23:42:38  <tanepiper>http://www.namecheap.com/support/knowledgebase/article.aspx/246/36/are-there-any-specific-requirements-for-registering-a-de-domain
23:43:39  <dominictarr>you need german dns servers?
23:43:44  <tanepiper>nope
23:48:44  <tanepiper>bugger it, tinynodes.com is available
23:48:54  <tanepiper>less hassle
23:49:45  <dominictarr>smoothie is now available on npm
23:49:54  <dominictarr>now... to make a stream interface for it.
23:57:50  * _sorensenquit (Quit: _sorensen)