00:00:01  <Raynos>unless browserify walks the node_modules tree
00:00:04  <substack>"foo" is a module, not necessarily a bin script
00:00:24  <Raynos>myapp/node_modules/mywidget/node_modules/mybrowserifyplugin
00:00:28  <substack>browserify *already* is node_modules aware
00:00:52  <Raynos>when I run browserify in the myapp level it cant do require("mybrowserifyplugin") it would have to do require("mywidget/node_modules/mybrowserifyplugin")
00:01:02  <Raynos>if it does the latter its cool just ugly at the browserify implementation which sucks
00:01:14  <substack>Raynos: you don't require() plugins
00:01:25  <substack>browserify require()s them for you
00:01:42  <Raynos>If you say so. If you make it work it would be cool :D
00:02:35  <substack>I'm basically going to throw away all the code but keep the tests and add more tests
00:02:41  <substack>and use roman's module
00:04:04  * mikealquit (Ping timeout: 248 seconds)
00:06:05  <Raynos>romans?
00:06:15  <paul_irish>I want to talk to substack and pkrumins sometime about cloud testing at scale
00:06:26  <paul_irish>probably right now as i'm in london and its midnight and i'm a few drinks in
00:06:26  <paul_irish>but
00:06:31  <substack>great!
00:06:48  <paul_irish>i think frontend could use some massive improvements regarding realtime crossbrowser testing in the cloud
00:06:51  <substack>paul_irish: I showed you my testling-ci prototype at jsconfeu right?
00:06:53  <paul_irish>and i got some ideas
00:06:57  <paul_irish>yessssssssssssss
00:07:37  <substack>and people use whatever test harness/runner they want so long as it console.log()s TAP-parsable output
00:07:45  <substack>or you can just console.log() tap output yourself
00:08:09  <Raynos>whats the difference between console.log() tap and console.log() TAP-parsable
00:10:06  <substack>Raynos: like this https://github.com/substack/html5devconf-examples/blob/master/tap_output/070.js
00:10:34  <substack>actually this https://github.com/substack/html5devconf-examples/blob/master/tap_output/050.js
00:10:48  <substack>oh wait https://github.com/substack/html5devconf-examples/blob/master/tap_output/040.js is the best
00:10:57  <substack>IGNORE THE OTHERS except for 040.js
00:11:09  <substack>so if your test harness can do that you're good
00:11:14  <Raynos>the question was
00:11:23  <Raynos>whats the difference between outputting tap and TAP-parsable
00:11:27  <Raynos>are they not the same
00:11:37  <Raynos>if you output tap you output something parsable by a TAP parser
00:11:39  <substack>all tap-parsable output is tap
00:11:46  <substack>tap is a very lenient output format
00:11:53  <Raynos>I see
00:11:57  <substack>http://testanything.org
00:12:05  <substack>isaacs's tap parser is particularly lenient
00:12:14  <substack>oh shit that site is down
00:13:14  <substack>paul_irish: anyhow I'd better finish this xhr-write-stream module so we can launch
00:13:35  <Raynos>that tap image is not an svg :(
00:13:45  <Raynos>substack: What's xhr write stream?
00:14:08  <substack>Raynos: it's a sequence of xhr requests[C[C that preserves the ordering on the server side
00:14:14  <substack>it's half of the duplex
00:14:21  <substack>which is all I need for testling-ci
00:14:30  <substack>and it needs to work everywhere and not have a lot of moving parts
00:14:46  <substack>I'm just abstracting this code out of the testling.com code
00:16:40  <Raynos>substack: does it need to return backpressure over the HTTP ?
00:18:50  * ITprojoined
00:19:06  <rowbit>Hourly usage stats: [free: 24]
00:19:07  <substack>Raynos: nope
00:21:40  <Raynos>substack: https://gist.github.com/bbe5ef0f3d4e6c45279c
00:21:41  <Raynos>implemented.
00:23:20  * ITproquit (Ping timeout: 252 seconds)
00:25:48  <Raynos>havn't tested read-stream & write-stream in IE8 which sucks :(
00:25:54  <substack>Raynos: it's actually more complicated
00:26:18  <substack>writes come back to the server in an indeterminate order
00:26:32  <substack>you need to set a sequence number on outgoing requests so the server can put them in the right order again
00:26:39  <Raynos>http should be ordered
00:26:39  <substack>I discovered this empirically writing testling
00:26:41  <Raynos>tcp is ordered
00:26:43  <substack>Raynos: it's not
00:26:49  <Raynos>fffffffffffffffffffffffffffffffffffffffffffffffff
00:26:51  <substack>empiricism suggests otherwise
00:26:53  <Raynos>tcp is ordered right?
00:27:01  <substack>yes but xhr isn't
00:27:06  <Raynos>RAGEFACE
00:27:14  <substack>a single xhr request is
00:27:18  <substack>but multiple xhr requests aren't
00:27:30  <substack>actually just like tcp in that respect
00:27:41  <substack>a single tcp connection is ordered, multiple tcp connections are not
00:27:45  <Raynos>oh of course
00:27:50  <Raynos>multiple xhr use different sockets
00:27:53  <Raynos>blargh
00:27:58  <Raynos>ok sequence numbers joy
00:28:06  <Raynos>you should write an ordered stream :P
00:28:10  <Raynos>which parsers out sequence numbers
00:28:18  <st_luke>I want to try doing something with sensor output to d3 visualizations at hard hack I think
00:28:46  <st_luke>I love the idea of fun live metrics on a screen displayed with the flexibility of d3
00:29:14  <substack>Raynos: https://npmjs.org/package/ordered-emitter
00:29:25  <Raynos>https://gist.github.com/bbe5ef0f3d4e6c45279c
00:29:52  <Raynos>now with non existent through ordered stream dependency :D
00:32:11  <Raynos>substack: the hardest part is writing a cross browser xhr thing
00:32:19  <substack>Raynos: your github link is broken https://npmjs.org/package/xhr
00:32:21  <substack>points to the wrong repo
00:32:31  <substack>Raynos: the http module is already cross-browser
00:32:32  <Raynos>wtf ._.
00:32:35  <Raynos>fixing
00:32:38  <Raynos>it isn't
00:32:44  <substack>http-browserify is
00:32:44  <Raynos>browserify-http doesn't handle CORS
00:33:08  <substack>CORS is not cross-browser
00:33:16  <substack>different constraints
00:33:17  <chrisdickinson>Raynos: that xhr module is going to leak memory in IE8
00:33:29  <substack>non-sequitur
00:33:44  <chrisdickinson>(new XMLHttpRequest, repeatedly, does not get GC'd by ie8 ): )
00:34:01  <Raynos>chrisdickinson: dont care about IE8 :D
00:34:21  <Raynos>chrisdickinson: PR to fix leak
00:34:25  <chrisdickinson>'kk.
00:34:31  <chrisdickinson>was just about to ask if you were open to that :)
00:35:13  <Raynos>substack: https://github.com/felixge/node-active-x-obfuscator
00:35:19  <substack>chrisdickinson: shortly we'll have testling badges for this
00:35:42  <chrisdickinson>for pass/fail per browser?
00:35:44  <Raynos>substack: you need to hack the activeX reference if you want http-browserify to work with retarded proxies >_>
00:35:55  <substack>chrisdickinson: exactly
00:36:03  <chrisdickinson>awesome
00:36:13  <chrisdickinson>though i'm not sure how you'd test for the memory leak :\
00:36:23  <chrisdickinson>i found it by doing it until IE8 crashed.
00:36:44  <substack>like this http://substack.net/images/badge.png
00:37:00  <substack>chrisdickinson: write a test that crashes
00:37:28  <substack>here's the module that makes the badges even https://github.com/substack/browser-badge
00:40:22  <substack>paul_irish: check out https://github.com/dominictarr/crdt @ that share on g+ about OT
00:40:24  <chrisdickinson>nice
00:42:16  <chrisdickinson>Raynos: adding issues to the xhr library, mostly just to remind myself, if that's okay
00:42:48  <Raynos>chrisdickinson: it's cool
00:42:54  <Raynos>I'll fix any that effect modern browsers
00:45:04  <substack>with crdt you can write commutative operations with normal-looking apis for sets and sequences
00:49:41  <Raynos>chrisdickinson: https://github.com/Raynos/browserify-server we need to merge efforts
00:50:05  * sorensen_joined
00:50:05  * sorensen_quit (Client Quit)
00:50:20  <chrisdickinson>Raynos: yeah, i just saw that :) i wrote mine while on a train so searching on npm wasn't working very well.
00:51:30  <Raynos>chrisdickinson: also use gh-pages for browser module demos
00:51:35  <Raynos>or at least screen shot the color picker Ui
00:51:37  * chrisdickinsonbrbs for a second.
00:52:11  <Raynos>chrisdickinson: https://github.com/Raynos/events-stream vs domnode-dmo
00:52:14  <Raynos>domnode-dom*
00:53:54  * _sorensenquit (Ping timeout: 240 seconds)
01:02:11  * ITprojoined
01:03:27  <st_luke>substack: when can I try testling-ci?
01:03:53  <substack>st_luke: once it works
01:04:06  <substack>it works on my localhost but has some issues in production we're working to fix
01:04:24  <substack>I've just been busy with stuff lately so it hasn't gotten launched quite yet
01:04:45  <substack>we're going to soft-launch it specially for #stackvm users first
01:05:53  <chrisdickinson>Raynos: nice. domnode-dom also exposes elements as writable streams
01:06:01  <chrisdickinson>so you can append or replace, text or html.
01:06:18  <chrisdickinson>ideally it'd also have an writableAttributeStream, too, but that might be a separate module
01:06:33  <st_luke>substack: cool, I was just wondering. the people I work with are starting to see the point of CI for front-end code also and I'd love to be able to get them to sign up for a testling account.
01:08:06  <chrisdickinson>i thought about adding pics to the color picker, but it's deliberately left entirely unstyled, and goes to great lengths to avoid actually explictly referring to the dom at all.
01:09:05  <chrisdickinson>(hence gymnastics like https://github.com/chrisdickinson/pick-at-it/blob/master/index.js#L190 )
01:09:14  <Raynos>chrisdickinson: https://github.com/Raynos/attribute
01:09:41  <Raynos>not a writable stream but a delta-stream
01:09:45  <Raynos>but that stuff is bullshit anyway
01:09:50  <Raynos>the DOM is not a stream
01:09:58  <Raynos>UIs are not streams
01:10:06  <Raynos>IO is a stream
01:10:16  <chrisdickinson>i've found that it's a handy pattern when applied to the DOM.
01:10:29  <Raynos>its the wrong abstraction applied too generically
01:11:17  <Raynos>I would recommend https://github.com/gozala/dom-reduce#usage or https://github.com/substack/ever for DOM events instead
01:11:33  <Raynos>for writing to the DOM you need some kind of template mechanism
01:12:36  <chrisdickinson>http://github.com/chrisdickinson/plate
01:12:42  <chrisdickinson>it's a little heavyweight
01:14:36  <st_luke>the new york city income tax form is pretty complex
01:17:06  <Raynos>chrisdickinson:https://github.com/Raynos/wizard-game/blob/master/browser/ui/top_bar.js#L80
01:17:13  <Raynos>I use a one line function for templates
01:17:39  <dominictarr>reducables are just another type of stream
01:18:14  <dominictarr>also, I have http://npm.im/el-streamo
01:18:37  <dominictarr>a template is just a function that returns an HTMLElement
01:19:06  <rowbit>Hourly usage stats: [developer: 1, free: 67]
01:20:13  <Raynos>chrisdickinson: don't use attribute >_<
01:20:41  <Raynos>dominictarr: Yes they are but they are optimized for being reduced where as lib/stream is optimized for low level IO
01:22:58  * dominictarrquit (Ping timeout: 246 seconds)
01:23:28  <chrisdickinson>i've found that being able to combine something like `el.pipe(debounce(500)).pipe(template('/api/?q={datum}, 'datum')).pipe(xhrstream()).pipe(resultsTemplate).pipe(containerEl)` has been hugely handy.
01:23:35  <chrisdickinson>while a bit of a mouthful.
01:23:55  <chrisdickinson>(basically doing an autocomplete widget as a series of streams.)
01:25:23  <Raynos>you can do the same with function composition on functions that return streams / reducibles / promises
01:25:34  <Raynos>what your looking for is function composition and a composable data type
01:26:12  <Raynos>right idea wrong implementation lib/stream isn't meant for that.
01:29:02  <paul_irish>substack: just FYI i think your g+ comment had a double post
01:29:13  <paul_irish>dunno if you fixed but i got some repeatrepeat in the email
01:30:32  <chrisdickinson>Raynos: do you have an example?
01:30:59  <Raynos>chrisdickinson: https://github.com/Gozala/reflex/blob/future/examples/drag-writer/drag-writer.js
01:31:52  <Raynos>chrisdickinson: If you insist on using streams at least use https://github.com/Raynos/chain-stream
01:35:48  * jibay_quit (Quit: Leaving)
01:36:26  <chrisdickinson>i've got to head out, but thanks for the examples.
01:57:16  * AvianFluquit (Remote host closed the connection)
02:19:06  <rowbit>Hourly usage stats: [developer: 1, free: 53]
02:21:44  * shykeschanged nick to zz_shykes
02:23:28  * tphummelquit (Quit: tphummel)
02:23:32  * xaqjoined
02:35:26  * fotoveritejoined
02:49:32  * fotoveritequit (Quit: fotoverite)
03:16:21  * AvianFlujoined
03:19:06  <rowbit>Hourly usage stats: [developer: 5, free: 20]
03:24:34  * jden|workchanged nick to jden
04:19:06  <rowbit>Hourly usage stats: [developer: 0, free: 32]
04:22:56  * st_luke_joined
04:23:49  <Raynos>Now I need to implement a webrtc shim. Fun!
04:45:11  * jdenchanged nick to jden|away
04:48:16  * AvianFluquit (Remote host closed the connection)
04:49:18  <substack>paul_irish: I did an edit is all
05:04:51  <simcop2387>substack: microsoft is competing with you guys. free vms of windows to test old versions of IE on apparently.
05:04:54  <simcop2387>http://news.ycombinator.com/item?id=4786794
05:06:13  <Raynos>not really news
05:06:22  <Raynos>im pretty sure substack uses those
05:06:27  <Raynos>to install his windows vms :D
05:08:08  <simcop2387>someone already suggested browserling on there too :)
05:08:28  <ik>'somebody'
05:08:35  <ik>'some anonymous internet guy'
05:11:16  <guybrush>hey guys how do you think about namespacedStream.pipe('data * x',dest) ?
05:12:21  <guybrush>i am really into ee2 so this would make sense for me :p
05:13:18  <guybrush>it would work like nssocket (just for streams, where every event is namespaced under the "data" event to avoid collisions)
05:13:50  <ik>what's the * for
05:13:54  <ik>who is x
05:14:54  <guybrush>abc.pipe('data a b **').pipe(ab).pipe('data a **').pipe(a)
05:15:22  <guybrush>* stands for any char but " " and x is just a char
05:15:37  <guybrush>ik: https://github.com/hij1nx/EventEmitter2
05:16:09  <guybrush>if you guys dont tell me this is nonsense i will try to implement it
05:17:46  * xaqquit (Remote host closed the connection)
05:19:06  <rowbit>Hourly usage stats: [developer: 1, free: 56]
05:26:28  * devendramjoined
05:29:05  <devendram>curl: (18) transfer closed with outstanding read data remaining , any solution for this ?
05:46:47  * st_luke_quit (Remote host closed the connection)
06:04:23  * LOUDBOTquit (Remote host closed the connection)
06:04:30  * LOUDBOTjoined
06:12:15  * LOUDBOTquit (Remote host closed the connection)
06:12:23  * LOUDBOTjoined
06:19:06  <rowbit>Hourly usage stats: [developer: 2, free: 60]
07:06:00  * fotoveritejoined
07:08:14  <Raynos>http://live.xsockets.net/examples/WebRTC/?roomId=My%20room
07:08:19  <Raynos>more internet people!
07:08:37  <Raynos>guybrush: Use emitStream
07:08:51  <ik>i joined your internet thing Raynos
07:09:05  <Raynos>join it again in chrome 23 :P
07:09:10  <Raynos>or allow cameras
07:09:59  <ik>man you didn't tell me what i was in for here
07:10:06  * juliangruber_joined
07:11:00  <Raynos>:D
07:12:19  <Raynos>who echo bombed me.
07:12:27  <juliangruber_>given a graph with an even number of nodes, who can I assign scores to each node at t0 so that when the graph is split into two partitions of equal sizes at t1, one half always has a higher sum of scores?
07:15:06  <Raynos>...
07:15:14  * juliangruber_quit (Read error: Connection reset by peer)
07:15:26  <Raynos>substack: Can I PR shoe to use readable-stream ?
07:15:44  * juliangruber_joined
07:19:06  <rowbit>Hourly usage stats: [developer: 0, free: 27]
07:24:56  * juliangruber_quit (Quit: Colloquy for iPhone - http://colloquy.mobi)
07:31:27  <guybrush>Raynos: thx for the hint, yes i think emitStream is kind of more elegant and less complex
07:31:39  <Raynos>guybrush: or remote-events
07:31:42  <Raynos>or scuttlebutt/events
07:47:50  * juliangruber_joined
07:53:00  <Raynos>http://jeromeetienne.github.com/webglmeeting/#room-c32
07:53:03  <Raynos>that is madness
07:55:04  <guybrush>maybe i should ask in #nodejs but i like to ask here moar :D -- when i have a bundled dependency but do not include the node_modules in the bundle, npm will not install the dependencies in the bundle right?
07:55:11  <guybrush>i have to do npm update
07:56:20  <Raynos>i have no idea :D
07:56:58  <guybrush>its really not a huge problem, just tried to avoid putting another huge tree into git
07:57:52  <guybrush>which is annoying for developing somehow, but hey i will just go with it :)
07:58:05  <Raynos>well
07:58:08  <Raynos>I have node_modules in git
07:58:10  <Raynos>which is annoying
07:58:13  <Raynos>because of diffs
07:58:16  <guybrush>maybe i will start an issue and see what others think about it
07:58:31  <guybrush>for production its kind of cool
07:58:37  <guybrush>to have a diff for just everything
07:59:21  * juliangruber_quit (Quit: Colloquy for iPhone - http://colloquy.mobi)
07:59:23  <devaholic>guybrush: i think you could make a script to do that pretty easily if there isnt another way
07:59:28  <guybrush>but if i have a little something with about 100loc and a HUGE node_modules, its not cool for other developers when they quickly want to pull in
07:59:39  <devaholic>guybrush: there are hooks for npm install and stuff
07:59:47  <guybrush>well, `npm update`
07:59:52  <guybrush>does the trick anyway
08:00:24  <guybrush>it will look into bundles too and check if dependencies are installed
08:00:41  <guybrush>its just an extra command, haha :D
08:01:40  <guybrush>devaholic: i like the hook-idea :) {scripts:{install:'npm update'}} is kind of weird though
08:03:03  <guybrush>well thx for your thoughts anyway, now back to real work
08:19:06  <rowbit>Hourly usage stats: [developer: 0, free: 64]
08:22:46  <guybrush>haaa Raynos is already into webrtc :DD
08:22:57  <Raynos>im building its
08:23:31  <Raynos>guybrush: https://gist.github.com/4070724
08:24:14  <guybrush>sweet
08:25:20  <Raynos>guybrush: feedback on api is appreciated
08:25:28  <guybrush>didnt grasp the signaling stuff fully yet and who exactly ice turn stun etc works
08:25:37  <guybrush>*how
08:25:39  <Raynos>https://github.com/Raynos/peer-connection-shim/blob/master/index.js has a bunch of docs on what things do
08:25:56  <Raynos>the gist doesnt mention ice / turn / stun :D
08:26:36  <Raynos>ICE is used to negotiate a suitable way to connect between two computers as well as suitable codecs to use and shit
08:26:53  <Raynos>STUN & TURN are service you use to create a path from your machine to the internet in case you have epic proxies
08:27:21  <guybrush>so stun is for nat-stuff and turn is just a fallback when everything else fails, right?
08:27:24  <Raynos>webrtc keeps mentioning "constraints" so ICE also considers the "constraints" and negotiates a connection that works given both users "constraints"
08:27:32  <Raynos>as far as I understand yes
08:27:39  <Raynos>the more important part is that gist
08:27:43  <Raynos>because this is all technical bullshit
08:27:46  <guybrush>like turn is just tcp-fallback or something
08:27:54  <Raynos>the gist is the good stuff, its the short and simple API
08:28:02  <Raynos>TURN is basically a proxy
08:28:09  <Raynos>which is what I'll be building as part of the shim
08:28:18  * guybrushis starring this gist for later studies
08:28:49  <Raynos>I should implement peer-connection as well
08:28:55  <Raynos>should be pretty easy
08:29:20  <guybrush>does webrtc provide encryption?
08:31:19  <guybrush>also how do you make serverside webrtc-client
08:31:43  <guybrush>node-bindings for the webrtc-c++ stuff?
08:31:52  <Raynos>guybrush: you either use the same shim you would for browsers without webrtc
08:32:03  <Raynos>or you go read up on the open source webkit libraries for webrtc and bind to them in C++
08:32:09  <Raynos>or you be a crazy badass
08:32:12  <Raynos>and implement it in pure node
08:38:10  <guybrush>or just run webkit on the server :D
08:38:19  <guybrush>browsers everywhere
08:49:13  <Raynos>ok
08:49:16  <Raynos>enough code
08:52:51  <juliangruber>dominctarr, I'm playing with the idea of having something as easy to use us scuttlebutt that provides strong consistency for the operations set-add-or-fail and set-delte. you'd use this for user registration or permalinks
08:56:09  <Raynos>juliangruber: good luck with strong consistency
09:14:06  <juliangruber>Raynos, I got most covered already, just things like network failures where you can't decide if a node was removed on purpose or not make this so tricky
09:19:06  <rowbit>Hourly usage stats: [developer: 3, free: 74]
09:43:55  <guybrush>juliangruber: do you check with a ping?
09:48:53  <juliangruber>guybrush: I thought stream end/error events should be fine
09:49:06  * ITproquit (Ping timeout: 240 seconds)
09:49:47  <guybrush>mh i am not sure about that, everywhere i looked in that sort of implementation it has been done with ping
09:50:12  <guybrush>like upnode, redis-sentinel and some other stuff i looked
09:50:19  <guybrush>but i am not sure :p
09:50:39  <guybrush>also i tried something like seaport myself (pylon)
09:51:02  <guybrush>have it even running in production though its really not so cool :p
09:51:11  <juliangruber>cool!
09:51:12  <guybrush>anyway i had some strange issues without pinging
09:51:16  <juliangruber>does your seaport use pings?
09:51:21  <juliangruber>ah\
09:51:45  <guybrush>like.. some apps crashed or something and i was not able to catch the errors, somehow
09:51:57  <juliangruber>substack: how does see node monitor services' health
09:52:09  <juliangruber>substack: i meant seaport
09:52:31  <guybrush>seaport uses scuttlebutt now
09:52:37  <juliangruber>so I'll try pings also
09:52:54  <juliangruber>the hard thing is going without a master node
09:52:59  <guybrush>pings are really easy to implement, so i did it just to be save haha :D
09:53:17  <juliangruber>because imagine a node of 2 clusters and the connection breaks
09:53:30  <juliangruber>would it be because one node was shut down and the other can continue
09:53:46  <juliangruber>or should only one node continue while the other stays in idle mode?
09:53:47  <guybrush>yeah my pylon thing works with volatile storages everywhere, and everything subscribes each other
09:53:59  <guybrush>so master and nodes can die on the fly without problem
09:54:55  <guybrush>but i am not happy with how i implemented it :P nssocket is just a pita, will try to rewrite it with streams some time in the future
09:55:23  <guybrush>or maybe just use seaport
09:55:40  <juliangruber>then you loose the flexibility of being able to just do nodeA.pipe(nodeB).pipe(nodeC)
09:55:49  <juliangruber>how do you do node discovery?
09:56:07  <guybrush>every node connects/reconnects to the master
09:56:14  <juliangruber>ah
09:56:17  <guybrush>every node can subscribe/query the master
09:56:34  <juliangruber>i want to avoid that, use just the scuttlebutt/model api
09:56:35  <guybrush>and every node has a volatile storage
09:57:04  <guybrush>yeah scuttlebutt sounds like a real cool thing, though i dont like to use code i fully understand
09:57:15  <guybrush>so i would have to really look into it first :p
09:57:49  <juliangruber>there is a good paper about it, it is easy to read
09:58:06  <juliangruber>http://www.cs.cornell.edu/home/rvr/papers/flowgossip.pdf
09:58:08  <guybrush>ye i have it already in my todo-directory haha
09:58:13  <guybrush>didnt read it yet
09:58:14  <juliangruber>khihi
09:58:17  <juliangruber>cool
09:58:28  <guybrush>theres quite a lot things in the todo-dir
09:59:05  <guybrush>also i have like 20apps in production with my thing now, so i will just go with that for now anyway
09:59:35  <guybrush>but will def look into scuttle!
09:59:52  <juliangruber>seaport now uses scuttlebutt for replication too
10:00:14  <guybrush>yes i think substack is using it even in production already
10:03:19  <guybrush>anyway for something like strong consistency scuttlebutt is not the right tool? again i dont fully understand it yet
10:17:27  <juliangruber>nope, scuttlebutt is for eventual consistency
10:17:48  <juliangruber>but you can use it keep an array of known nodes in the cluster
10:19:06  <rowbit>Hourly usage stats: [developer: 0, free: 45]
10:19:42  <Raynos>juliangruber: I want that module
10:19:52  <Raynos>a single module that keeps a list of all known nodes in a cluster
10:19:59  <Raynos>including any meta data they assign to themself
10:20:10  <Raynos>and it handles node disconnecting cleanly
10:25:47  * shuaibquit (Quit: Textual IRC Client: http://www.textualapp.com/)
10:28:08  <juliangruber>Raynos: will do! :)
10:28:33  <Raynos>juliangruber: Also write a synchronized vector clock!
10:29:03  <juliangruber>Raynos: yap, can do that too
10:31:13  <juliangruber>should that cluster node module use scuttlebutt or should it be build in a way that scuttlebutt can use that
10:31:54  <Raynos>I think its reasonable for a list of known nodes to use a scuttlebutt document to replicate that list
10:32:28  <Raynos>the usage in my mind is to have a static IP server the scuttlebutt document
10:32:35  <Raynos>and everyone connects to it and replicates it
10:32:42  <Raynos>and by replicating the put themself in the list of nodes
10:32:46  <Raynos>along with any meta data
10:32:55  <Raynos>and probably update a keep alive every x seconds
10:33:08  <Raynos>and everyone else purges any nodes that that are old in terms of their keep alive
10:33:14  <Raynos>doing this would probably require a vector clock
10:33:17  <Raynos>thats syncrhonized
10:33:34  <Raynos>ideally the vector clock doesnt rely on scuttlebutt
10:33:40  <Raynos>but is something that scuttlebutt could use
10:33:59  <Raynos>actually just updating scuttlebutt to use a vector clock instead of timestamps should work
10:46:26  <juliangruber>Raynos: keep a list of nodes so you don't need seaport for routing?
10:53:25  * jibayjoined
11:19:06  <rowbit>Hourly usage stats: [developer: 1, free: 40]
11:23:12  * devaholicquit (Ping timeout: 252 seconds)
11:27:57  * devendramquit (Ping timeout: 245 seconds)
12:19:06  <rowbit>Daily usage stats: [developer: 14, free: 677]
12:19:07  <rowbit>Hourly usage stats: [developer: 0, free: 63]
13:15:12  * ITprojoined
13:19:06  <rowbit>Hourly usage stats: [developer: 2, free: 93]
14:00:37  <tanepiper>anyone know if there is a way to get browserified code to work in jasmine tests?
14:18:50  <juliangruber>tanepiper: what doesn't work?
14:19:05  <juliangruber>include the bundle and require
14:19:06  <rowbit>Hourly usage stats: [developer: 0, free: 46]
14:56:19  <tanepiper>juliangruber: yea, i get 'ReferenceError: Can't find variable: require'
14:57:00  <tanepiper>it's not node code, it;s client side as well
14:58:32  * jibayquit (Ping timeout: 255 seconds)
14:59:30  <tanepiper>(that is, i'm testing it with phantom)
15:00:35  <juliangruber>tanepiper: is your bundle included? did you minify?
15:11:52  * defunctzombiejoined
15:19:06  <rowbit>Hourly usage stats: [developer: 2, free: 53]
15:20:06  * defunctzombiequit (Ping timeout: 240 seconds)
15:43:04  <tanepiper>juliangruber: yea, but never mind i'm going to try something different anyway
16:00:00  * wiwilliajoined
16:05:49  * _sorensenjoined
16:09:29  * defunctzombiejoined
16:15:15  * st_luke_joined
16:19:06  <rowbit>Hourly usage stats: [developer: 1, free: 31]
16:25:06  * dominictarrjoined
16:35:47  * st_luke_quit (Remote host closed the connection)
16:36:45  * st_luke_joined
16:37:06  * shuaibjoined
16:39:34  * xaqjoined
16:40:07  * AvianFlujoined
16:40:07  * st_luke_quit (Read error: Connection reset by peer)
16:40:23  * st_luke_joined
16:53:23  * zz_shykeschanged nick to shykes
17:01:58  <substack>haha airbnb thinks I'm german
17:02:08  <substack>since I made my account while in berlin
17:02:31  * st_luke_quit (Remote host closed the connection)
17:04:09  <substack>pow booked
17:04:16  <substack>well waiting for the response anyways
17:07:47  <mbalho>substack: where ya goin?
17:09:02  <substack>mbalho: tokyo
17:09:29  <mbalho>OOH for a conf?
17:09:35  <substack>nodefest
17:09:37  <substack>.jp
17:09:40  <mbalho>oh yea
17:17:25  * defunctzombiequit (Remote host closed the connection)
17:19:06  <rowbit>Hourly usage stats: [developer: 2, free: 64]
17:25:05  * xaqquit (Remote host closed the connection)
17:39:44  * AvianFluquit (Remote host closed the connection)
17:48:08  * xaqjoined
17:49:35  * xaqquit (Remote host closed the connection)
18:17:52  * defunctzombiejoined
18:19:06  <rowbit>Hourly usage stats: [developer: 1, free: 79]
18:21:54  * yorickjoined
18:21:54  * yorickquit (Changing host)
18:21:55  * yorickjoined
18:22:54  * defunctzombiequit (Ping timeout: 276 seconds)
18:28:53  * AvianFlujoined
18:35:25  * tphummeljoined
18:49:46  <fotoverite>Nodefest is going to be so awesome for you guys
18:50:03  <fotoverite>Enjoy karoking with Jed
18:54:09  * defunctzombiejoined
18:55:44  <Raynos>juliangruber: keep a list of nodes so I connect to them https://gist.github.com/4070724
18:55:56  <Raynos>With a p2p connection mechanism you need a list of nodes
19:09:06  <guybrush>oh Raynos did you see https://github.com/jed/domogenize yet? modular style-stuff thing
19:11:42  <CoverSlide|TPFR>mancomb seepgood?
19:14:36  <Raynos>guybrush: domo is bullshit
19:16:16  <CoverSlide|TPFR>hmm looks like hiccup for clojure
19:17:11  * fotoveritequit (Quit: fotoverite)
19:17:23  <CoverSlide|TPFR>I applaud the effort though
19:17:40  <Raynos>although i may be tempted to use dom
19:17:41  <CoverSlide|TPFR>building dom nodes the right way is a pain.
19:17:45  <Raynos>since it works on both server & client
19:18:05  <CoverSlide|TPFR>nice mad science experiment
19:19:06  <rowbit>Hourly usage stats: [developer: 0, free: 43]
19:28:57  * xaqjoined
19:33:37  * xaqquit (Remote host closed the connection)
19:45:22  <jjjjohnnny>Raynos: have you implement p2p in the browser outside of webRTC?
19:45:39  <Raynos>jjjjohnny: You can't
19:45:45  <Raynos>The best you can do is emulate p2p using a proxy
19:45:51  <Raynos>That's what I'm implementing
19:45:54  <Raynos>Actually re-implementing
19:46:05  <Raynos>https://github.com/Raynos/discovery-network already implements emulated p2p
19:46:09  <Raynos>just has far shitter API
19:46:32  <jjjjohnnny>a proxy for the connection or a proxy for the STUN?
19:47:30  <Raynos>proxy for peer connection
19:47:53  <jjjjohnnny>have you successfully NAT punched with node ever
19:47:54  <jjjjohnnny>?
19:48:16  <Raynos>Nope.
19:48:34  <Raynos>I havn't tried anything using STUN, TURN, ICE or SDP
19:49:13  <Raynos>but I do want to emulate RTCPeerConnection
19:49:14  <jjjjohnnny>cuz you can get the actual "public" ip address with the dns module dns.reverse(req.connection.remoteAddress)
19:49:19  <Raynos>so that I can start building abstractions on top of it
19:49:21  * xaqjoined
19:49:45  <jjjjohnnny>cuz you can get the actual "public" ip address with the dns module dns.reverse(req.connection.remoteAddress, cb(err, domains))
19:50:14  <jjjjohnnny>but I don't understand what one does to coordinate the peers to trick the NATS into letting connections in
19:51:10  <jjjjohnnny>there is that bitTorrent client plugin for browsers tho...
19:52:36  * mike-djoined
19:53:15  <mbalho>its npapi right
19:53:32  <mbalho>jjjjohnnny: do you know how STUN works
19:53:53  <mbalho>jjjjohnnny: 80% of routers (roughly) leave ports open that have recently been used to send data out
19:54:00  <jjjjohnnny>no
19:54:09  <mbalho>jjjjohnnny: so you send a package out through some port, tell a public server on the internets what port it was and what your ip is
19:54:17  <mbalho>jjjjohnnny: and then some other dood sends data into you through that port
19:55:15  <jjjjohnnny>mbalho: but the ISP will block incoming connections from IP address that don't match the outgoing one
19:55:29  <jjjjohnnny>so what STUN does (I think) is coordinate that
19:55:50  <jjjjohnnny>user A: send a request to user B's IP; user B send one to A at the exact same time
19:55:51  <st_luke>jjjjohnnny: lots of ISPs don't block those
19:57:59  <jjjjohnnny>well then is shoul dbe easy to implement p2p but why isn't it?
19:58:16  <jjjjohnnny>does it only work with UDP?
19:58:55  <jjjjohnnny>its pretty insecure for ISPs or even your router to allow incoming connection requests from strangers
19:59:24  <jjjjohnnny>which is why we all need a public ipv6 address and just choose who the hell we want to recieve packets from
20:00:56  <jjjjohnnny>w/e the browser will have RTC data or some other hack available to us after some waiting period *twiddles thumbs*
20:01:46  * shykeschanged nick to zz_shykes
20:02:15  <jjjjohnnny>its a race between webRTC data or web Audio API createMediatStreamDestination(), either one and we have p2p data
20:02:54  <mbalho>webrtc is gonna rely on stun
20:03:11  * xaqquit (Remote host closed the connection)
20:03:11  <mbalho>according to http://www.youtube.com/watch?v=mYQNEaOfqGI&feature=plcp
20:03:26  <mbalho>16 mins in
20:03:32  <jjjjohnnny>both options use webRTC (ypu can pipe the audio through the Audio API and do arbitrary data writes to the stream)
20:04:09  <jjjjohnnny>STUN is only the handshaker, as I understand it
20:04:23  * indutnyjoined
20:04:25  <indutny>sup?
20:04:31  <jjjjohnnny>i'll have to watch the video later
20:04:44  <indutny>why do you need STUN
20:04:49  <indutny>it's so fucking retarded
20:04:53  <indutny>I think noone is really using it
20:05:07  * version2betajoined
20:05:07  <mbalho>were talking about webrtc
20:05:08  <jjjjohnnny>you have to handshake between peers somehow
20:05:12  <mbalho>and how it is going to get browsers to talk to each other
20:05:20  <indutny>ah, ok
20:05:24  <indutny>I think it's using libjingle
20:05:37  <indutny>https://developers.google.com/talk/libjingle/
20:05:47  <mbalho>the most up to date info i've seen on webrtc and p2p is this http://www.youtube.com/watch?v=mYQNEaOfqGI&feature=plcp&t=16m0s
20:05:50  <jjjjohnnny>see #3 https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/webrtc-integration.html
20:06:01  <indutny>it's all about jingle
20:06:02  <indutny>really :)
20:06:05  <indutny>look at chrome's source
20:06:43  <mbalho>jjjjohnnny: thats just the peerconnection api
20:07:07  <jjjjohnnny>the webRTC constructor returns the perrConnection
20:07:47  <jjjjohnnny>you pass it any "mediaStream", but right now you can only use getUserMedia streams
20:08:16  <mbalho>i think the guy said peerconnection is landing in chrome in the next 6 mos
20:10:22  <jjjjohnnny>mbalho: http://something-clever.nko3.jit.su/
20:11:23  <mbalho>hah
20:12:13  <jjjjohnnny>:D
20:13:00  <jjjjohnnny>its not workin perfect but its a controller to make peers switch their peerconnection
20:15:58  <jjjjohnnny>demo time
20:19:06  <rowbit>Hourly usage stats: [developer: 3, free: 40]
20:29:30  <pkrumins>yo indutny
20:39:27  <AvianFlu>YEAH. I BET.
20:40:15  * fotoveritejoined
20:40:40  <mbalho>ive never been to denver, robot
20:42:28  * version2betapart ("Leaving")
20:42:34  * fotoveritequit (Client Quit)
20:43:13  * fotoveritejoined
20:43:30  <fotoverite>Can anybody tell me why irc.efnet.net is blocked at SFO?
20:43:40  <fotoverite>Really strange that this is what they spend their firewall on
20:46:09  <AvianFlu>fotoverite: botnets
20:46:13  <AvianFlu>RIGHT LOUDBOT?
20:46:46  <AvianFlu>also fotoverite, if you've got a random vps somewhere, you can make an IRC proxy in about 6 lines of code
20:47:12  <pkrumins>fotoverite: are you going to japan too?
20:47:29  <mbalho>fotoverite: they probably just block the irc port
20:47:33  <fotoverite>leave in fifteen not worth the effort. THough could do it.
20:47:50  <fotoverite>Well no, since they didn't block freenode
20:47:57  <mbalho>ah weird
20:48:11  <fotoverite>talking right now in sfo
20:48:34  <mbalho>fotoverite: i ended up getting a cold right after we hung out
20:48:42  <fotoverite>:(
20:48:44  <mbalho>fotoverite: and spent all day yesterday sleeping
20:48:48  <fotoverite>Sorry to hear that
20:48:54  <fotoverite>I'm feeling a little bad myself
20:48:57  <fotoverite>Too much flying
20:49:02  <mbalho>yea i think i had the same
20:50:20  <fotoverite>glad to see you are feeling better
20:54:05  * ikpart
20:56:32  * ikjoined
20:56:35  <ik>pkrumins hi pkrumins
20:57:09  <pkrumins>hello
20:58:13  <AvianFlu>fotoverite: efnet is a massively larger IRC network than freenode
20:58:45  <fotoverite>It's only recently my company started using it to host a chatroom
20:58:50  <fotoverite>Thank fucking god we really need that.
21:05:49  <Raynos>jjjohnnny: How does createMediaStreamDestination work?
21:06:36  <Raynos>mbalho: peer connection landed in chrome 23. No data channels
21:06:53  <Raynos>substack: wizard-game idea
21:06:58  <Raynos>what if we build a "standard" client
21:07:03  <Raynos>but anyone can build any front end they want
21:07:05  <Raynos>any UI
21:07:09  <Raynos>any bot
21:07:17  <Raynos>any whatever, just connect to scuttlebutt
21:07:37  <Raynos>substack: Imagine taking the scuttlebutt state and "interpreting" the chances as a platforming / jumping puzzle game or something
21:14:54  <ik>wooh
21:16:12  <Raynos>MMOANYTHING
21:16:13  * fotoveritequit (Quit: fotoverite)
21:16:28  <Raynos>you can connect with whatever client you want, RPG, FPS, RTS, my little pony game and all play together
21:19:06  <rowbit>Hourly usage stats: [developer: 7, free: 54]
21:29:30  * fotoveritejoined
21:37:45  * st_luke_joined
21:42:25  * fotoveritequit (Quit: fotoverite)
21:45:35  <defunctzombie>substack: make any headway on your browserify thoughts?
21:47:28  * st_luke_quit (Remote host closed the connection)
21:51:19  * xaqjoined
22:01:10  <indutny>pkrumins: yoyoyo
22:01:10  * xaqquit (Remote host closed the connection)
22:19:06  <rowbit>Hourly usage stats: [developer: 0, free: 33]
22:21:13  <AvianFlu>LOUDBOT: twitlast
22:21:14  <LOUDBOT>http://twitter.com/loudbot/status/269203430680182784
22:26:14  * substackairporting it up
22:36:03  <substack>downloading a japanese dictionary from apt
22:38:15  <substack>edict and xjdic look promising
22:45:26  <substack>fuck these files aren't in utf8
22:46:30  <substack>looks like some utf7 bullshit
22:46:52  <CoverSlide|TPFR>craziness
22:48:45  * AvianFluquit (Remote host closed the connection)
22:53:16  * zz_shykeschanged nick to shykes
22:53:47  * wiwilliaquit (Ping timeout: 260 seconds)
22:53:52  * devaholicjoined
23:19:06  <rowbit>Hourly usage stats: [free: 23]
23:29:07  * indutnypart
23:36:11  <mbalho>substack: yer leavin for the japans!?
23:45:48  * AvianFlujoined
23:51:28  * yorickquit (Remote host closed the connection)