00:02:16  * ricardobeatjoined
00:10:30  <jjjjohnnny>how come when i install uuid and then require it npm cant find
00:17:03  * st_lukequit (Read error: Connection reset by peer)
00:18:34  <jjjjohnnny>A: because its node-uuid
00:19:07  <rowbit>Hourly usage stats: [developer: 0, free: 29]
00:24:05  * AvianFlujoined
00:38:10  <jjjjohnnny>mbalho: whats yr email?
00:39:43  <jjjjohnnny>nm
00:50:19  * AvianFluquit (Remote host closed the connection)
00:50:48  * AvianFlujoined
00:53:28  <substack>heading down to this place https://en.wikipedia.org/wiki/Akihabara
00:54:21  * ricardobeatquit (Quit: ricardobeat)
00:55:18  * AvianFluquit (Ping timeout: 264 seconds)
01:00:01  <mbalho>substack: get me a weird japanese thing please
01:07:05  * dedis36joined
01:15:50  * dedis36quit (Remote host closed the connection)
01:19:06  <rowbit>Hourly usage stats: [developer: 0, free: 42]
01:25:53  * ricardobeatjoined
01:35:17  <jjjjohnnny>Raynos: so is levelidb intended for use in the browser?
01:35:29  <Raynos>yes
01:35:32  <Raynos>well both
01:35:36  <Raynos>on the server it just returns levelup
01:35:49  <jjjjohnnny>ah ha
01:39:03  <jjjjohnnny>Raynos: do you have plans for thxgiving?
01:39:14  <Raynos>not yet
01:39:43  <jjjjohnnny>seeing as how the rest of your team is going to be here, why dont you join us
01:40:25  * dominictarrquit (Read error: Connection reset by peer)
01:52:35  <jjjjohnnny>doe scuttlebutt work in the browser?
01:58:55  * devaholicquit (Ping timeout: 255 seconds)
02:00:01  <Raynos>jjjjohnnny: yes scuttlebbut works in browser
02:00:04  <Raynos>sure ill join you guys
02:04:27  * defunctzombiequit (Remote host closed the connection)
02:12:36  * devaholicjoined
02:14:22  <jjjjohnnny>Raynos: getting error does not exist (create_if_missing is false)
02:14:47  <jjjjohnnny>i set it to true in the option object db = levelidb(path, options)
02:16:42  <jjjjohnnny>nm
02:16:57  <jjjjohnnny>levelup error output is wrong
02:17:51  <Raynos>?
02:19:06  <rowbit>Hourly usage stats: [developer: 0, free: 65]
02:21:50  * defunctzombiejoined
02:29:15  * st_lukejoined
02:40:49  <rowbit>/!\ ATTENTION: (default-local) jeffmohr@... successfully signed up for developer browserling plan ($20). Cash money! /!\
02:40:49  <rowbit>/!\ ATTENTION: (default-local) paid account successfully upgraded /!\
03:16:37  * st_lukequit (Remote host closed the connection)
03:18:27  * st_lukejoined
03:19:06  <rowbit>Hourly usage stats: [developer: 3, free: 36]
03:31:28  * defunctzombiequit (Remote host closed the connection)
03:46:06  * ITproquit (Ping timeout: 245 seconds)
04:15:55  * AvianFlujoined
04:37:05  * ricardobeatquit (Quit: ricardobeat)
04:38:52  * st_lukequit (Remote host closed the connection)
04:43:02  * st_lukejoined
04:45:46  <st_luke>cell phone just autocorrected rubyists to ruby users
04:45:47  <st_luke>amazing
04:49:02  * defunctzombiejoined
05:08:05  <jjjjohnnny>DAMNIT levelup failed to build on ubuntu WHHAAAAA
05:08:43  <ik>waaaugh
05:09:39  <mbalho>waaaahhhhgghhhhhuuuttt??
05:10:09  <jjjjohnnny>just spent 3 hours buidling app on it on osx and the put it on the server and no go
05:10:34  <jjjjohnnny>https://github.com/rvagg/node-levelup/issues/27
05:10:41  <jjjjohnnny>let me ask you something
05:11:01  <jjjjohnnny>could it be because I updated node to 0.8.14 while still running 0.6.x?
05:12:00  * Madarsquit (Quit: reboot)
05:12:22  <mbalho>is leveldb the only static dep for levelup?
05:12:37  <mbalho>cause you could try doing ./configure && make in the leveldb source code and see if it works
05:13:45  <jjjjohnnny>it has snappy in the deps folder, i dunno
05:13:47  <jjjjohnnny>will try
05:14:20  <mbalho>snappy is the compression lib that leveldb uses
05:14:49  <jjjjohnnny>node configure what now
05:14:56  <jjjjohnnny>no configure
05:15:25  <jjjjohnnny>oh wait
05:16:01  <AvianFlu>LET'S GET LOUD
05:16:02  <LOUDBOT>DOUBLE BUCKY YOUR THE ONE!
05:16:32  <mbalho>DATS ONLY IN THE MORNING
05:16:33  <LOUDBOT>WE THUGGISH RUGGUSH NIGGAZ ALWAYZ
05:16:47  <mbalho>THEY SUPPOSED TO BE UP COOKIN BREAKFAST OR SOMETHIN ITS LIKE AN ALARM CLOCK
05:16:48  <LOUDBOT>HOW CAN YOU PLAY EUROTRANCE FOR THREE HOURS, THEN THROW IN A GLITTERPOP SONG?
05:17:40  <AvianFlu>GLITTERPOP GLITTERPOP OH MY, THE GLITTERPOP
05:17:40  <LOUDBOT>OMG ITS "HEAVEN" SPELLED BACKWARDS! ISNT THAT WHAT PPL DO NOT TOUCH WEINERS PREFERABLY WITH A WINGTIP."
05:18:41  <jjjjohnnny>LUCKY DRONE FOUND A FUCKY GNOME LIVIN IN A BUCKY DOME
05:18:41  <LOUDBOT>CHOPPIN' ROCKS OVERNIGHT THE NIGGA BIGGIE SMALLS TRYIN' TA TURN INTO THE BLACK FRANK WHITE
05:19:08  <mbalho>jjjjohnnny: hahahah
05:19:35  <mbalho>FULLERENE BALLERINAS BIMBOING CAREENING CARELESSLEY
05:19:36  <LOUDBOT>ACHIEVEMENT UNLOCKED: APERTURE SCIENCE
05:19:55  <jjjjohnnny>mbalho: i did make to leveldb in the deps, no err
05:20:12  <mbalho>hmm odd
05:20:15  <mbalho>im outta ideas in that case
05:20:38  <jjjjohnnny>do i need to node gyp the levelup module?
05:20:49  <jjjjohnnny>er how should i try to install it
05:21:25  <mbalho>i dunno about native things
05:24:31  <jjjjohnnny>YOU DID IT
05:24:32  <LOUDBOT>LOUIS C.K.: I AM ALSO FAT AND DIVORCED BUT I HAVE SOME IDEAS ABOUT MODERN SOCIETY
05:25:25  <jjjjohnnny>that worked
05:25:48  <jjjjohnnny>i installed leveldb, then npm install levelup worked
05:26:01  <mbalho>WOOP WOOP
05:26:01  <LOUDBOT>BRING IN DA NOISE AND BRING OUT DA PRICKS
05:26:14  <mbalho>BATH SALT FACE EATER WOOP WOOP
05:26:15  <LOUDBOT>ONE IF BY LAND BELLS IF BY TWO HEY BRITISH YOU'RE WARNED SAILED THE OCEAN BLUE
05:30:02  <ik>mbalho: turns out he just smoked some weed
05:30:16  <ik>and was a crazy guy mcwackopants
05:30:24  <mbalho>haha
05:30:29  <mbalho>floridians
05:37:24  * AvianFluquit (Remote host closed the connection)
05:59:32  * thatguydan_joined
05:59:35  * st_lukequit (Remote host closed the connection)
06:01:01  * defunctzombiequit (Remote host closed the connection)
06:02:30  * thatguydanquit (Ping timeout: 264 seconds)
06:03:46  * thatguydan_quit (Ping timeout: 245 seconds)
06:13:29  <fotoverite>floridians? Crazy?
06:32:07  * st_luke_quit (Ping timeout: 246 seconds)
06:48:05  * st_lukejoined
07:47:34  <jden>fotoverite: it's a strange drug cocktail, that. you'll learn when you're like 70 years older.
07:47:59  * jdenchanged nick to jden|zzz
07:48:52  * Madarsjoined
07:56:58  * devendramjoined
08:01:47  * defunctzombiejoined
08:06:17  * defunctzombiequit (Ping timeout: 252 seconds)
08:18:48  * devendramquit (Ping timeout: 245 seconds)
09:03:42  * thatguydanjoined
09:46:29  * ITprojoined
09:51:29  * ITproquit (Ping timeout: 276 seconds)
10:01:14  * thatguydanquit (Read error: Connection timed out)
10:08:10  * thatguydanjoined
10:21:28  * thatguydanquit (Quit: thatguydan)
10:59:38  * thatguydanjoined
11:48:29  <substack>so many electronics parts
11:49:02  <substack>jjjjohnnny: I've got some programmable surface-mount microcontrollers and a usb programmer now
11:49:09  <substack>and a bunch of other parts
11:49:29  * jibayjoined
11:50:18  <substack>mbalho: so akihabara is pretty much the best possible place
11:50:23  <substack>so many electronics parts
12:57:10  * ITprojoined
13:09:03  <rowbit>/!\ ATTENTION: (default-local) miles@... successfully signed up for developer browserling plan ($20). Cash money! /!\
13:09:03  <rowbit>/!\ ATTENTION: (default-local) paid account successfully upgraded /!\
13:09:24  <substack>yay
13:42:27  <substack>getting xhr-write-stream out the door finally
13:42:34  <substack>so I can roll it out for testling-ci
13:57:35  * AvianFlujoined
14:07:23  <substack>pow https://github.com/substack/xhr-write-stream
14:07:27  <substack>now implementing timeouts
14:10:46  <substack>somebody could use this plus a polling lib to make an xhr fallback
14:11:18  <substack>and with real websockets + xhr fallback that is pretty much sockjs
14:11:24  <substack>except as tiny libraries
14:20:14  <AvianFlu>DECOUPLE AND AWESOMIFY ALL THE THINGS
14:20:15  <LOUDBOT>GOD DAMMIT BUTTERS WHAT DID I SAY ABOUT SHOOTING GUYS IN THE DICK?!
14:22:54  * djoot_joined
14:22:54  * djoot_quit (Client Quit)
14:29:31  * ralphtheninjajoined
14:31:01  * ralphtheninjaquit (Client Quit)
14:31:43  * ralphtheninjajoined
14:39:40  * defunctzombiejoined
14:47:29  <substack>this looks like a strange kind of pause-stream http://dailyjs.com/2012/11/19/streams-part-2/
14:47:42  <substack>except more promise-esque
14:54:54  * hij1nxjoined
15:29:07  <mbalho>substack: https://github.com/maxogden/websocket-stream
15:33:26  <substack>mbalho: sweet!
15:33:46  * devaholicquit (Ping timeout: 246 seconds)
15:33:53  <substack>implemented timeouts for xhr-write-stream in 0.1.0
15:35:01  <substack>mbalho: and mikeal already wrote https://github.com/mikeal/pollstream
15:35:14  <substack>seems like xhr-write-stream + pollstream + websocket-stream === shoe
15:35:32  <mbalho>with 100% less coffeescript
15:36:15  <substack>indeed
15:36:39  <substack>do any transports even matter besides xhr and websockets?
15:36:44  <mbalho>nope
15:36:48  <substack>ok good
15:37:08  <substack>so just start doing xhr and then upgrade to websockets engine.io style?
15:37:13  <mbalho>yep
15:37:17  <mbalho>xhr is the most important for sure
15:37:20  <substack>yes
15:37:34  <mbalho>for mobile browsers especially
15:37:43  <substack>and then I can ignore all these sprawling pollyfill libs
15:37:45  * thatguydanquit (Quit: thatguydan)
15:37:52  <substack>and just use tiny ones instead
15:37:54  <mbalho>i think the flash socket crap from socket.io actually polyfills websockets
15:38:05  <mbalho>so it could theoretically be used with websocket stream
15:49:59  * defunctzombiequit (Remote host closed the connection)
15:53:37  <substack>basically everything big needs to widdle away into nothingness
15:53:44  <substack>*wither
15:54:56  * AvianFluquit (Remote host closed the connection)
16:10:43  * _sorensenjoined
16:18:05  * ralphthe1injajoined
16:19:06  * ralphthe1injapart
16:36:46  * jibayquit (Ping timeout: 246 seconds)
16:37:12  * defunctzombiejoined
16:50:14  * jibayjoined
17:16:55  * dominictarrjoined
17:20:26  * zz_shykeschanged nick to shykes
17:42:22  * AvianFlujoined
17:44:42  * AvianFluquit (Remote host closed the connection)
17:47:27  * ircretaryquit (Ping timeout: 276 seconds)
17:59:16  <rowbit>Hourly usage stats: [developer: 1, free: 90]
18:06:10  <chrisdickinson>substack: have you seen sse-stream?
18:06:32  <chrisdickinson>http://github.com/chrisdickinson/sse-stream
18:07:13  <chrisdickinson>tried to mimic prior art (shoe) with the api, though it only exposes a writable stream
18:07:31  <chrisdickinson>would be pretty easy to polyfill for browsers that don't have EventSource, too
18:12:40  * tphummeljoined
18:16:58  <mbalho>substack: a friend of mine was asking me what your glue code looks like
18:17:22  <mbalho>substack: you should make a github repo that isnt a module and is just a buncha glue code so i can show him
18:38:51  <Raynos>mbalho: what is glue code?
18:39:12  <mbalho>say you write a module that does routing
18:39:21  <mbalho>you have to use that module and make some routes
18:40:05  <fotoverite>Any type of code that is connecting crap code to good code. :P
18:40:19  <jjjjohnnny>all i do is glue
18:40:26  <mbalho>npm install sniff
18:40:28  <mbalho>npm install huff
18:40:29  <fotoverite>Digesting things like XML apis into a usable format per say.
18:40:32  <mbalho>npm install whippit
18:40:33  <jjjjohnnny>i dont even write modules
18:40:35  <jjjjohnnny>lol
18:41:56  <st_luke>npm install N20
18:42:54  <mbalho>i proposed once that we pick a monthly module theme
18:42:58  <mbalho>i am now re-proposing this idea
18:43:05  <mbalho>november: inhalants
18:43:43  <st_luke>npm install albuterol
18:44:03  <jjjjohnnny>npm install vicks-vapor-rub
18:44:12  <st_luke>winnar
18:44:46  <jjjjohnnny>npm install lady-farts
18:46:42  <jjjjohnnny>thats a south african analgesic
18:47:26  <Raynos>mbalho: just write code
18:47:46  <jjjjohnnny>Raynos: i try to write as little code as possible
18:47:49  <Raynos>mbalho: Routes: https://github.com/Raynos/signal-channel/blob/master/index.js#L9
18:52:25  <mbalho>hey how do websockets do backpressure? they return true/false on send but do they emit a drain event/
18:55:58  <Raynos>mbalho: ws has backpressure?
18:56:09  <mbalho>im asking
18:56:49  <Raynos>well they have a bufferedAmount field
18:56:57  <Raynos>that tells you how much is in the write buffer after you call send
18:57:01  <mbalho>so you hvae to poll it?
18:57:26  <Raynos>> because it would need to be buffered but the buffer is full, the user agent must close the WebSocket connection with prejudice.
18:57:34  <Raynos>buffer full? CLOSE WEBSOCKET.
18:57:38  * yorickjoined
18:57:47  <Raynos><w3c trollface />
18:59:16  <rowbit>Hourly usage stats: [developer: 1, free: 76]
18:59:22  <Raynos>you can implement a websocket stream with some kind of backpressure strategy
18:59:26  <Raynos>like a high watermark
18:59:45  <Raynos>that applies stream backpressure and then emits drain when the bufferedAmount falls below a low watermark
19:00:15  <Raynos>Make a PR to data-channel to implement this :P
19:00:29  <Raynos>ugh its not that easy if sockJS doesnt expose bufferedAmount
19:00:56  <mbalho>i dont use sockjs for these reasons
19:02:56  <Raynos>https://github.com/sockjs/sockjs-client/issues/95
19:03:21  <Raynos>the problem with websockets are proxies
19:03:32  <Raynos>too much of the internet kills, them you need a fallback
19:03:46  <Raynos>i dont care about browser fallbacks I care about network fallbacks
19:03:57  <mbalho>wss:// fixes those problems
19:04:14  <Raynos>it does?
19:04:17  <mbalho>yep
19:04:24  <Raynos>wss is not vulnerable to proxies not supporting websockets
19:04:30  <mbalho>correct
19:04:37  <Raynos>how?
19:04:48  <mbalho>proxies cant read encrypted headers
19:04:51  <mbalho>so they pass them through
19:05:01  <Raynos>oh i see
19:05:16  <Raynos>what if a proxy passes no headers at all
19:05:17  <mbalho>but wss:// is only supported on ios in the mobile world and node ssl is slow
19:05:34  <Raynos>wait wss is not supported on desktop?
19:05:43  <mbalho>yea it is
19:05:48  <mbalho>pretty much everywhere https is
19:05:52  <Raynos>node ssl being slow can be solved with a https load balancer
19:09:10  <dominictarr>mbalho, yeah, sounds like you'll have to proxy it.
19:09:20  <mbalho>proxy wat
19:09:31  <dominictarr>why did I say that?
19:09:37  <dominictarr>I mean poll it
19:09:41  <mbalho>ah yea
19:09:53  <mbalho>p.s. i am at awaken cafe downtown hackin
19:10:12  <mbalho>dominictarr: i had an idea for an app we could hack out
19:10:21  <mbalho>dominictarr: an irc client that syncs history from other peers
19:10:32  <mbalho>dominictarr: that runs in your browser as an offline app
19:10:35  <dominictarr>-- hmm, I was typing while reading the next bit where you guys where talking about proxies
19:10:51  <dominictarr>mbalho, so, persistent chat?
19:10:59  <mbalho>yea
19:11:12  <mbalho>chrome extensions can make raw tcp connections so we could connect to irc
19:11:13  <dominictarr>can't call it "chat" anymore.
19:11:18  <mbalho>haha why
19:11:24  <dominictarr>the metaphore is wrong
19:11:44  <dominictarr>it's not like physically being in the room.
19:12:13  <dominictarr>it's more like something else.
19:12:18  <mbalho>async chat/
19:12:24  <mbalho>so like... graffiti
19:12:36  <mbalho>you put up your message and someone sees it later
19:12:38  <mbalho>and then puts up their message
19:12:44  <dominictarr>yeah, like toilet stall graffiti
19:12:53  <mbalho>npm install for-a-good-time-call
19:12:59  <mbalho>npm install for-a-good-time-call-ryah-dahl
19:13:06  <dominictarr>"for a good time call $MAXOGDENSNUMBER"
19:13:51  <dominictarr>except, with graffiti you normally write it up when no one is looking.
19:14:15  <dominictarr>but this is, er, social graffiti
19:14:44  <mbalho>canvas?
19:15:13  <dominictarr>and speech bubbles for comments?
19:15:31  <mbalho>i will do the front end dev
19:16:36  <dominictarr>the old comments would fade into a mess of garbled nonsense under layers of other scrawling.
19:16:52  <mbalho>it would look just like irc
19:17:00  <mbalho>since it would be an irc client
19:17:16  <mbalho>but it would have a distributed layer and the ui would be html
19:17:27  <dominictarr>actually, I built a basic version of the graffiti idea for a demo for cascadia.js actually.
19:17:35  <dominictarr>right.
19:18:03  <dominictarr>so there is an aways connected server, and then the user's client replicates with that.
19:18:08  <mbalho>i want to name it after some entomology shit
19:18:10  <mbalho>on second thought
19:18:18  <mbalho>since ant colonies are distributed and eventually consistent
19:18:40  <mbalho>well each client connects to two places
19:18:49  <mbalho>the irc server itself so they can have a username
19:18:53  <mbalho>but also other peers
19:18:58  <mbalho>so they can get old messages that they missed while they were offline
19:19:26  <mbalho>so there is no central server with a database
19:19:27  <Raynos>mbalho: an irc client that syncs history from other peers
19:19:30  <Raynos>that's super useful
19:19:31  <mbalho>just a central server that connects clients
19:19:38  <Raynos>I have an IRC client that syncs history from a central server
19:19:39  <Raynos>it sucks
19:19:47  <mbalho>yea me too
19:19:52  <mbalho>well i ssh into screen
19:20:14  <mbalho>but i have the last 2 years worth of node.js irc logs sitting here
19:20:17  <mbalho>its dumb
19:21:42  <dominictarr>so, there is still a central IRC server.
19:21:49  <mbalho>no
19:21:57  <dominictarr>irc.freenode.net
19:21:58  <mbalho>there is a central server for connecting peers
19:22:00  <mbalho>oh right
19:22:03  <mbalho>well yea that is how irc works
19:22:05  <mbalho>but we dont have to run that
19:22:22  <dominictarr>so, this is with raynos' peer
19:22:27  <dominictarr>peer-connection ?
19:22:29  <mbalho>dunno
19:22:52  <mbalho>it would be cool to use a webrtc polyfill api
19:22:54  <Raynos>do we want to connect to IRC
19:22:55  <mbalho>so it works in browsers in the future
19:22:59  <Raynos>or do we want a distributed chat :P
19:23:00  <dominictarr>well, it could be. it's just a stream
19:23:22  <mbalho>Raynos: the distributed part is just for data sync to fill in gaps when you arent connected
19:23:25  <Raynos>how about we set up an irc bot
19:23:41  <Raynos>that has a webrtc endpoint
19:23:45  <Raynos>and outputs all the irc data
19:23:49  <dominictarr>it would be easy, because you can't change messages.
19:23:52  <Raynos>then some people connect to it
19:23:58  <Raynos>and everyone else replicates from everyone else
19:23:59  <dominictarr>does IRC have a timestamp?
19:24:02  <mbalho>yea
19:24:07  <dominictarr>what does the protocol look like?
19:24:07  <mbalho>look to the left of your messages
19:24:19  <dominictarr>my client doesn't show that...
19:24:21  <mbalho>oh
19:24:42  <dominictarr>is the timestamp part of the message? or is that time received?
19:24:59  <mbalho>a pretty good parser https://github.com/gf3/IRC-js/tree/master/lib
19:25:38  <mbalho>anyway i think it would be cool to write a) an irc client for browsers that runs in a chrome extension using the tcp connection stuff
19:25:53  <mbalho>b) a distributed sync layer for data between chrome extensions using the tcp connection stuff
19:26:00  <Madars>you mean like chatzilla?
19:26:06  <mbalho>what is chatzilla
19:26:10  <Raynos>mbalho: why chrome extensions
19:26:22  <Raynos>why not have it be a real web app
19:26:32  <Raynos>and use webrtc -> tcp proxies
19:26:33  <mbalho>what do you mean by 'real web app'
19:26:34  <Madars>irc client on Mozilla framework
19:26:42  <Madars>https://addons.mozilla.org/en-us/firefox/addon/chatzilla/
19:26:54  <mbalho>Madars: is that written in html+js?
19:27:18  <Raynos>mbalho: chrome extensions are not web apps
19:27:25  <Madars>in XUL, which is js + xml markup for dialogs
19:27:26  <Raynos>a web app is a website
19:27:33  <Madars>https://en.wikipedia.org/wiki/XUL
19:27:38  <mbalho>Raynos: you are using pretty vague terms
19:27:46  <mbalho>Madars: that doesnt sound fun to write
19:27:52  <Raynos>I dont want to install something to use irc
19:27:57  <Raynos>and I want to navigate to an uri
19:28:04  <Raynos>like every other website / web app does
19:28:12  <Raynos>installing shit is bullshit and fragmentation
19:28:36  <Raynos>Has anyone done any youtube reverse engineering?
19:28:36  <mbalho>i dont want to run a proxy server for irc connections
19:28:47  <Raynos>you dont run one
19:28:50  <Raynos>someone runs one for you
19:28:57  <Raynos>and you just use it
19:29:01  <Raynos>throw it on nodejitsu, done.
19:29:34  <mbalho>yea and we will all have community wifi and diaspora pods too
19:29:47  <Raynos>?
19:29:48  <mbalho>i want a thing people install that makes direct connections to freenode, thats all
19:30:02  <Raynos>thats a different thing then.
19:30:07  <mbalho>its an irc client
19:30:14  <mbalho>did you see points a and b above
19:30:42  <Raynos>irc client doesn't mean you have to install something
19:30:48  <Raynos>There are plenty of web based irc clients
19:31:00  <mbalho>they all suck because they have to pool connections to freenode and all that bullshit
19:31:23  <mbalho>you want to use proxies to fake decentralized architectures
19:31:33  <dominictarr>it doesn't matter, Raynos can run it as a website, and connect to irc through a proxy.
19:31:41  <jesusabdullah>nodjatso
19:32:21  <Raynos>whats the difference between connecting to freenode over TCP
19:32:43  <Raynos>and connecting to a proxy over WebRTC and having the proxy forward your traffic to freenode over TCP
19:32:49  <Raynos>other then adding another failure point
19:32:52  <mbalho>i would guess the answer is the reason irccloud is still in closed beta
19:33:08  <ralphtheninja>sup guys, kind of lurking in the bg here :)
19:33:47  <mbalho>Raynos: the benefit of your approach is that the apis are future proof
19:34:04  <mbalho>Raynos: the benefit of my approach is that you dont have to deal with proxy bs
19:34:05  <Raynos>I meant more how is it "fake decentralized"
19:34:57  <mbalho>you said it above 'adding another failure point'
19:35:06  <dominictarr>mbalho, I can't see source timestamps in that IRC parser
19:35:59  <dominictarr>also, notice that new messages are always written to the bottom of the chat list.
19:36:02  <mbalho>dominictarr: hmm i might have just been thinking of the log format i get from my client
19:37:06  <dominictarr>when we are replicating the missed messages, we'd need to reassemble the order.
19:37:28  <dominictarr>so that the conversation still made sense.
19:37:40  <dominictarr>ralphtheninja, hey whats up?
19:37:48  <mbalho>you can assume clocks are close-ish and then get your missing windows and then delete duplicates due to overlapping clock windows
19:38:14  <mbalho>and if the clock on your system is fucked up then you get bad data but whatever you probably dont care
19:38:28  <dominictarr>yeah, I guess that you could just send a few extra messages.
19:38:43  <ralphtheninja>dominictarr: noticed you mentioned this channel on twitter so I thought I'd join you and see what's happening in here
19:38:55  <dominictarr>ralphtheninja, you've come to the right place!
19:39:03  <ralphtheninja>dominictarr: sounds good :)
19:39:14  <dominictarr>this is like the vienna circle of node.js
19:39:21  <dominictarr>MAD SCIENCE
19:39:22  <LOUDBOT>JUST USE THE COMMAND LINE BRO, WHAT THE FUCK
19:40:01  <ralphtheninja>dominictarr: hehe, yeah I figured as much by looking at the /names :)
19:40:14  <dominictarr>mbalho, as long as no one ever said the exact same message twice it would work fine
19:40:15  <dominictarr>mbalho, as long as no one ever said the exact same message twice it would work fine
19:40:15  <dominictarr>mbalho, as long as no one ever said the exact same message twice it would work fine
19:40:15  <dominictarr>mbalho, as long as no one ever said the exact same message twice it would work fine
19:40:16  <dominictarr>mbalho, as long as no one ever said the exact same message twice it would work fine
19:40:17  <dominictarr>mbalho, as long as no one ever said the exact same message twice it would work fine
19:40:23  <mbalho>thats a service
19:40:29  <dominictarr>but if people repeated stuff... that would get lost.
19:40:30  <mbalho>irc clietn with free de-duplication
19:40:42  <mbalho>bonus features
19:41:26  <mbalho>anyway the real reason i brought it up was that we have written too many modules and not enough apps
19:41:38  <dominictarr>if I type a message like that it's deff helpful, but it could be a problem if people have like, catch phrases.
19:41:58  <mbalho>dominictarr: i honestly dont think that will matter enough to be a deal breaker
19:42:18  <mbalho>or we can fix the bug later
19:43:06  <dominictarr>right, so you just connect to a peer and say "I disconnected at $TIME" and it sends you the updates since then.
19:43:23  <mbalho>yea or ideally a more bittorrent style sync
19:43:29  <dominictarr>but what if that client was also disconnected at time?
19:43:38  <dominictarr>what is "bittorrect style"?
19:43:51  <mbalho>consistent hashing, dht etc
19:43:57  <mbalho>you find peers that have what you need
19:44:00  <mbalho>and sync parts from them
19:44:25  <dominictarr>right, if the messages had inherent ordering you could do that
19:44:45  <mbalho>well you have time series data
19:44:58  <mbalho>|---- ------------ - --- ---------------------------|
19:45:36  <dominictarr>hmm, so maybe the client could attach their own timestamp, but it's only tracked to the minute (say)
19:45:44  <dominictarr>and then collisions are cleaned up
19:45:49  <mbalho>looks like this http://img97.imageshack.us/img97/1956/whiteblocksbeforegreenb.png
19:46:00  <chrisdickinson>mbalho: added some dom stream modules to stream-punks/issues/6
19:46:08  <mbalho>chrisdickinson: sweet
19:46:36  <chrisdickinson>also nearing completion on a streaming GLSL parser -- the streaming tokenizer is already done
19:46:44  <dominictarr>mbalho, there is some heavy lifting before this becomes easy I think.
19:46:59  <chrisdickinson>(though, in this case, streaming is maybe a bit silly.)
19:47:29  <mbalho>dominictarr: what is missing?
19:47:30  <dominictarr>but am gonna write replication for levelup
19:48:17  <dominictarr>the problem is that it doesn't fit very well into what we already have for replication.
19:48:21  <mbalho>i wrote replication on top of leveldb once https://github.com/maxogden/plumbdb/blob/master/index.js#L157
19:48:50  <mbalho>and https://github.com/maxogden/plummet/blob/master/test.js#L91
19:48:59  <dominictarr>how does it work?
19:49:36  <mbalho>stores a seq log using prefixed keys
19:49:41  <mbalho>and data using prefixed keys
19:49:49  <mbalho>so you get two ranges inside one leveldb
19:50:25  <mbalho>then you can replay seq logs over http with 'get me everything since my last update' queries
19:50:28  <dominictarr>the data has a prefix?
19:50:32  <dominictarr>(key)
19:50:35  <mbalho>yea internally
19:51:11  <dominictarr>how do you merge conflicts?
19:51:30  <mbalho>i dont merge, i just use couch style revisions to tell you when there are conflicts
19:51:39  <mbalho>then you have to fix the data and retry
19:51:49  <dominictarr>so, you put the a _rev on the document?
19:51:57  <mbalho>yep
19:52:15  <mbalho>the test suite on both projects works if you wanna play with it
19:53:06  <dominictarr>both projects?
19:53:12  <mbalho>see above links
19:53:17  <dominictarr>i see now
19:53:29  <mbalho>one is the disk storage layer the other is the web server layer
19:53:42  <dominictarr>what is microtime?
19:54:23  <mbalho>nanosecond timestamps
19:54:26  <dominictarr>aha.
19:55:16  <dominictarr>so, does each node have to remember the seqnumber from each other database it replicates with?
19:56:15  <dominictarr>what if we both have an identical DB, with sq=10
19:56:29  <mbalho>oh the way i did it was timestamp based actually in plummet
19:56:36  <dominictarr>then we partition, and both add a doc.
19:56:39  <Raynos>Use vector clocks!
19:57:16  <dominictarr>Raynos, a tracking timestamps for each node IS a vector clock.
19:57:23  <mbalho>haha
19:57:27  <Raynos>oh.
19:57:51  <dominictarr>it's one flavor of vector clock.
19:58:01  <dominictarr>you could also put a vector clock on each document.
19:58:53  <dominictarr>so, mbalho if we both add a doc, then we both have seq=11 now
19:59:11  <mbalho>so in plummet it would be a nanosecond timestamp instead of seq
19:59:16  <rowbit>Hourly usage stats: [developer: 6, free: 148]
19:59:42  <dominictarr>ah, right. well, same diff really. it's just a monotonically increasing number.
19:59:43  <mbalho>the likelihood of conflicting timestamps is low and if that happens you could just pick a random winner
20:00:08  <dominictarr>mbalho, use a deterministic random winner though.
20:00:25  <dominictarr>like sort the hashes of the document + timestamp
20:00:26  <mbalho>yea like a hash of the contents of the doc or something
20:00:35  <mbalho>WERD
20:00:45  <dominictarr>yeah, because then each node will pick the same winner.
20:01:04  <ralphtheninja>smart :)
20:01:13  <mbalho>anyway i got plumbdb to a point where it passed a simple replication test
20:01:20  <mbalho>its a total experiment though, but i learned a lot
20:01:41  <mbalho>and it was before there was a good leveldb lib
20:01:58  <dominictarr>mbalho, so when I write your updates to my replica, how does that show up in the seq log?
20:02:31  <mbalho>dominictarr: on each doc i store _stamp, _id and _rev
20:02:43  <dominictarr>aha
20:02:45  <mbalho>the failure point being servers that are out of sync
20:03:01  <dominictarr>failure point?
20:03:38  <dominictarr>do you mean that replication fails?
20:03:52  <mbalho>well.. if your server thinks it is 1970
20:03:56  <mbalho>and mine thinks it is 2012
20:04:14  <mbalho>and i replicate some docs from you i will insert them into 1970
20:04:27  <mbalho>then if someone asks me for new docs i wont give them anything
20:04:33  <mbalho>wait that logic might not be right
20:05:13  <dominictarr>servers are always gonna be out of sync, if only slightly.
20:05:50  <mbalho>you could do a vector clock style dance to determine the offset and adjust your queries
20:05:58  <dominictarr>what happens if there are a bunch of nodes connecting to each other intermittently?
20:06:38  <mbalho>in plummet when you replicate from someone else you send them the timestamp of your newest doc
20:06:38  <dominictarr>exchange something like {dominictarr: 304250134, mbalho: 632647253}
20:06:44  <mbalho>dominictarr: yea
20:06:57  <mbalho>and they send you back every doc they have that comes after the timestamp you sent them
20:07:24  <mbalho>so a step that determines the relative time discrepancy based on the us government atomic clock in that mountain somewhere
20:07:27  <dominictarr>mbalho, your newest doc FROM them?
20:07:27  <mbalho>would be cool
20:08:09  <dominictarr>or just the newest doc in your db?
20:08:15  <mbalho>umm
20:08:24  <mbalho>newest doc in your db
20:08:31  <dominictarr>ah... okay
20:08:37  <mbalho>it assumes all dbs are 100% eventually consistent
20:08:40  <dominictarr>that will only work for master-slave replication
20:08:41  <jjjjohnnny>mmm legal code
20:08:57  <mbalho>dominictarr: it is multimaster
20:09:25  <dominictarr>but if I update my database later, while I am disconnected, then I will tell you a later time
20:09:39  <dominictarr>and you may have updates that where before that.
20:09:49  <dominictarr>but I havn't told you that I want them.
20:10:01  <mbalho>oh right, this is why i was gonna ditch timestamps
20:10:31  <mbalho>or at least use a seq number
20:10:45  <dominictarr>if you track timestamps per node_id it will work.
20:10:45  <mbalho>it would be nice to be able to replicate from a base starting point
20:10:55  <dominictarr>that is how scuttlebutt works.
20:10:57  <mbalho>instead of having to replicate from 0 all the time
20:11:33  <mbalho>dominictarr: ahh interesting
20:11:48  <mbalho>dominictarr: do all nodes need to know about all other nodes?
20:11:57  <dominictarr>with scuttlebutt they do.
20:12:03  <mbalho>chrisdickinson: does anyone else at UA do node stuff?
20:12:09  <mbalho>dominictarr: thats the tradeoff then eh
20:12:17  <chrisdickinson>mbalho: sometimes wadey
20:12:34  <chrisdickinson>https://github.com/wadey
20:12:34  <dominictarr>I'm gonna implement a new replication strategy, using merkle trees.
20:12:42  <mbalho>chrisdickinson: do you guys use it in production at all?
20:12:49  <chrisdickinson>unfortunately no
20:12:54  <mbalho>dominictarr: call it npm install erkel
20:12:57  <chrisdickinson>that's actually my goal for the next year
20:12:59  <mbalho>cause that shits nerdy
20:13:07  <jjjjohnnny>WHAT CONSPIRACY HO!
20:13:07  <LOUDBOT>IT'S ONLY 5:30 IN THE MORNING. NO DAY CHANGE. THESE ARE LIES.
20:13:34  <dominictarr>mbalho, maybe, if you can think of a good arconym for that to stand for
20:13:46  <mbalho>well the word erkel sounds like merkle
20:13:48  <mbalho>so there you go
20:13:56  <mbalho>OH
20:13:57  <mbalho>URKEL
20:13:58  <mbalho>NOT ERKEL
20:13:59  <LOUDBOT>UGH I AM ALWAYS FALLING INTO THE WATER SURROUNDING THE WIZARDS TOWER
20:14:12  <mbalho>http://en.wikipedia.org/wiki/Steve_Urkel
20:14:23  <dominictarr>it's still phonetic
20:14:26  <jjjjohnnny>DID I DO THAT?
20:14:26  <LOUDBOT>I THINK I HAVE A MARIJUANA FETISH
20:15:00  <chrisdickinson>LOUDBOT YOU MAKE MY DAY CONSISTENTLY BETTER
20:15:00  <LOUDBOT>THERE ARE TOO MANY CAPITAL LETTERS!
20:15:33  <dominictarr>LOUDBOT, twitlast
20:15:34  <LOUDBOT>http://twitter.com/loudbot/status/270621356624863232
20:17:40  * ralphtheninjaquit (Quit: Lost terminal)
20:18:12  * ralphtheninjajoined
20:18:28  <Raynos>chrisdickinson: you dont use node or streams in production? :(
20:18:56  <mbalho>UA is a buncha smart python doods
20:18:56  <chrisdickinson>i use streams all over the frontend, but not on the backend, no.
20:19:07  <mbalho>(well, started out as such(
20:19:18  <chrisdickinson>eventually i'd like to spin up a couple of apis that are node-based and streaming.
20:19:54  <dominictarr>mbalho, what cafe are you at? I will join you shortly.
20:19:56  <mbalho>chrisdickinson: i have a random APN question... do you know if UA gets better deliverability on push notifications due to them being higher traffic?
20:20:04  <mbalho>dominictarr: awaken cafe, gonna go get lunch soon tho
20:20:30  <mbalho>chrisdickinson: i have a conspiracy theory that apple gives bulk vendors better deliverability
20:20:36  <chrisdickinson>mbalho: i don't know offhand -- i know there's all sorts of hoops we have to jump through to keep APNS happy
20:21:11  <mbalho>chrisdickinson: i'd love to see a blog post or talk on that topic if you know of any
20:21:24  <chrisdickinson>i'll see if i can dig one up
20:21:26  <dominictarr>mbalho, sounds good. I'll meet you at awaken, then we can get lunch?
20:21:35  <mbalho>dominictarr: coolio
20:24:55  <dominictarr>just had a weird mental image
20:24:56  <mbalho>chrisdickinson: i think a streaming api for web audio would be killer
20:25:08  <dominictarr>skinny jeans jumpsuit
20:25:11  <chrisdickinson>+1
20:25:56  <chrisdickinson>mbalho: i'm actually kind of poking around at the idea of a streaming api for webgl (that treats it as a fast map)
20:25:57  <dominictarr>possibly, with canvas vimbrams that look like chuck taylors, but with toes.
20:25:59  <mbalho>there was a hipster boutique in berlin that sold sweatpants material jumpsuits for adults
20:26:05  <chrisdickinson>so, pipe large amount of data through webgl for processing and back out
20:26:14  <mbalho>chrisdickinson: oh that is awesome
20:26:34  <dominictarr>I want skin tight, like in scifi.
20:26:47  <mbalho>chrisdickinson: like this kinda https://github.com/maxogden/domnode-webworker
20:26:53  <chrisdickinson>yes
20:27:21  <chrisdickinson>i'm working on the glsl tokenizer / parser so i can take glsl and add a module system (for one)
20:27:32  <chrisdickinson>and for two, translate glsl into javascript / javascript into glsl
20:28:07  <chrisdickinson>though the latter goal is a little more "just to see if it can be done" than anything practical
20:28:25  <mbalho>word
20:28:27  <jjjjohnnny>mbalho: do you use a polyfill for device storage via phoengap?
20:28:39  <jjjjohnnny>like http://nparashuram.com/IndexedDBShim/
20:29:06  <mbalho>nope i cache in localstorage cause my app doesnt need much offline storage
20:29:33  <mbalho>but i would probably write a leveldb phonegap plugin if i was gonna go the large offine storage route
20:29:37  <mbalho>cause websql perf sucks
20:30:05  <jjjjohnnny>how would that work?
20:30:25  <dominictarr>mbalho, see you soon
20:30:26  <jjjjohnnny>can phonegap use indexdb?
20:30:39  <mbalho>phonegap uses a web browser from the phone operating system
20:30:47  <mbalho>but you can write your own native extensions, its the same as node
20:31:08  <mbalho>http://caniuse.com/#feat=indexeddb
20:31:57  <jjjjohnnny>so no dice
20:33:02  <jjjjohnnny>well its just text data anyway, so I guess I can just use localstorage
20:34:46  * dominictarrquit (Ping timeout: 252 seconds)
20:35:27  * juliangr1berquit (Quit: leaving)
20:39:06  <mbalho>i think im gonna call my blog post about the domnode stuff "Streams in the Browser"
20:39:37  <mbalho>"Streaming Data With JavaScript" would be good too
20:40:05  <jjjjohnnny>check out these sweet API docs http://www.irs.gov/pub/irs-pdf/i1023.pdf
20:41:13  <mbalho>"Charitable risk pool" "Close connection" "Common control"
20:41:15  <mbalho>kind of sounds like programming
20:41:50  <jjjjohnnny>laws and contracts are programs
20:42:13  <jjjjohnnny>sans logic
20:44:33  <jjjjohnnny>definitions: up is down, you is me, we is them, and unlimited is quite limited indeed
20:45:32  <jjjjohnnny>UNTIL THE RISE OF THE ROBOCONGRESS
20:45:32  <LOUDBOT>THEY HAVE SOME CLEVER LYRICS BUT ALL THEIR SONG SOUND THE GODDAMN SAME
20:45:37  * shykeschanged nick to zz_shykes
20:46:30  <mbalho>MOMENTS OF EXTREME PROFUNDITY
20:46:30  <LOUDBOT>WE DON'T NEED NO STINKIN' BADGES
20:48:47  <jjjjohnnny>CONGRESS SEGFAULTED AND CONTINUED OPERATING WTF
20:48:47  <LOUDBOT>THAT'S AN ASIDE, NOT A CRITICISM OR A PROPOSAL
20:50:38  <jjjjohnnny>i want a real life loudbotbuddy
20:51:03  <mbalho>we could build a loudroid
20:51:23  <mbalho>that would be a fun project actually
20:51:27  <jjjjohnnny>yeah it would
20:51:37  <mbalho>FUCK BOATS LETS DO THIS
20:51:38  <LOUDBOT>IK BEN NIET STOM, IK BEN DE KONING VAN PERSIË
20:52:38  <mbalho>oh im just gonna use my talk title from before: "Streams are useful when writing JavaScript programs"
20:54:06  <jjjjohnnny>exstreamly useful :^)
20:54:29  <mbalho>aww yeaaa
20:55:06  <jjjjohnnny>you can do it but i dont want credit
20:55:50  <jjjjohnnny>I HAD THISTREAM ABOUT YOU
20:55:50  <LOUDBOT>SIX OF SPADES, THREE OF DIAMONDS, AND THE JOKER
20:56:22  <jjjjohnnny>ALL SHUFFLING ONE ANOTHER
20:56:22  <LOUDBOT>FUCKING MAGNETS HOW DO THEY WORK
20:57:23  <jjjjohnnny>AN ABSTRACTION 4 THE ATTRACTION
20:57:23  <LOUDBOT>THIS WILL BE THE CONTINUATION OF THE MOTHERFUCKING RECOVERY, MAFUCKAS.
20:57:43  <jjjjohnnny>YES IT WAS THAT GOOD
20:57:43  <LOUDBOT>SOLARIS IS FIVE TIMES BETTER THAN LINUX!
20:59:16  <rowbit>Hourly usage stats: [developer: 3, free: 62]
21:09:37  * paul_irishchanged nick to paul_irish_
21:28:16  * thatguydanjoined
21:59:16  <rowbit>Hourly usage stats: [developer: 1, free: 49]
22:01:16  * thatguydanquit (Quit: thatguydan)
22:08:26  * AvianFlujoined
22:22:32  * AvianFluquit (Remote host closed the connection)
22:41:20  * thatguydanjoined
22:50:16  * AvianFlujoined
22:58:18  * defunctzombiequit (Remote host closed the connection)
22:59:16  <rowbit>Hourly usage stats: [developer: 0, free: 54]
23:04:29  * yorickquit (Remote host closed the connection)
23:04:50  <jjjjohnnny>Raynos: peer connection shim, does this mean I can use the server as a peer client to a browser?
23:10:45  <substack>going to http://tokyohackerspace.org/ tonight for their open house
23:11:21  <substack>chrisdickinson: pretty neat
23:11:44  <substack>mbalho: there are some application-esque glue projects on my github
23:19:23  <substack>they just have a server.js instead of an index.js mostly
23:22:52  * devaholicjoined
23:28:47  * defunctzombiejoined
23:37:15  * defunctzombiequit (Ping timeout: 252 seconds)
23:54:21  * dominictarrjoined
23:59:16  <rowbit>Hourly usage stats: [developer: 11, free: 66]