00:00:50  <dominictarr>Raynos, really? something really has to impress me before I will read it's code.
00:01:06  <Raynos>I want an implementation of mikeal/request
00:01:09  <Raynos>that works in the browser
00:01:15  <dominictarr>If I'm actually reading code in the evaluation stage I could just about write it my self
00:01:17  <Raynos>im using this bullshit xhr library I wrote but its bullshit
00:01:32  <dominictarr>Raynos, use request<2
00:01:49  <dominictarr>[email protected] works
00:02:11  <dominictarr>after that it has mime which uses fs.readFileSync
00:02:34  <dominictarr>alternatively, patch mime to store it's data in json and use require to load it.
00:02:53  <Raynos>dominictarr: http-browserify doesn't support cors
00:03:05  <dominictarr>oh
00:03:11  <Raynos>ill just use https://github.com/iriscouch/browser-request
00:03:23  <dominictarr>but isn't it just a header?
00:03:29  <Raynos>nope
00:03:36  <Raynos>cors requires setting `xhr.withCredentials = true`
00:03:37  <dominictarr>it should be
00:03:43  <Raynos>and also requires using `XDomainRequest` in IE
00:03:52  <dominictarr>groan
00:03:57  <Raynos>I mean most of CORS is a header
00:04:08  <Raynos>but you need to opt into sending cookies over CORS by doing xhr.withCredentials = true
00:04:12  <Raynos>otherwise it doesnt send cookies
00:04:41  <dominictarr>what we need is to throw out browsers and all run smartos and each website is implemented in node inside a smartos zone.
00:04:48  <Raynos>:D
00:05:24  <dominictarr>a whole goddamn PaaS on every client.
00:06:05  <dominictarr>you could even use git pull to update code
00:06:34  <dominictarr>and run whatever arbitary code you want
00:06:43  <dominictarr>even write it in assembly
00:07:21  <dominictarr>basically... the web is just a really shitty version of that...
00:08:06  <dominictarr>substack, can I write testling tests with just require('assert')?
00:08:44  <dominictarr>do I need require('testling')
00:18:50  <substack>dominictarr: with the new testling-ci yes
00:19:11  <substack>since it just looks at tap in console.log output
00:19:20  <substack>so I'll just shim out all the basic asserts
00:20:29  <dominictarr>substack, okay, so I see all this curl stuff, but I'd rather just install a command and run it.
00:20:40  <dominictarr>testling test.js ?
00:21:06  <substack>testling is pivoting right now
00:21:20  <chrisdickinson>(also, XDomainRequest will never send cookies / let you set headers) ): ):
00:21:21  <dominictarr>so, no worky?
00:21:40  <substack>it's just that we're changing over to the console.log() tap model instead of using a custom api
00:22:24  <chrisdickinson>(also if you make new xhr objects in IE8 continuously it'll crash the browser as IE8 won't ever GC xhr objects)
00:22:42  <dominictarr>testling test.js --browsers=testling/chrome/14.0
00:22:50  <dominictarr>but it seems to run it locally
00:23:51  <substack>dominictarr: testling.
00:24:04  <substack>s/\//\./
00:24:17  <substack>erm s/\//./
00:24:24  <substack>but not /g, keep the second /
00:27:56  <rowbit>Hourly usage stats: [developer: 0, free: 51]
00:33:07  <dominictarr>okay, it's working now.. but how do I make it run the test on testling.com?
00:34:03  <substack>--browsers=testling.chrome/14.0
00:34:55  <substack>dominictarr: this cafe in fruitvale is sweet, you'll have to stop by
00:35:10  <substack>they have these: https://en.wikipedia.org/wiki/Beignet
00:35:26  <substack>right next to fruitvale bart
00:35:50  <substack>like I can see the ticket machines, they're 20m away
00:35:58  <dominictarr>looks good
00:36:18  <dominictarr>I'll be in town on wednesday morning
00:36:25  <substack>oh sweet!
00:36:30  <substack>I leave wednesday at 3pm
00:36:37  <substack>no wait!
00:36:38  <substack>thursday
00:36:39  <substack>oh cool
00:36:41  <dominictarr>arrive at SFO 7:35 am (eek!)
00:36:44  <substack>yow
00:36:52  <substack>well that's good, the bart will be running
00:37:21  <dominictarr>lucky I'm staying near the airport currently
00:37:43  <dominictarr>in sleazy motel, and never leaving my room, like I am on the run.
00:37:47  <substack>haha
00:38:02  <substack>yeah sea-tac is a pretty sleazy area all-around
00:38:12  <substack>tacoma is actually pretty cool in the downtown area though
00:38:13  <dominictarr>(America: As seen on TV)
00:38:44  <substack>puget sound is hyper suburbia
00:39:05  <substack>well the west side of it is really cool
00:39:09  <substack>bremerton and kingston
00:41:34  <substack>my AR drone is in Radefeld, Germany still
00:41:51  <substack>hopefully it will get in before I get back from japan
00:43:58  <dominictarr>my ar-drone is coming to your house too
00:44:12  <substack>hooray!
00:48:54  <dominictarr>substack, how do I know if a testling test has really run in that browser? there is no browsers mentioned in the output
00:49:39  <substack>you could t.log(window.navigator.userAgent)
00:49:48  <dominictarr>do I have to use a ssh tunnel?
00:50:11  <substack>only if you test your localhost code with t.createWindow
00:52:19  <dominictarr>I go:
00:52:22  <dominictarr>testling test.js \
00:52:22  <dominictarr>> --browsers=iexplore/7.0,iexplore/8.0,firefox/3.5
00:52:23  <dominictarr>ok ./test.js ............................................ 2/2
00:52:23  <dominictarr>total ................................................... 2/2
00:52:34  <dominictarr>but that isn't what it looks like in the docs
00:52:44  <dominictarr>that looks like a local test
00:52:55  <substack>s/iexplore/testling.iexplore/g
00:52:58  <substack>does that work?
00:53:30  <dominictarr>testling test.js --browsers=testling.iexplore/7.0,testling.iexplore/8.0,testling.firefox/3.5
00:53:30  <dominictarr>ok ./test.js ............................................ 6/6
00:53:30  <dominictarr>total ................................................... 6/6
00:53:30  <dominictarr>ok
00:53:36  <substack>oh crap what is going on hmmm
00:53:53  <substack>try --browser
00:54:37  <dominictarr> testling test.js --browser=testling.iexplore/7.0,testling.iexplore/8.0,testling.firefox/3.5
00:54:37  <dominictarr>Expressions in require() statements:
00:54:37  <dominictarr> require(opts.protocol)
00:54:37  <dominictarr>Tunnel not running. Do `testling tunnel` to start an ssh tunnel first.
00:55:28  <dominictarr>testling tunnel
00:55:28  <dominictarr>{ [Error: ENOENT, open '/home/dominic/.nave/installed/0.8.8/lib/node_modules/testling/lib/testling/config/auth.js']
00:55:28  <dominictarr> errno: 34,
00:55:28  <dominictarr> code: 'ENOENT',
00:55:28  <dominictarr> path: '/home/dominic/.nave/installed/0.8.8/lib/node_modules/testling/lib/testling/config/auth.js' }
00:55:51  <dominictarr>this is just a simple test that shouldn't need a tunnel, either way.
00:56:18  <substack>hmmm
00:56:33  <substack>oh the tunnel is actually necessary
00:56:49  <substack>since you run the http server locally
00:57:34  <dominictarr>there in no server in this test
00:57:44  <substack>there is a server in all tests
00:57:50  <dominictarr>oh, okay
00:57:54  <substack>it hosts the web server for the browsers to load
00:57:59  <dominictarr>so, I need to signup?
00:58:16  <substack>to user the remote browsers yeah
00:58:37  <substack>or you can run your test with curl
00:58:48  <substack>then you won't need tunnels
00:59:33  <substack>I'm revamping everything
00:59:39  <substack>because it's kind of a mess right now
01:00:19  <dominictarr>I tried
01:00:23  <dominictarr> tar -cf- test.js mstring.js | curl -sSNT- testling.com/?browsers=iexplore/9.0,chrome/13.0
01:00:38  <dominictarr>but it just seems to hang
01:01:02  <substack>what if you put a t.log() at the start of your test?
01:02:12  <dominictarr>still nothing
01:02:26  <substack>try &noinstrument
01:03:55  * jibayquit (Quit: Leaving)
01:07:07  <dominictarr>hang on
01:07:09  <dominictarr>tar -cf- test.js mstring.js | curl -sSNT- 'testling.com/?browsers=iexplore/9.0,chrome/13.0&noinstrument' -v
01:07:10  <dominictarr>* About to connect() to testling.com port 80 (#0)
01:07:10  <dominictarr>* Trying connected
01:07:10  <dominictarr>> PUT /?browsers=iexplore/9.0,chrome/13.0&noinstrument HTTP/1.1
01:07:10  <dominictarr>> User-Agent: curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/ libidn/1.23 librtmp/2.3
01:07:12  <dominictarr>> Host: testling.com
01:07:14  <dominictarr>> Accept: */*
01:07:16  <dominictarr>> Transfer-Encoding: chunked
01:07:18  <dominictarr>> Expect: 100-continue
01:07:20  <dominictarr>>
01:07:22  <dominictarr>< HTTP/1.1 100 Continue
01:07:24  <dominictarr>} [data not shown]
01:08:03  * _sorensenquit (Ping timeout: 245 seconds)
01:08:05  <substack>tar is broken sometimes still :/
01:08:12  <substack>on our end
01:09:20  <st_luke>exchange is evil
01:09:36  <substack>fact
01:09:43  <substack>dominictarr: actually oh shit, seems that testling is down
01:10:09  <dominictarr>st_luke, exchange as in barter?
01:10:18  <st_luke>dominictarr: the software
01:11:00  <dominictarr>funny how email is sooooo complex
01:11:08  <st_luke>it's unfortunately more than that
01:11:10  <substack>dominictarr: http://craphound.com/complexecosystems.txt
01:11:18  <substack>did you just read this one again too?
01:11:19  <st_luke>on certain operating systems, setting up an exchange account allows the server total administrative control over the system
01:11:28  <substack>oh wait haha
01:11:31  <substack>anyways it's apropos
01:12:17  <substack>st_luke: when you don't have minimalism deeply engrained into your aesthetic sense there is no upper bound on insanity
01:12:37  <substack>besides fundamental physical constraints
01:12:57  <substack>but as big companies show, if you throw hundreds of developers at these things, they can be made to work
01:13:10  <substack>as unpleasant as that is for everyone
01:13:23  <dominictarr>I read a suggestion for cryptographically marking email with a proof of work
01:13:32  <substack>st_luke: so my strategy with this stuff is to attack big software at the supply side
01:13:44  <dominictarr>so, that it's not worth the effort to spam
01:13:54  <substack>show developers how excellent software can be and they won't be able to bring themselves to work on these giant monoliths
01:14:32  <substack>dominictarr: bayesian filters are so good now though
01:14:44  <substack>that was the solution to spam
01:14:52  <substack>they still weren't very popular in 2005
01:15:13  <substack>the solution was to publicize something that worked really well and could be done very simply and cheaply
01:17:00  <st_luke>I'm considering hosting my own email but I don't want to deal with the trouble of having a critical communication point go down or be unreachable
01:17:32  <st_luke>there needs to be a solution to that type of thing so people can be free of wondering their keeper is doing with their messages
01:18:20  <st_luke>anything that requires the government to go through 'appropriate' legal channels in order to get their hands on something that doesn't belong to them is a good thing
01:18:31  <substack>distributed cryptographically secure mesh relay
01:18:57  <substack>instead of an email address, you send messages to a public key
01:19:37  <substack>email is basically just a giant manually-curated hashring
01:19:55  <st_luke>people should just send me an email by using my public key to encrypt the message then putting the message in a gist
01:20:01  <substack>where people decide which server they end up on instead of algorithms
01:20:24  <substack>with such a system, it wouldn't even matter which stream you use
01:20:29  <st_luke>exactly
01:20:33  <substack>gists, twitter, google+
01:20:40  <substack>so long as it's the same protocol, you can communicate
01:20:41  <substack>also
01:20:46  <substack>you could basically do that with secure-peer
01:20:47  <st_luke>gist is just the most convenient I can think of
01:20:49  <substack>like right now
01:21:02  <substack>it's all printable ascii text already even
01:21:11  <substack>base64 encoded with json for decoration
01:21:37  <fotoverite>This is all very true but you would have to mutate the output to be more usable for threads
01:22:41  <substack>fotoverite: http://en.wikipedia.org/wiki/Diffie-Hellman#Operation_with_more_than_two_parties
01:23:30  <fotoverite>I meant more that gists aren't great for threads not that the algorithm is problematic.
01:23:38  <st_luke>I've been pondering the idea of some sort of distributed system that allows residents of oppressive countries to access and post whistleblower-type information. something that can't be blocked by a government firewall but that is also is easy to use and interact with so there's no technical barrier for the average person.
01:24:05  <substack>st_luke: all countries are oppressive in various different ways
01:25:02  <substack>you'd need to worry about masking the signature of the requests
01:25:50  <substack>and you'd need a way to communicate with nodes on the network in a distributed way where the nodes can't be identified
01:25:59  <st_luke>substack: that's what I was thinking
01:26:14  <st_luke>substack: and ideally it would be easy for someone to deploy on a new server with a little bit of technical knowledge
01:26:21  <dominictarr>st_luke, DHT
01:26:24  <substack>otherwise a government could just figure out what the endpoints are and go and arrest anybody who tries to connect to the endpoints
01:26:26  <dominictarr>use a DHT
01:26:48  <dominictarr>everyone who is running a server can share output
01:26:55  <substack>st_luke: ssh on commodity hosting providers
01:27:19  <dominictarr>basically, hash(destkey) -> determins the server(s) to replicate the message to
01:27:29  <substack>you can't break ssh without killing permanently your domestic IT industry
01:27:56  <rowbit>Hourly usage stats: [developer: 0, free: 104]
01:28:00  <dominictarr>then the other end pulls from that node
01:28:03  <substack>st_luke: get mozilla to operate a relay on mozilla.org over https
01:28:22  <substack>get things that would be too painful to turn off to route this traffic
01:28:31  <substack>but china would just block those anyways
01:28:54  <st_luke>how are people getting around the firewall in china? tunneling http over ssh?
01:28:55  <substack>the problem is the IP layer
01:29:01  <substack>it's not anonymous
01:29:09  <dominictarr>agree
01:29:18  <substack>st_luke: vpns are really common
01:29:29  <substack>I even saw billboards advertising vpns
01:29:48  <substack>ssh tunnels are not well-known even among developers there
01:30:09  <substack>but that's what all the non-china based folks were using to route their traffic through
01:30:56  <substack>st_luke: one of the hackers I met in china hops in #stackvm sometimes
01:31:21  <substack>jiang-plus
01:31:53  <substack>he was just online earlier today in fact
01:32:07  <dominictarr>st_luke, also, wiki leaks does that. it's designed so that they don't even know who sent the leak.
01:32:12  <substack>building a worldwide network of collaborators :D
01:32:55  <substack>dominictarr: the traffic still goes through wikileaks addresses and even if you use tor the entry points are all known
01:33:14  <st_luke>dominictarr: wikileaks has public representatives don't they
01:33:18  <dominictarr>true,
01:33:28  <dominictarr>it's curated on their side.
01:33:30  <substack>I think whatever trick webrtc uses might help here
01:33:32  <substack>oh!
01:33:34  <substack>ok
01:33:36  <substack>I've got it
01:33:57  <substack>make webrtc connections that are indistinguishable from video chat
01:34:01  <substack>but are bulk uploads
01:34:18  <substack>with junk data coming down from the other side so it looks symmetric
01:34:24  <st_luke>yes
01:34:44  <substack>and the other end forwards the data to the leak site
01:34:59  <substack>just with people's browsers who go to a website in worker mode
01:35:16  <substack>and then the leak side sends back to the rtc browser encrypted acknowledgement packets
01:35:21  <substack>signed with its private key
01:35:35  <substack>so all you need is the public leak site key
01:35:43  <st_luke>substack: that's good
01:35:44  <substack>but this network shouldn't just be for leaks
01:36:03  <substack>it should be for something more innocuous like p2p downloading
01:36:15  <dominictarr>substack, http://en.wikipedia.org/wiki/Steganography
01:36:15  <substack>something that governments like china and iran don't give a shit about
01:37:05  <substack>what we really need is to make an anonymous encrypted p2p file sharing network
01:37:13  <substack>that is only about file sharing to give cover for its real purpose
01:37:28  <st_luke>I'm going to go for a walk around the financial district and think about this
01:37:45  <substack>global secure peer to peer public-key communication
01:37:51  <substack>over webrtc
01:38:29  * substackbikes back
01:38:32  <substack>online in a bit
01:38:39  <substack>battery is almost done
01:40:45  <dominictarr>going for eats.
01:45:42  * thatguydanquit (Quit: thatguydan)
01:55:04  * substackback
02:05:22  * fotoveritequit (Quit: fotoverite)
02:06:05  * st_lukequit
02:14:12  * tilgoviquit (Ping timeout: 248 seconds)
02:15:58  * tomshredsquit (Ping timeout: 272 seconds)
02:23:59  * shykeschanged nick to zz_shykes
02:27:56  <rowbit>Hourly usage stats: [developer: 0, free: 24]
02:30:31  * thatguydanjoined
02:58:56  * zz_shykeschanged nick to shykes
03:07:00  <substack>dominictarr: I might get a proper jitsu account just so I can hack their net.Server.listen hack to explicitly expose ports
03:07:11  <substack>I bet I can turn off a lot of the magic with some user-level hackery too
03:07:27  <substack>forking jitsu
03:14:14  <dominictarr>substack, it's all open source,
03:14:24  <dominictarr>so you can just read haibu, and carapace.
03:15:23  <substack>yep
03:15:44  <substack>perhaps I'll build a paas inside a paas
03:16:04  <dominictarr>yes do that
03:16:10  <dominictarr>and have git push
03:16:13  <substack>haha yes
03:16:32  <substack>that would have been a good nko entry
03:16:50  <dominictarr>yeah, just deploy a net proxy that starts the real app inside itself.
03:16:59  <substack>haha
03:18:31  <dominictarr>just check if the first line is POST /NEWAPP
03:18:49  <dominictarr>oh, hang on... not sure if you can do fs stuff anymore
03:18:59  <substack>fs stuff?
03:19:09  <dominictarr>like write to disk
03:19:15  <dominictarr>I think read is okay
03:19:27  <dominictarr>but you could just deploy bfy bundles
03:19:47  <substack>can you write to existing files?
03:19:55  <dominictarr>hmm, try and see
03:27:57  <rowbit>Hourly usage stats: [developer: 4, free: 36]
03:55:24  <jjjohnnny>news flash the net module uses the cluster module
03:56:04  <dominictarr>hmm...
03:56:16  <dominictarr>so that lets you pass a fd to another process
03:56:40  <dominictarr>maybe you can just grab the fd and do something else with it?
03:58:36  * ITproquit (Ping timeout: 245 seconds)
03:59:14  <substack>but you don't need to pass the fd
03:59:18  <substack>you just pass an integer
03:59:57  <substack>and the cluster module has all kinds of machinery to set up stdin for sending integers around
04:00:07  <substack>needlessly complicated machinery
04:00:21  <substack>urge to write troll module rising
04:02:44  * tphummelquit (Quit: tphummel)
04:27:56  <rowbit>Hourly usage stats: [developer: 2, free: 17]
04:30:21  <Raynos>dominictarr, substack: I want to write a streaming abstraction on top of webrtc data channels
04:30:26  <Raynos>I'll need help with API design
04:30:39  <Raynos>because previous art of mine (webrtc-stream, discovery-network) has a retarded API
04:30:57  <dominictarr>Raynos, just make it as close as possible to net
04:31:08  <Raynos>dominictarr: you can't listen on a port
04:31:15  <dominictarr>what do you do?
04:31:39  <substack>Raynos: jjjohnnny and I were just talking about this!
04:31:40  <dominictarr>there must be something you listen on
04:31:41  <Raynos>You can create offers and answers
04:31:52  <Raynos>dominictarr: you send offers through a discovery system
04:31:55  <Raynos>and receive answers
04:32:00  <Raynos>and once you've done that you have a socket
04:32:11  <dominictarr>okay that is weird
04:32:15  <substack>Raynos: perhaps have an 'offer' event?
04:32:25  <substack>with an offer object that you can offer.accept() or offer.reject()
04:32:27  <Raynos>well the problem is that there are two parts
04:32:38  <Raynos>substack: https://github.com/Raynos/discovery-network/blob/master/networks/webRTCNetwork.js
04:32:47  <substack>looking
04:32:56  <Raynos>i already wrote a bunch of this
04:33:00  <Raynos>now just baking in data channel support
04:33:05  <Raynos>then stepping back and fixing the API
04:33:09  <dominictarr>to you create an offer TO someone, or just to the internet?
04:33:18  <Raynos>dominictarr: to someone
04:33:22  <Raynos>well basically
04:33:24  <dominictarr>like, how do you recieve an answer?
04:33:33  <Raynos>you construct an offer that states how someone can reach it
04:33:33  <dominictarr>how do you recieve an offer?
04:33:37  <Raynos>use a third party to send it to them
04:33:46  <Raynos>they take the offer and construct an answer that tells you how to receive them
04:33:51  <dominictarr>right, so what is in an offer?
04:33:52  <Raynos>send it back through the third party
04:33:55  <Raynos>SDP data
04:34:00  <dominictarr>is it JSON?
04:34:07  <Raynos>it's part of the SDP protocol
04:34:08  <dominictarr>or what?
04:34:23  <dominictarr>could i just go
04:34:28  <dominictarr>createStream(other)
04:34:48  <dominictarr>and then that stream emits an 'error' if they rejected the offer or it timed out?
04:35:01  <Raynos>well then both have to connect ot a discovery network of some form
04:35:08  <Raynos>flash media server had a good term for this
04:35:34  <dominictarr>right, so there is a request response phase
04:36:22  <dominictarr>what if it was like createServer(...).listen('id/metadata')
04:36:46  <dominictarr>then, something gets sent to people who can connect to it...
04:36:52  <dominictarr>can I make multiple connections?
04:37:03  <dominictarr>like, can this do group video?
04:37:42  <dominictarr>if I already had an old answer could I connect directly?
04:37:55  <dominictarr>(an old answer that is new enough...)
04:38:02  <Raynos>I dont know
04:38:08  * shykeschanged nick to zz_shykes
04:38:18  <Raynos>to open a socket you need to send them an offer and receive an answer back
04:39:48  <Raynos>dominictarr: https://github.com/Raynos/discovery-network/blob/master/example/chat/static/index.js is how i currently do stuff
04:39:59  <Raynos>I have a notion of a list of peers
04:40:12  <Raynos>every time there is one i use the relay system to send offer answers
04:40:21  <Raynos>I also listen on the relay system for all incoming offers & answers
04:40:40  <Raynos>which is a super bullshit api :D
04:41:14  <dominictarr>right, I'm guessing a answer will still work if it's a little old, as long as the remote is still on the same IP
04:41:25  <dominictarr>afterall, it IS old by the time it arrives.
04:41:49  <dominictarr>so, you should be able to gossip the offers and answers.
04:41:49  <Raynos>yeah
04:41:52  <Raynos>I think what I really need
04:41:59  <Raynos>is a scuttlebutt containing peer identifiers
04:42:05  <Raynos>and a system to send offers and answers
04:42:09  <Raynos>maybe another scuttlebutt
04:42:12  <Raynos>containing offers and answers
04:42:20  <Raynos>i also need to look into
04:42:21  <substack>public keys?
04:42:24  <Raynos>whether I can send the same offer
04:42:26  <Raynos>to multiple people
04:42:38  <substack>oh another idea
04:42:43  <dominictarr>what does and offer/answer look like? have you got a gist or link?
04:42:48  <substack>ad-hoc friend networks
04:42:54  <substack>you add your friends to your p2p network
04:42:58  <dominictarr>oh, BY THE WAY
04:43:01  <Raynos>dominictarr: once I get my code up and running ill tell you
04:43:06  <substack>then you share files p2p over webrtc
04:43:09  <Raynos>its a text thing containing SDP noise
04:43:14  <substack>using public key crypto
04:43:25  <dominictarr>you can do something called WiFi Direct on android
04:43:55  <dominictarr>it create a local connection between two phones without going through a wifi network!
04:44:48  <dominictarr>substack, in html5 file upload thing can you create files?
04:45:04  <dominictarr>in browser p2p files would be amazing
04:45:05  <substack>I have no idea how that works
04:45:41  <substack>you can probably do an inline container that pops up a download box for generated content though
04:45:42  <dominictarr>people can try and block bit-torrent but this would just be a website
04:45:55  <dominictarr>yeah, that is what we want?
04:45:56  <substack>not just a website
04:45:57  <dominictarr>!
04:46:04  <substack>websites are easy to block
04:46:20  <dominictarr>I mean, COMPLETELY NORMAL
04:46:21  <substack>many websites that establish a complicated connected graph
04:46:29  <dominictarr>EXACTLY
04:46:43  <dominictarr>webpage is probably more accurate
04:46:50  <substack>the topology should be really convoluted and messy
04:46:56  <substack>gossip can handle those just fine
04:47:30  <substack>complicated interconnected topologies are hugely redundant and very resilient
04:47:48  <dominictarr>ah... chaos
04:48:14  <substack>and if the connected nodes are always changing it makes it really difficult for content enforcement bots to figure out what's going on
04:48:24  <substack>especially if there is identity masking through intermediaries
04:48:28  <substack>gossip p2p
04:48:53  <substack>also: rotating public/private keys
04:49:19  <dominictarr>indeed.
04:49:32  <substack>and users should have dozens of keys
04:49:50  <substack>one key to use with friends, another to use for mp3 files, another to use for leaking state secrets
04:49:54  <substack>you know
04:50:16  <substack>some longer-lived, some created and destroyed over the course of an hour
04:50:19  <dominictarr>they can create new keys when ever they desire a new identity
04:50:24  <substack>yes
04:50:26  <Raynos>dominictarr: there is a file api for this shit
04:50:30  <Raynos>in browsers p2p can be done
04:50:31  <substack>there should be a "create identity" button
04:50:37  <substack>and "destroy identity"
04:50:59  <dominictarr>[start] -> "who do you want to be today?"
04:51:00  <Raynos>substack: how does create identity work
04:51:05  <Raynos>how do you create a private key in the browser
04:51:18  <substack>Raynos: we somehow figure out how to make rsa-json work in the browser
04:51:31  <dominictarr>Raynos, substack there is a browser crypto thing coming
04:51:37  <substack>and then we encrypt the keys and put them in local storage
04:51:53  <substack>and you should be able to click a button to export your keyring
04:51:58  <Raynos>the problem is how can you store private keys
04:52:01  <Raynos>without XSS attacks
04:52:27  <dominictarr>lets not worry too much about security. paracites make life more interesting
04:53:34  <dominictarr>you can do crypto in js, you just have to make sure all code is deployed securely
04:53:38  <substack>identity masking is an important piece
04:54:06  <substack>Raynos: you save the html file that does the connection to your local disk
04:54:08  <dominictarr>normally, using https for everything defeats the point of crypto js
04:54:15  <dominictarr>but there is an advantage here.
04:54:15  <substack>no more xss
04:54:22  <substack>or you use node-webkit or app.js
04:54:57  <substack>another fun thing would be webrtc-based virtual networks
04:55:12  <substack>you connect to a bunch of your cohorts
04:55:42  <substack>and establish a virtual network that you can net.createServer().listen() and net.connect() on
04:56:48  <Raynos>node-webkit makes things easy
04:57:37  <substack>check out the node-webrtc module on npm
04:59:53  <substack>https://github.com/mlasak/node-webrtc
05:01:16  <Raynos>substack: its dead :P
05:02:06  <substack>maybe just finished
05:05:39  <Raynos>substack: have you seen the impl?
05:11:28  <Raynos>ffff iceServers
05:20:48  * jden|awaychanged nick to jden
05:21:41  <Raynos>dominictarr: v=0
05:21:41  <Raynos>↵o=- 580207334 2 IN IP4
05:21:41  <Raynos>↵s=-
05:21:41  <Raynos>↵t=0 0
05:21:41  <Raynos>
05:21:43  <Raynos>that's an offer
05:21:56  <Raynos>I think those enter symbols are new lines
05:22:59  <dominictarr>who comes up with this stuff?
05:24:15  <dominictarr>so, what does 580207334 mean?
05:24:29  <Raynos>read the SDP spec :D
05:24:33  <dominictarr>link?
05:24:37  <Raynos>sec
05:24:50  <Raynos>http://dev.w3.org/2011/webrtc/editor/webrtc.html#widl-RTCPeerConnection-createOffer-void-RTCSessionDescriptionCallback-successCallback-RTCPeerConnectionErrorCallback-failureCallback-MediaConstraints-constraints
05:24:51  * anoemijoined
05:24:53  <Raynos>thats createOffer
05:25:25  <Raynos>http://tools.ietf.org/html/rfc3264
05:25:27  <Raynos>Thats the SDP spec
05:25:30  * anoemiquit (Client Quit)
05:26:53  <dominictarr>Raynos, how did you get that offer?
05:27:17  <dominictarr>I notice it has localhost in it
05:27:20  <Raynos>https://gist.github.com/e8c39ad8f47470eded6c
05:27:31  <Raynos>im running a http server on localhost:8081
05:28:27  <dominictarr>okay so s=-
05:28:34  <dominictarr>means that it's a unicast message
05:28:50  <dominictarr>that is the 'subject' line
05:29:31  <dominictarr>t=0 0
05:30:08  <dominictarr>means that the stream is created and destroyed via external signalling
05:31:35  <jjjohnnny>what are you trying to do with RTC?
05:32:34  <jjjohnnny>Raynos: whats that gist do?
05:32:49  <Raynos>jjohnnny: work in progress opening a datachannel
05:32:52  <Raynos>writing a datachannel library
05:33:18  <jjjohnnny>does the RTC spec have something for that?
05:33:25  <jjjohnnny>i couldnt find anything
05:33:54  <Raynos>yeah it does
05:34:08  <Raynos>http://dev.w3.org/2011/webrtc/editor/webrtc.html#widl-RTCPeerConnection-createDataChannel-RTCDataChannel-DOMString-label-RTCDataChannelInit-dataChannelDict
05:34:32  <dominictarr>oh man, this RTC spec is pretty ugly shit
05:34:57  <Raynos>yeah
05:34:59  <Raynos>it is :D
05:35:07  <Raynos>thats why im writing a simple library
05:36:40  <jjjohnnny>oh damn and here I was trying to use the web audio API to create arbitray data streams
05:36:48  <dominictarr>the really important part it the NAT busting
05:36:55  <Raynos>it uses
05:36:56  <Raynos>STUN
05:36:57  <Raynos>and TURN
05:36:59  <Raynos>servers for that shit
05:37:19  <dominictarr>right. one of those is basically just a relay
05:37:31  <dominictarr>a fallback
05:38:05  <dominictarr>because 20% of users are trapped behind firewalls or something sad like that.
05:43:16  <Raynos>ugh webkit doesnt support datachannel yet
05:43:18  <Raynos>lets try moz :D
05:47:10  <jjjohnnny>if they supported the web audio createMediaStreamDestination() you could use the web audio api to write data to an RTC stream
05:47:21  <jjjohnnny>but that is not implemented yet either
05:47:48  <jjjohnnny>asshats are too busy adding image filters to CSS
05:49:35  <substack>I know right?
05:50:23  <jjjohnnny>we should just start writing the next browser with appjs or node webkit
05:50:31  <jjjohnnny>you want crypto in your browser
05:50:37  <jjjohnnny>you want tco
05:50:38  <dominictarr>what we need to do is throw out browsers and use hardware level virtualization for sandboxing applications.
05:50:39  <jjjohnnny>tcp
05:51:07  <dominictarr>you should be able to write you website in assembly if you want.
05:51:53  <dominictarr>just add tabs to smartos.
05:52:17  <jjjohnnny>what about CSS???
05:52:20  <dominictarr>don't even have window system. the sandboxes can draw direct to screen memory
05:52:23  <dominictarr>fuck css
05:52:33  <jjjohnnny>i dont know how to draw any other way
05:52:50  <jjjohnnny>i dont know how to make a scrollable box in assembly
05:52:55  <dominictarr>you could load the css module into your sandbox
05:53:03  <substack>jjjohnnny: yes!
05:53:18  <jjjohnnny>oh so my website now has to build a browser every time you load it
05:53:43  <dominictarr>stop calling it a website
05:53:46  <substack>yes @ writing a browser with node-webkit or appjs
05:54:14  <dominictarr>no, write a js enabled browser for the terminal.
05:54:21  <substack>node needs a good sandbox
05:54:33  <substack>then we can just run untrusted code from the internet in it
05:55:12  <substack>code that can read and write to disk and speak tcp
05:55:58  <dominictarr>the user can put arbitary permissions on network, disk, instead of preset limit.
05:56:03  <substack><script type="node">?
05:56:16  <dominictarr>exactly.
05:56:27  <substack>yes flexible permissions
05:56:34  <substack>excessively granular
05:56:39  <jjjohnnny>i think appjs uses appjs:// style url namespacing
05:56:45  <substack>programmable permissions maybe even
05:56:53  <substack>permissions as a callback
05:56:54  <jjjohnnny>and a command line interface
05:57:20  <jjjohnnny>click #somelink
05:57:42  <substack>dominictarr: and get this browser that supports <script type="node"> running on phones
05:58:19  <dominictarr>http://en.wikipedia.org/wiki/Mobile_virtualization
05:58:31  <substack>to be long-running, web pages could just spawn() a background process
05:59:33  <jjjohnnny>to support any media they could also do that
05:59:43  <Raynos>FUCK.
05:59:46  <Raynos>errorcode 8
05:59:48  <Raynos>fuck you firefox
06:20:55  * tilgovijoined
06:22:41  <Raynos>webrtc is fucking bullshit
06:31:13  <Raynos>Finally have a datachannel in firefox
06:41:27  * chrisdickinsonwatches with interest.
06:42:26  <Raynos>i ragequitted already
06:42:33  <Raynos>this shit is too fucking early
06:42:43  <Raynos>gonna see whether chrome nightly has data channels
06:43:28  <chrisdickinson>afaict it doesn't
06:43:41  <chrisdickinson>ah wait
06:44:07  <chrisdickinson>Raynos: looks like they're namespaced under "webkit*" in global scope
06:44:14  <Raynos>yeah
06:44:20  <Raynos>datachannels and webrtc are two different things
06:44:25  <Raynos>dev version doesnt have datachannels
06:44:27  <Raynos>but has webrtc
06:44:38  <Raynos>I have an outdated demo: https://github.com/Raynos/webrtc-stream
06:44:43  <Raynos>of webrtc without datachannels
06:45:18  <dominictarr>send data through webrtc?
06:45:39  <chrisdickinson>was just about to suggest that -- could you transmit data through image content?
06:46:04  <jjjohnnny>you cant access the streams
06:46:20  <jjjohnnny>you can access them inbound but not outbound
06:49:06  <jjjohnnny>https://gist.github.com/4064367
06:49:24  <jjjohnnny>theres an example of grabbing an incoming stream (in this case your own)
06:49:48  <jjjohnnny>using web audios createMediaStreamSource
06:50:16  <Raynos>http://www.meetup.com/WebRTC/#upcoming
06:50:17  <jjjohnnny>supposedly theres a createMediaStreamDestination coming soon, which would return a stream you could send to peer connections
06:51:33  <chrisdickinson>ah, so, you can access local media streams (from the local camera) but you can't access remote streams yet?
06:52:15  <chrisdickinson>i'm just thinking that you could do the createObjectURL dance and draw the remote video to a canvas and getImageData on it.
06:52:28  <jjjohnnny>chrisdickinson: you can access a remote one the same way
06:52:30  <Raynos>you can access remote streams
06:52:37  <Raynos>remote audio & video by opening a peer connection
06:52:42  <Raynos>last time I checked video worked in chrome
06:52:46  <jjjohnnny>but you cant create one from nothing to use as your peer stream
06:52:48  <Raynos>and apparently audio + video works in firefox
06:53:02  <Raynos>what you can't do is create an audio stream programmatically
06:53:07  <Raynos>to attach to a peer connection
06:53:17  <jjjohnnny>http://something-clever.nko3.jitsu.com/
06:53:18  <jjjohnnny>:)
06:53:58  <chrisdickinson>aah
06:54:26  <chrisdickinson>the outgoing element *has* to be a rtc-enabled audio/video stream, then?
06:54:38  <Raynos>something like that
06:54:39  <jjjohnnny>sorta
06:54:45  <Raynos>the streams you can send out are ones gotten from local media
06:55:02  <jjjohnnny>ive looked deeply at it, and it is the same kind of mediaStream some web audio objects are
06:55:10  <Raynos>anyway whomever said chrome had datachannels wasted my fuckign evening
06:55:40  <jjjohnnny>https://gist.github.com/4064367
06:55:52  <substack>Raynos: sweet, signed up for that rtc meetup
06:56:14  <jjjohnnny>guys when i try to cast spells nothing ahppens
06:56:52  <substack>jjjohnnny: ok restarting
06:57:43  <substack>restarted
07:02:27  <Raynos>substack: I went to the first one
07:02:33  <Raynos>kind of interesting
07:02:37  <Raynos>lots of different types of people
07:02:47  <Raynos>and the chrome people where there
07:03:49  * tphummeljoined
07:03:52  * tphummelquit (Client Quit)
07:04:37  <Raynos>im going to brainstorm up the best possible webrtc api i can think of :D
07:05:35  * tphummeljoined
07:13:18  <Raynos>substack, dominictarr: any ideas on how to build a distributed presence mechanism?
07:13:31  <Raynos>basically a list of all nodes in the network
07:16:32  <substack>I experimented with this already
07:16:40  <substack>scuttlebutt has new code to make it much easier
07:17:11  <substack>Raynos: listen on the 'header' event and put metadata in there
07:17:28  <Raynos>well what I really want is a scuttlebutt
07:17:34  <substack>https://github.com/dominictarr/scuttlebutt/#scuttlebuttcreatestream-opts
07:17:34  <Raynos>that contains a list of all peopel connected to it
07:18:30  <Raynos>the question is how do you know people are stale
07:18:38  <substack>heartbeats
07:18:47  <substack>have people update their own entries with Date.now()
07:19:06  <substack>or better still, with a counter
07:19:08  <Raynos>is that the best way?
07:19:18  <Raynos>why is a counter better then a heartbeat?
07:19:24  <substack>well the best way would be to sync the vector clocks
07:19:32  <substack>Date.now() won't be the same on each node
07:19:44  <substack>if you can sync the clocks then it works great
07:20:06  <Raynos>oh you mean use a vector clock instead of a Date.now()
07:20:28  <substack>yes
07:20:41  <substack>what kind of data do you need to store in the list of nodes?
07:26:54  <Raynos>well
07:26:56  <chrisdickinson>Raynos: do you have an example of creating a datachannel in firefox?
07:26:57  <Raynos>webrtc shit
07:27:05  <Raynos>chrisdickinson: not a bug free one
07:27:06  <Raynos>but.
07:27:23  <Raynos>chrisdickinson: http://mozilla.github.com/webrtc-landing/
07:27:27  * zz_shykeschanged nick to shykes
07:32:10  <substack>restarting the game again
07:36:37  <CoverSlide|TPFR>you are getting sleeeeeepyyy
07:40:24  * fotoveritejoined
07:44:26  <chrisdickinson>Raynos: i am probably asking a very dumb question: but createDataConnection is very, very different from createDataChannel, right?
07:44:32  <Raynos>yes
07:44:35  <Raynos>its a temporary hack
07:44:37  <Raynos>in firefox
07:44:47  <chrisdickinson>ah
07:45:10  <chrisdickinson>my chrome canary has createDataChannel, but no createDataConnection, if that data point helps at all.
07:50:44  <substack>guys check out http://wizardz.jit.su/ right now
07:50:54  <substack>folks running around causing all kinds of havoc
07:52:41  <Raynos>chrisdickinson: createDataChannel will throw not implemented if you try to invoke it
08:20:26  * thatguydanquit (Ping timeout: 245 seconds)
08:21:42  * shykeschanged nick to zz_shykes
08:34:23  <Raynos>dominictarr, substack: https://gist.github.com/4064668
08:34:29  <Raynos>Best webrtc API I can think of.
08:34:35  <Raynos>feedback appreciated
08:37:49  <substack>Raynos: use events
08:38:03  <Raynos>events for what?
08:38:12  <substack>unsure what I'm looking at
08:38:19  <substack>I just see a bunch of code and a bunch of functions
08:38:23  <Raynos>:D
08:38:28  <Raynos>it has comments
08:38:33  <substack>I hate comments
08:38:33  <Raynos>that should explain how shit works
08:38:35  <substack>get rid of them
08:38:38  <substack>no
08:38:49  <substack>if you need comments then your api sucks
08:38:59  <substack>code should be self-describing
08:39:01  <Raynos>i know the api sucks
08:39:09  <substack>and all the superfluous noise and clutter needs to be gone
08:39:25  <substack>I don't read comments anyways
08:40:59  <Raynos>substack: https://gist.github.com/4064668
08:41:39  <substack>that's much better
08:44:04  <Raynos>But yeah I need to reduce complexity on the webrtc api somehow
08:44:27  <Raynos>also have a way to have a better mechanism for creating connection
08:44:50  <substack>so I'm still not quite sure what this code is supposed to be doing but it looks like it's for handling a list of connected peers stored in crdt over webrtc
08:45:34  <substack>aha so what is this code supposed to *do*?
08:45:49  <substack>it does things but it's not obvious what the end goal is
08:46:03  <Raynos>The end goal is to open streams to other peers
08:46:12  <Raynos>so you start of a single isolated node
08:46:25  <Raynos>you replicate this peers document from a fixed node that tells you who all the peers are
08:46:26  * jiang-plusjoined
08:46:39  <Raynos>you add yourself to that document.
08:46:47  <substack>which other peers?
08:47:02  <Raynos>browsers
08:47:09  <Raynos>Lets imagine the wizard game case
08:47:16  <Raynos>the other peers are other people in the game
08:47:41  <substack>peer_rtc.js: module.exports = function (cb) { ...; cb(null, peers) }
08:48:13  <substack>require('./peer_rtc.js')(function (err, peers) { ...; var stream = peers[id].connect(); ... })
08:48:24  <Raynos>doesnt work like that
08:48:31  <Raynos>to connect to someone
08:48:37  <jiang-plus>what's your site url for the game
08:48:40  <Raynos>you have to send them an offer and they have to send an answer back
08:48:45  <substack>jiang-plus: http://wizardz.jit.su/
08:48:57  <Raynos>although I guess I could make an API like that
08:48:59  <jiang-plus>thanks
08:49:06  <substack>jiang-plus: and the team page that has a video and some code snippets to try is at http://nodeknockout.com/teams/teh-wizzards-of-stre
08:49:41  <substack>Raynos: just expose the offer/answer part behind event emitters with default handlers
08:49:48  <Raynos>substack: the other issue is who opens the connection
08:49:52  <Raynos>if two peers want to connect
08:49:58  <Raynos>one of them has to send an offer and the other the answer
08:50:02  <Raynos>its like handshake bullshit
08:50:05  <Raynos>who starts
08:50:28  <substack>if (a.id > b.id) { a.offer() } else b.offer()
08:50:34  <Raynos>:D
08:50:43  <Raynos>thats an actual good idea
08:50:52  <substack>any deterministic algorithm will do
08:51:10  <substack>and if the offer never goes through, after a set period, have b send an offer
08:51:56  <substack>jiang-plus: oh and the code is up too https://github.com/substack/wizard-game
08:52:59  <substack>it uses crdt, which is just a layer above scuttlebutt which is itself crazy powerful technology https://github.com/substack/stream-handbook#scuttlebutt
08:53:45  <jiang-plus>I am reading that
08:55:01  <jiang-plus>just ignore me
08:55:46  <Altreus>pkrumins: I don't have all the money!
08:56:01  <Altreus>I am content with the one I got
08:57:07  <substack>Altreus: which one did you get?
08:57:08  <Altreus>Well, the prospect of it arriving anyway
08:57:16  <Altreus>substack: The async telephone!
08:59:26  <substack>oh sweet!
08:59:28  <substack>the pipe shirt
08:59:32  <substack>a.pipe(b).pipe(a)
09:01:02  * thatguydanjoined
09:04:01  <substack>Raynos: maybe make it like a telephone
09:04:08  <substack>you peer.call()
09:04:24  <substack>and the other side gets an event
09:04:40  <substack>peer.on('call', function (p) { p.answer() })
09:04:44  <substack>you can answer the call
09:05:15  <substack>and p.answer() could return a stream
09:06:20  <substack>peer.call() could also return a stream and emit events when shit happens that most of the time you don't care about
09:11:53  <Altreus>substack: quite excited somehow
09:11:57  <Altreus>^_^
09:12:12  * saijanai_quit (Ping timeout: 256 seconds)
09:13:52  <substack>or perhaps s/call/ring/
09:14:17  <substack>ring ring ring ring ring ring ring ring webrtc phone
09:18:39  <Altreus>doop doobeedoobeedoo
09:18:55  <Altreus>yeah call() is already a thing
09:19:01  <Altreus>could get confusing!
09:21:03  * tphummelquit (Quit: tphummel)
09:21:36  * saijanai_joined
09:23:01  <Altreus>pkrumins: I just read the article cos I spotted it on my RSS feed
09:28:55  * tilgoviquit (Remote host closed the connection)
09:33:44  * thatguydanquit (Ping timeout: 256 seconds)
09:44:41  <Raynos>https://gist.github.com/4064668
09:44:49  <Raynos>Updated the webrtc api experiment
09:45:36  * thatguydanjoined
09:56:36  * ITprojoined
10:01:06  * ITproquit (Ping timeout: 245 seconds)
10:02:13  * thatguydanquit (Ping timeout: 246 seconds)
10:12:00  * doolsquit (*.net *.split)
10:12:00  * fotoveritequit (*.net *.split)
10:12:00  * purrquit (*.net *.split)
10:12:01  * Madarsquit (*.net *.split)
10:12:02  * chadskidmorequit (*.net *.split)
10:12:02  * rannmannquit (*.net *.split)
10:15:38  * fotoveritejoined
10:15:38  * purrjoined
10:15:38  * chadskidmorejoined
10:15:38  * doolsjoined
10:15:38  * rannmannjoined
10:15:38  * Madarsjoined
10:20:37  * LOUDBOTquit (*.net *.split)
10:20:38  * brianloveswordsquit (*.net *.split)
10:20:38  * owenbquit (*.net *.split)
10:20:38  * ircretaryquit (*.net *.split)
10:20:38  * py1honquit (*.net *.split)
10:20:38  * zuquit (*.net *.split)
10:20:38  * chrisdickinsonquit (*.net *.split)
10:22:06  * LOUDBOTjoined
10:22:06  * ircretaryjoined
10:22:06  * chrisdickinsonjoined
10:22:06  * py1honjoined
10:22:06  * brianloveswordsjoined
10:22:06  * zujoined
10:22:06  * owenbjoined
10:23:24  * niftylettucequit (*.net *.split)
10:23:24  * duncanbeeversquit (*.net *.split)
10:23:24  * chapelquit (*.net *.split)
10:23:24  * sorensenquit (*.net *.split)
10:24:05  * sorensenjoined
10:24:05  * niftylettucejoined
10:24:05  * duncanbeeversjoined
10:24:05  * chapeljoined
10:26:43  * ircretaryquit (*.net *.split)
10:26:43  * py1honquit (*.net *.split)
10:26:43  * zuquit (*.net *.split)
10:26:43  * chrisdickinsonquit (*.net *.split)
10:27:13  * ircretaryjoined
10:27:13  * chrisdickinsonjoined
10:27:13  * py1honjoined
10:27:13  * zujoined
10:28:17  * Altreusquit (*.net *.split)
10:28:17  * farnsworthquit (*.net *.split)
10:28:17  * cubertquit (*.net *.split)
10:28:17  * tanepiperquit (*.net *.split)
10:28:17  * guybrushquit (*.net *.split)
10:28:18  * munroquit (*.net *.split)
10:28:45  * Altreusjoined
10:28:45  * farnsworthjoined
10:28:45  * cubertjoined
10:28:45  * tanepiperjoined
10:28:45  * guybrushjoined
10:28:45  * munrojoined
10:30:00  * shuaibquit (*.net *.split)
10:30:25  * shuaibjoined
10:35:12  * jibayjoined
10:44:24  <substack>http://substack.net/images/substack_pixel.svg
11:15:23  * ITprojoined
11:23:42  <substack>dominictarr, jjjohnnny: http://www.cypherpunks.to/ip/
11:25:01  <substack>http://www.weidai.com/pipenet.txt
11:34:06  <substack>we need to recruit this guy http://www.weidai.com/
11:34:41  <substack>maybe I can do that by implementing pipenet
11:55:22  * shuaibquit (Quit: Textual IRC Client: http://www.textualapp.com/)
12:10:15  * captain_morganjoined
12:37:16  <rowbit>Hourly usage stats: [developer: 0, free: 43]
12:49:02  * jiang-plusquit (Quit: Lost terminal)
13:29:13  * yorickjoined
13:29:14  * yorickquit (Changing host)
13:29:14  * yorickjoined
13:35:19  * jibayquit (Quit: Leaving)
13:37:16  <rowbit>Hourly usage stats: [developer: 0, free: 61]
14:42:09  * captain_morganquit (Remote host closed the connection)
15:02:45  * defunctzombiejoined
15:18:04  * st_lukejoined
15:22:09  <pkrumins>substack: recruit at browserling?
15:22:12  <pkrumins>that would rock
15:22:29  <pkrumins>best hackers at this company
15:40:35  <substack>I mean into this circle of hackers
15:41:37  <pkrumins>ah
15:58:10  * jjjohnnnyquit (Ping timeout: 252 seconds)
16:09:57  * _sorensenjoined
16:10:04  <mbalho>browserling should hire a recruiter
16:13:33  <pkrumins>no need for that, we can just hire people from this channel
16:13:50  <pkrumins>we've the best people in here :)
16:13:59  * wiwilliajoined
16:35:48  * fotoveritequit (Quit: fotoverite)
16:42:00  * shuaibjoined
16:47:51  <rowbit>Hourly usage stats: [developer: 13, free: 56]
17:06:25  * defunctzombiequit (Remote host closed the connection)
17:08:25  <rowbit>SubStack, pkrumins: Encoders down: (dev-ie8-3)
17:30:58  * jibayjoined
17:34:47  * defunctzombiejoined
17:42:13  * defunctzombiequit (Remote host closed the connection)
17:47:51  <rowbit>Hourly usage stats: [developer: 16, free: 65]
18:04:05  * AvianFlujoined
18:08:48  * tphummeljoined
18:29:17  * jdenchanged nick to jden|work
18:31:55  * fotoveritejoined
18:47:51  <rowbit>Hourly usage stats: [developer: 9, free: 70]
18:54:28  * tphummelquit (Quit: tphummel)
19:15:06  * defunctzombiejoined
19:24:54  * defunctzombiequit (Remote host closed the connection)
19:25:32  * devaholicjoined
19:31:58  * _sorensenquit (Quit: Bye!)
19:33:29  <CoverSlide|TPFR>Fact: 100% of tech recruiters are terrible
19:34:07  <AvianFlu>YES THEY ARE
19:35:11  * _sorensenjoined
19:36:02  * tphummeljoined
19:47:51  <rowbit>Hourly usage stats: [developer: 5, free: 84]
19:53:06  * AvianFluquit (Remote host closed the connection)
19:54:01  * defunctzombiejoined
20:02:13  * fotoveritequit (Ping timeout: 245 seconds)
20:02:44  * fotoveritejoined
20:05:13  <st_luke>NEW YORK NEW YORK
20:14:01  <fotoverite>SF SF!
20:21:20  * wiwilliaquit (Ping timeout: 255 seconds)
20:31:57  <CoverSlide|TPFR>LA LA
20:32:31  <chrisdickinson>pdx, pdx.
20:33:00  <CoverSlide|TPFR>P90X P90X
20:33:25  <fotoverite>Oh god it's getting sentient again?!
20:33:32  <fotoverite>Substack waht do we do.
20:37:58  * wiwilliajoined
20:38:59  * AvianFlujoined
20:45:02  * defunctzombiequit (Remote host closed the connection)
20:46:12  * fotoveritequit (Quit: fotoverite)
20:47:51  <rowbit>Hourly usage stats: [developer: 14, free: 46]
20:57:06  <juliangruber>dominictarr substack: possible api for adding authoritative nodes to scuttlebutt nets: https://gist.github.com/4068342
20:58:28  * tilgovijoined
21:05:02  <dominictarr>juliangruber, yeah I think that would work
21:08:09  <chrisdickinson>writing a series of writable stream modules to sidestep websockets: fun fun fun.
21:09:02  <chrisdickinson>(should all be api compatible with sockjs eventually.)
21:12:31  <dominictarr>chrisdickinson, http://npm.im/shoe
21:13:05  <dominictarr>what are you doing differently?
21:13:14  <chrisdickinson>dominictarr: yep -- the goal is to be able to plug SSE / iframe streams into shoe
21:13:31  <dominictarr>ah, got it.
21:13:43  <chrisdickinson>that is, transports++
21:41:16  <substack>juliangruber: that authorization thing looks really interesting!
21:42:44  * defunctzombiejoined
21:47:51  <rowbit>Hourly usage stats: [developer: 5, free: 32]
21:49:19  <juliangruber>substack: would this api work for your game? i wrote it for another game and it works there
21:49:31  <juliangruber>or can you think of another usecase?
21:51:06  * fotoveritejoined
22:05:04  * JJJohnnyjoined
22:05:13  <JJJohnny>substack: are u ready
22:12:30  <substack>JJJohnny: yep we can start hauling
22:12:35  * jibayquit (Remote host closed the connection)
22:13:19  <JJJohnny>substack: ok i am leaving in a couple minutes
22:14:03  <substack>ok!
22:17:33  * JJJohnnyquit (Ping timeout: 245 seconds)
22:20:06  <dominictarr>substack, so what about a mesh network where you incentivized passing packets on, by prioritizing packets of nodes that passed packets.
22:25:46  <juliangruber>dominictarr: who prioritizes?
22:26:07  <dominictarr>juliangruber, it would have to be mutual
22:26:35  <dominictarr>say, i'll pass your packets, if you pass mine - prisoners delimma style.
22:27:32  <dominictarr>... and pass packets first, untill you notice someone not passing your packets.
22:33:13  <substack>dominictarr: yes some bittorrent networks keep track of seed/download ratios and throttle back people who slip below a threshold
22:33:55  <dominictarr>yes, we need this for a mesh network. this will be important after the apocalypse.
22:35:14  <juliangruber>dominictarr, would nodes talk to each other about which node is good and which isn't or is it just by individual experience
22:36:50  <dominictarr>maybe, this is tricky.
22:37:23  <dominictarr>you could just distribute information about nodes that are abusing
22:37:59  <dominictarr>but, then what if someone lies about who is abusing.
22:38:59  <dominictarr>this issue of trust is central to many big problems.
22:39:09  <owen1>blog post about the wizard game: http://engineering.yp.com/post/wizard
22:40:56  <dominictarr>owen1, nice cat photo
22:40:59  <substack>owen1: neat!
22:42:16  <owen1>is the game up?
22:42:38  * yorickquit (Read error: Connection reset by peer)
22:47:51  <rowbit>Hourly usage stats: [developer: 1, free: 25]
22:53:29  <dominictarr>there was a whole bitcoin conference in london recently... http://www.youtube.com/watch?feature=endscreen&v=mD4L7xDNCmA&NR=1
22:53:36  * AvianFluquit (Remote host closed the connection)
22:57:50  <juliangruber>dominictarr, that's what i was thinking about
22:58:03  <jden|work>domenic: this sounds an awful lot like what we were talking about in Seattle
22:58:14  <jden|work>dominictarr rather*
22:58:24  <juliangruber>it would end up working if more good than bad nodes exist
23:00:40  <juliangruber>dominictarr, and information about good nodes needs to be distributed too. buuut, nodes can also value experience more than gossip
23:03:14  <dominictarr>well, maybe it's like each node vouches for each other - "this node passed on my data"
23:03:37  <juliangruber>dominictarr, you can trade off speed for security just by passing to more nodes
23:03:54  <dominictarr>yes. redundancy.
23:05:03  <juliangruber>dominictarr, nodes known but not vouched could be knew or bad so have to be tried out -> experience comes in
23:05:34  <dominictarr>maybe the nodes can just deal with adjacent nodes.
23:06:02  <juliangruber>how would discovery work?
23:06:48  <dominictarr>don't know. you'd need something to address large groups and then sub groups.
23:07:12  <dominictarr>maybe the mesh could just negioate that on the fly.
23:07:40  <juliangruber>yeah
23:07:56  * zz_shykeschanged nick to shykes
23:08:15  <dominictarr>of course, if you use peer to peer applications you don't need point to point connections.
23:09:07  <dominictarr>so, like with localish applications like ebay/craigs list, you could just replicate the whole database.
23:09:29  <dominictarr>across the network... maybe wikipedia could work like that too.
23:10:55  <juliangruber>the whole idea reminds me of your blog post about body language
23:11:00  <juliangruber>for computers
23:17:12  <juliangruber>i imagine it working for text and other smaller assets, otherwise upstream for normal houses is a dealbreaker
23:17:37  <juliangruber>are you thinking about people and server as nodes or just one kind?
23:24:33  <dominictarr>I'm thinking about a mesh network, wifi network to adjacent wifi network.
23:25:24  <juliangruber>internet w/out isp
23:26:57  <dominictarr>yes
23:27:47  <juliangruber>and ar drones of course!
23:34:27  <dominictarr>indeed, and robots that explore the sewers of paris.
23:35:01  <dominictarr>maybe need a robot that can plug it self in somehow...
23:35:20  <dominictarr>maybe just give it a big battery and make it really cute,
23:35:35  <juliangruber>hm, haven't found a good use for my drone yet
23:35:47  <mbalho>cat toy
23:35:52  <dominictarr>then it can inspire humans to do the hard work of pluging it in for it
23:35:59  <dominictarr>stray cat toy
23:36:13  <juliangruber>it works > human freedom
23:39:48  <juliangruber>it could give itself as a present to someone who wants a robot whenever the battery is empty and live with him until Math.random()>0.9
23:40:06  <juliangruber>and just not do any research
23:40:15  <juliangruber>and make the whole world happy
23:43:05  <dominictarr>hahaha yeah exactly, all the while running our compute through their network
23:44:07  <dominictarr>what about a robot 3d printer robot that prints out simple things and sells them on ebay until it can afford to buy another robot (give birth)
23:46:23  <juliangruber>genetic algorithms will eventually create beautiful things
23:47:30  <juliangruber>or is it evolutionary algorithms?
23:47:51  <rowbit>Hourly usage stats: [developer: 1, free: 23]
23:53:26  <juliangruber>a roboter that emits wifi router particles until the whole world has wifi