00:00:00  * ircretaryquit (Remote host closed the connection)
00:00:07  * ircretaryjoined
00:00:12  * thl0joined
00:01:00  <jesusabdullah>dominictarr: my guess is it's mostly a read issue, I'll have to talk to isaacs about it maybe
00:01:17  <dominictarr>jesusabdullah: what happens if you do it straight to stdout?
00:01:31  <dominictarr>but input with through?
00:01:48  <Raynos>mbalho: npm docs data-channel
00:02:05  <Raynos>mbalho: https://github.com/Raynos/data-channel
00:02:12  <mbalho>kewl
00:02:16  * thl0quit (Read error: Operation timed out)
00:02:31  <jesusabdullah>dominictarr: interesting things
00:02:34  <jesusabdullah>username: josh
00:02:35  <jesusabdullah>josh
00:02:35  <jesusabdullah>password: kb
00:02:35  <jesusabdullah>kb
00:02:35  <jesusabdullah>un: josh
00:02:36  <jesusabdullah>pw: kb
00:02:41  <jesusabdullah>(kb is my brother, heh)
00:02:52  <mbalho>ur mom heh
00:03:14  <dominictarr>is that correct?
00:04:47  <jesusabdullah>no, it's echoing what I typed in
00:04:51  <jesusabdullah>not sure what that's about
00:06:12  <mikeal>ok
00:06:25  <mikeal>i have a module I need to reassign to "empty.js"
00:06:27  <mikeal>but it's a local module
00:06:33  <mikeal>it's not loaded by name
00:06:38  <rvagg>live substack - http://www.ustream.tv/channel/node-philly-2013
00:06:54  <mikeal>can i actually do {"./index.js":"empty.js"}
00:12:42  * defunctzombiechanged nick to defunctzombie_zz
00:14:29  <no9>mbalho yes t.isa is undefined :(
00:14:40  <no9>there is a setversion issue as well
00:15:11  <rvagg>no9: t.ok(foo instanceof Bar) ?
00:18:52  <mbalho>no9: yea looks like tape doesnt implement isa, weird
00:19:28  <no9>mbalho sweet level-down-test.js passes
00:19:37  <mbalho>woot!
00:19:48  <mbalho>1 down 9 to go (or something like that)
00:19:58  <no9>I have some old code for put get del so they should be easy enough
00:20:30  <mbalho>no9: i think levelidb has CRUD, but its missing iteartor
00:20:33  <mbalho>iterator*
00:20:49  <no9>Yes dominictarr sent me over some stuff for that
00:20:58  * AvianFluquit (Remote host closed the connection)
00:21:04  <mbalho>sweet
00:21:30  <no9>Got a crazy couple of days but I will be focusing on it in my spare time
00:21:35  * AvianFlujoined
00:21:41  <no9>anyhoo nighty nighty
00:21:46  <mbalho>no9: night!
00:26:06  * AvianFluquit (Ping timeout: 268 seconds)
00:46:37  * tmcwjoined
00:48:32  <Raynos>Whats the best way to do app.get("/foo", function (req, res) { forward(req, res, "http://foo.com") }) ?
00:48:37  <Raynos>I want to take a req/res
00:48:43  <Raynos>and just forward the entire thing to somewhere else
00:48:55  <Raynos>basically proxy a single [req, res] pair
00:49:44  <Raynos>maybe https://github.com/nodejitsu/node-http-proxy#proxy-requests-within-another-http-server
00:56:48  * jxson_quit (Remote host closed the connection)
00:57:22  * jxsonjoined
01:00:26  * tilgoviquit (Remote host closed the connection)
01:02:38  * jxsonquit (Ping timeout: 252 seconds)
01:04:24  <Raynos>substack: is airport and the new seaport going to have trouble working together?
01:06:46  * tmcwquit (Remote host closed the connection)
01:14:26  * mikealquit (Quit: Leaving.)
01:14:33  * mikolalysenkoquit (Ping timeout: 256 seconds)
01:21:15  * jibayquit (Quit: Leaving)
01:24:47  * jxsonjoined
01:25:45  * jxsonquit (Read error: Connection reset by peer)
01:34:56  * fallsemojoined
01:39:06  * defunctzombie_zzchanged nick to defunctzombie
01:44:30  <defunctzombie>Raynos: respond with a redirect?
01:44:37  <defunctzombie>Raynos: res.redirect ?
01:44:46  <Raynos>defunctzombie: I want transperent redirect
01:44:48  <Raynos>not a real redirect
01:44:53  <Raynos>this is just for internal sanity
01:44:56  <Raynos>publically its one domain
01:45:03  <Raynos>internally its many small HTTP servers
01:45:13  <defunctzombie>Raynos: route it internally then?
01:45:24  <Raynos>yeah
01:46:31  * jcrugzzjoined
01:46:46  * stagasquit (Quit: ChatZilla 0.9.90-rdmsoft [XULRunner])
01:51:36  * thl0joined
01:58:33  * dominictarrquit (Quit: dominictarr)
02:26:10  * st_lukejoined
02:27:06  * ralphtheninjaquit (Ping timeout: 245 seconds)
02:29:11  <st_luke>isaacs: hey
02:47:07  * CoverSlidequit (Quit: Lost terminal)
02:50:40  <jesusabdullah>isaacs: wanna help me figure out something weird with read?
02:51:08  <jesusabdullah>isaacs: https://gist.github.com/jesusabdullah/5448452 I think it's due to the streams not being process stdio streams but isn't read supposed to support that?
02:52:04  <rvagg>jesusabdullah: like when you have a field with silent:true and replace:<something> and it adds about 10 <something>'s each time you backspace?..
02:52:42  <rvagg>ah, different issue
02:52:54  <rvagg>that's my read issue but it's not pressing enough to bother figuring out what causes it
02:52:56  <jesusabdullah>rvagg: no like when I have a field with silent:false and it doesn't register that I mashed enter
02:53:17  <rvagg>try this just for fun: silent: true, replace: '\u2714'
02:53:24  <rvagg>then backspace
02:53:31  <jesusabdullah>heh
02:53:55  <jesusabdullah>will when I can get a login wrapper around bashful that I can pipe telnet into and out of
02:54:38  <jesusabdullah>or some other system, trying to put that decision off
02:55:57  * nichola__joined
02:56:50  * nicholasfquit (Read error: Connection reset by peer)
03:01:07  * st_lukequit (Remote host closed the connection)
03:02:18  * st_lukejoined
03:02:42  <Raynos>At some point I just stopped becoming a node streams champion
03:02:56  <Raynos></3
03:03:24  * defunctzombiechanged nick to defunctzombie_zz
03:03:31  <rvagg>oh, out of love Raynos?
03:03:53  <Raynos>the complexity of streams just overwhelms me into a meh
03:04:14  <rvagg>tbh I only implemented my first real streams2 stream yesterday, two of them in fact, and it was quite a pleasant experience compared to streams1
03:05:39  <st_luke>jesusabdullah: did you figure it out
03:08:43  <st_luke>are there older irc logs than here? http://static.izs.me/irclogs/node.js/
03:10:18  <jesusabdullah>st_luke: no I did not figure out what was up with the thing
03:12:47  <st_luke>jesusabdullah: node version?
03:12:55  <st_luke>10.x right?
03:13:07  <jesusabdullah>hell naw, 0.8
03:13:45  <st_luke>ah
03:16:50  * nichola__quit (Read error: Connection reset by peer)
03:17:16  * nicholasfjoined
03:21:30  * thl0quit (Remote host closed the connection)
03:28:59  <st_luke>jesusabdullah: are you not passing anything to through?
03:29:03  <st_luke>for stdin & stdout
03:30:36  <jesusabdullah>yeah all default behavior, they're "identity" streams
03:31:16  <mbalho>chrisdickinson: hey does inflate browserify?
03:39:38  <st_luke>isaacs: I think pksunkara has given up on this and I asked hackedy if he's still planning on it, and it sounds like he isn't. do you remember the feedback you gave to pksunkara about his implementation? https://github.com/joyent/node/pull/3471#issuecomment-6622542
03:44:30  <mbalho>chrisdickinson: it would be super helpftul to have a demo showing how to use require('inflate') with a typed array
03:57:59  * jcrugzzquit (Ping timeout: 256 seconds)
04:04:34  * fallsemoquit (Quit: Leaving.)
04:16:52  <chrisdickinson>mbalho: you use buffers with inflate, but yes, it does browserify
04:16:55  <chrisdickinson>mbalho: if you want it to work, you can just do `typedarrayinstance.readUInt8 = function(idx) { return this[idx] }`
04:16:58  <chrisdickinson>*work with typed arrays
04:16:58  <chrisdickinson>it does very little slicing of buffers
04:21:53  <rvagg>doesn't browserify translate Buffer code to typed arrays?
04:22:04  <rvagg>or at least implement a compatible Buffer interface?
04:25:17  * dguttmanquit (Quit: dguttman)
04:31:12  <chrisdickinson>it implements a "compatible-ish" interface
04:31:22  <chrisdickinson>originally it didn't support array indexing
04:31:32  <chrisdickinson>but had the same slice properties
04:31:38  <chrisdickinson>(i.e. zero-copy slice)
04:32:10  <chrisdickinson>but now it has array indexing, but is copy-on-slice
04:32:27  <chrisdickinson>the big problem is oldie compat
04:32:40  <chrisdickinson>otherwise things could nicely sit on top of typedarrays, i think
04:38:06  <rvagg>it wouldn't be difficult to do a wrapped slice like proper Buffers would it?
04:39:11  <chrisdickinson>rvagg: the issue is that when you produce a child object, array indexing still needs to work (and to affect the parent buffer)
04:39:25  <rvagg>ah, of course
04:39:26  <chrisdickinson>the only object with this property in the browser are typed arrays
04:39:34  <chrisdickinson>but typed arrays aren't everywhere
04:39:45  <rvagg>mm, copy on slice would be pretty inefficient
04:39:49  <chrisdickinson>yeah
04:40:04  <chrisdickinson>it makes me very, very nervous
04:41:07  <rvagg>Proxies would probably supply a good fix
04:41:13  <rvagg>when we eventually get good support
04:41:52  <chrisdickinson>true, but at that point you could use the typed arrays
04:42:14  <chrisdickinson>(basically you'd use browserify's "vm" module to pull out a clean copy of Uint8Array and annotate it with buffer-y stuff)
04:45:37  * nicholasfquit (Read error: Connection reset by peer)
04:46:05  * nicholasfjoined
05:10:44  * jxsonjoined
05:12:15  <mbalho>chrisdickinson: oh i got an error 'typedarrayinstance.readUInt8', have you thought about checking if its a typed array and just using [] ?
05:13:35  <mbalho>chrisdickinson: oops meant to say i got an error earlier 'has no method readUInt8'
05:13:39  <chrisdickinson>right
05:13:49  <chrisdickinson>it's probably easier to add that method
05:14:10  <chrisdickinson>because inflate is also going to be producing buffers
05:14:18  <mbalho>chrisdickinson: i dont know how to take an arraybuffer and turn it into a Buffer
05:14:24  <mbalho>chrisdickinson: in the browser
05:14:27  <chrisdickinson>you don't need to turn it all of the way
05:14:48  <mbalho>chrisdickinson: do you have any example code showing xhr arraybuffer or filereader arraybuffer -> inflate ?
05:15:17  <chrisdickinson>not offhand
05:15:29  <mbalho>chrisdickinson: i was trying to figure that out earlier and couldnt get anything to work
05:15:32  <chrisdickinson>i've done it before i do believe
05:15:57  <chrisdickinson>ui = new Uint8Array(arrayBuffer); ui.readUint8 = function(x) { return this[x] }
05:16:03  <chrisdickinson>and then "write(ui)"
05:16:14  <chrisdickinson>the only method inflate uses is readUint8
05:16:19  <mbalho>chrisdickinson: ah ok
05:16:28  <mbalho>chrisdickinson: so you dont think i should make a Buffer
05:16:36  <chrisdickinson>no real need
05:16:49  <mbalho>chrisdickinson: so why make eveyrone monkeypatch their buffers instead of fixing your lib to work with typed arrays?
05:17:08  <chrisdickinson>mbalho: because it's supposed to work in node, too.
05:17:20  <chrisdickinson>it's… complicated.
05:17:26  <mbalho>chrisdickinson: well it doesnt 'work' in the browser if you have to monkeypatch things... haha
05:17:36  <chrisdickinson>oh, it works, so long as you're using buffers :)
05:17:43  <chrisdickinson>you can *make* it work with typed arrays
05:18:16  <mbalho>chrisdickinson: until i see code where you read a file from xhr/filereader and turn it into a Buffer i won't consider it working in a browser
05:18:43  <chrisdickinson>mbalho: could you gist me some deflated data?
05:20:29  <chrisdickinson>well
05:20:32  <chrisdickinson>nevermind, i can do that myself
05:21:00  <chrisdickinson>suppose i have to test out the new version of beefy anyway
05:21:00  <chrisdickinson>:)
05:21:10  <mbalho>chrisdickinson: i as just gonna send you the output of `gzip oaklandcrime.csv`
05:21:19  <chrisdickinson>gzip !== deflate
05:21:34  <chrisdickinson>but also whoa, haha
05:22:34  <mbalho>chrisdickinson: oh oops, i wonder if theres a command line deflater then
05:23:10  <chrisdickinson>i just used z=require('zlib');fs=require('fs');fs.createReadStream('index.js').pipe(z.createDeflate()).pipe(fs.createWriteStream('index.js.z'))
05:24:38  * jcrugzzjoined
05:29:17  * st_lukequit (Remote host closed the connection)
05:30:20  <mbalho>chrisdickinson: how much extra junk is in gzip beyond what is in deflate?
05:30:38  <chrisdickinson>iirc there are a bunch of different block types in gzip
05:30:45  <chrisdickinson>but it's "built around" deflate
05:37:12  <chrisdickinson>mbalho: https://gist.github.com/chrisdickinson/86dd7267c05c892dfae2
05:37:46  <chrisdickinson>in this case i just turned things into a buffer
05:38:10  <jesusabdullah>I DONT NEED NO INSTRUCTIONS TO KNOW HOW TO ROCK!!!1!
05:38:14  <chrisdickinson>i think i might just add a "setEncoding" to inflate
05:38:18  <mbalho>chrisdickinson: why chunk it?
05:38:21  <chrisdickinson>and one encoding will be "typed-array"
05:38:29  <chrisdickinson>just to give the event loop some space to breathe
05:38:48  <mbalho>ah
05:39:02  <chrisdickinson>mostly just simulating moz-chunked-arraybuffer :(
05:39:18  <mbalho>for blocking cpu stuff does that have any effect? ive never considered doing that
05:39:22  <mbalho>but i could be n00b
05:39:52  <chrisdickinson>mbalho: well, it keeps the browser from throwing up a nasty "hey this page hung" dialog
05:39:59  <mbalho>chrisdickinson: ah cool
05:40:02  <chrisdickinson>and preserves some degree of responsiveness
05:40:08  <chrisdickinson>i.e., the dom updates etc
05:40:40  <chrisdickinson>inflate internally avoids it like the plague because from its level it can only make horrible guesses that make things take forever
05:40:51  <chrisdickinson>but as the user of inflate you can reasonably chunk up your data if you wish
05:41:01  <chrisdickinson>(hopefully those words made sense. they made sense in my head.)
05:41:38  * jcrugzz_joined
05:41:58  <mbalho>chrisdickinson: i get a 'failed header check' error when i run that
05:42:17  <mbalho>chrisdickinson: maybe github borked the inflated file
05:42:20  <chrisdickinson>mbalho: that might be
05:42:34  <chrisdickinson>it's just inflate/index.js run through that one liner above
05:42:40  <chrisdickinson>if you wanna recreate the deflated data
05:43:03  <mbalho>chrisdickinson: ahh yea that worked now
05:43:58  <chrisdickinson>mbalho: you might try it on that crime data just to benchmark it
05:44:19  * jcrugzzquit (Ping timeout: 264 seconds)
05:50:10  <mbalho>chrisdickinson: http://max.ic.ht/dropbox/bucket/opdcrime.z
05:50:22  <mbalho>chrisdickinson: its s csv
05:53:28  <mbalho>chrisdickinson: seems to take a while
05:54:05  <mbalho>chrisdickinson: about 30 seconds if i turn off the html output
05:54:44  <mbalho>chrisdickinson: which is roughly the speed i get for parsing minecraft 3-5mb files
05:54:50  <chrisdickinson>hmm
05:55:58  * nichola__joined
05:55:58  * nicholasfquit (Read error: Connection reset by peer)
05:56:56  <mbalho>chrisdickinson: this is pretty sweet though
05:57:18  <chrisdickinson>thanks :D
06:01:58  <chrisdickinson>mbalho: i bumped the chunk size to 65535 (again, arbitrary) and got 23s
06:02:09  <chrisdickinson>well, 34s really
06:02:14  <chrisdickinson>blergh, sorry
06:02:22  <chrisdickinson>"done in 23904ms"
06:02:30  * chrisdickinson's brain has ceased functioning properly
06:05:39  <jesusabdullah>mine stopped working years ago
06:05:51  <chrisdickinson>mbalho: also just published beefy 0.1.0
06:05:51  <mbalho>Raynos: is {reliable: false} on datachannels pretty much akin to UDP latency?
06:05:57  <mbalho>chrisdickinson: WOOT
06:06:14  <chrisdickinson>should support multiple (aliasable) entry points, --cwd, debug-by-default
06:06:36  <chrisdickinson>also, importantly, i changed the title of the fake index from "browservefy" to "B E E F Y"
06:07:06  <chrisdickinson>also maybe contentious but --live doesn't use sock anymore; it'll use sse-stream and fallback to xhr polling where it isn't supported
06:07:25  <chrisdickinson>so installing beefy should be a bit quicker now
06:07:34  <chrisdickinson>(and --live doesn't require running two servers)
06:08:06  <mbalho>nice
06:08:15  * AvianFlujoined
06:08:39  <chrisdickinson>if things break lemme know!
06:08:47  <chrisdickinson>i'm going to leave the tickets open for a day or so
06:09:12  <chrisdickinson>mbalho: was also thinking about adding a `--open / -o` flag
06:09:41  <chrisdickinson>that would use the system's "open" command (or whatever the equivalent is on linux / win) to automatically open the url
06:09:59  <chrisdickinson>(leading to eventually not requiring port specification)
06:11:50  <mbalho>chrisdickinson: thast a good idea
06:12:04  * notalexgordon_quit (Quit: Connection closed for inactivity)
06:13:59  * nichola__quit (Read error: Connection reset by peer)
06:14:10  * nicholasfjoined
06:20:34  <mbalho>chrisdickinson: i think we need a module that takes a buffer and creates a readable stream from it with a configurable chunk size
06:21:01  <chrisdickinson>mbalho: https://github.com/chrisdickinson/chunk-stream
06:21:14  <mbalho>damn you
06:21:27  <chrisdickinson>:)
06:22:23  <mbalho>chrisdickinson: will the last chunk be smaller or will it pad like block-stream?
06:22:44  <rvagg>I have one... but it's a little less fancy-pants: https://github.com/rvagg/node-simple-bufferstream
06:22:52  <chrisdickinson>i think it pads iirc
06:23:04  <mbalho>chrisdickinson: ah that is undesirable for my purposes
06:23:29  <mbalho>rvagg: nice
06:23:30  <rvagg>there's bufferstream in npm that does the job, but it relies on buffertools which is a compiled module if that works for you
06:23:37  <mbalho>eek
06:23:45  <rvagg>it's a bit overengineered unfortunately
06:23:51  <chrisdickinson>mbalho: PR chunk-stream and add an option
06:24:09  <mbalho>chrisdickinson: kewl. i kidna just want what you did down at the bottom of https://github.com/chrisdickinson/chunk-stream/blob/master/index.js
06:24:30  <chrisdickinson>i'm not actually sure if it pads or not, looking at it
06:24:38  * shamaquit (Remote host closed the connection)
06:24:43  <chrisdickinson>this is back in those heady days when i was implementing tar-parse
06:27:29  <chrisdickinson>mbalho: actually looking at the gzip spec now, it wouldn't be too hard to add i think
06:31:10  <mbalho>chrisdickinson: that would be mega useful methinks
06:31:38  <chrisdickinson>just gotta support raw inflate, which is inflate minus the header and adler footer
06:31:59  <chrisdickinson>this inflate impl already does the "barf up any unused bytes" thing that i needed so badly for git
06:33:38  * jcrugzz_quit (Ping timeout: 255 seconds)
06:40:36  * jcrugzzjoined
06:45:12  * jcrugzzquit (Ping timeout: 264 seconds)
07:05:27  * nicholasfquit (Read error: Connection reset by peer)
07:05:52  * nicholasfjoined
07:07:33  * nk109joined
07:08:40  * wolfeidauquit (Remote host closed the connection)
07:13:23  * jxsonquit (Remote host closed the connection)
07:31:37  * nk109quit (Quit: Computer has gone to sleep.)
07:33:48  * no9quit (Ping timeout: 264 seconds)
07:41:43  * nk109joined
07:44:02  * keslajoined
07:57:02  * st_lukejoined
08:02:17  * keslaquit (Ping timeout: 255 seconds)
08:23:49  * jxsonjoined
08:27:02  * keslajoined
08:29:29  * jxsonquit (Ping timeout: 256 seconds)
08:33:09  * st_lukequit (Remote host closed the connection)
08:43:58  * nicholasfquit (Read error: Connection reset by peer)
08:44:17  * nicholasfjoined
08:48:03  * keslaquit (Ping timeout: 245 seconds)
08:51:00  * keslajoined
09:18:11  * jibayjoined
09:32:45  * slaskisjoined
09:35:23  * dominictarrjoined
09:36:31  * keslaquit (Ping timeout: 264 seconds)
09:37:12  * stagasjoined
09:39:39  * st_lukejoined
10:11:25  * dguttmanjoined
10:21:36  * stagasquit (Read error: Connection reset by peer)
10:40:05  * spionjoined
10:40:54  * jcrugzzjoined
10:42:58  * st_lukequit (Remote host closed the connection)
10:45:38  * jcrugzzquit (Ping timeout: 252 seconds)
10:45:39  * nicholasfquit (Ping timeout: 260 seconds)
10:49:04  * thl0joined
10:50:20  * keslajoined
11:00:45  * ralphtheninjajoined
11:04:40  * dguttmanquit (Quit: dguttman)
11:08:59  * keslaquit (Ping timeout: 256 seconds)
11:40:26  * wolfeidaujoined
11:56:49  * yorickjoined
11:58:31  * keslajoined
12:23:03  * slaskisquit (Ping timeout: 245 seconds)
12:41:18  * keslaquit (Ping timeout: 276 seconds)
12:44:18  <juliangruber>new module: comma - a s{c,t}reaming fast CSV parser (https://github.com/juliangruber/comma)
12:45:15  <juliangruber>dominictarr: ^ writing a custom stream instead of using event-stream.{split,through} gave me >100% more performance. Are pull streams more performant?
12:45:43  <juliangruber>new module: proxector - A TCP proxy that protects services from having too many open connections (https://github.com/juliangruber/proxector)
12:46:37  <dominictarr>juliangruber: this will break https://github.com/juliangruber/comma/blob/master/index.js#L53
12:46:42  <dominictarr>on some csv
12:46:51  <dominictarr>cos I can do this
12:47:00  <juliangruber>"a,b",c,d?
12:47:08  <dominictarr>exactly
12:47:18  <dominictarr>juliangruber: perf
12:47:19  <juliangruber>Speed comes at a cost: Strings containing ,s are not supported.
12:47:42  <dominictarr>you could allow an option
12:47:45  <juliangruber>2nd line of readme :P
12:47:49  <juliangruber>hm true
12:48:09  <dominictarr>csv is regular, so you can fix that with a regexp
12:48:27  <dominictarr>anyway
12:48:32  <dominictarr>perf
12:49:01  <dominictarr>I've been aware for some time that for object streams, joining long chains introduces overhead
12:50:14  <dominictarr>you need to check if the stream is paused when you are in a drain loop
12:50:14  <dominictarr>https://github.com/juliangruber/comma/blob/master/index.js#L33
12:51:15  <juliangruber>dominictarr: if (!paused) s.emit(...) else { buffer... }?
12:51:16  <dominictarr>juliangruber: split takes a mapper option https://github.com/dominictarr/split/blob/master/index.js#L29-L33
12:51:30  <dominictarr>yeah,
12:51:45  <juliangruber>oh, didn't see the mapper
12:51:52  <juliangruber>that could make it just as fast
12:51:56  <dominictarr>because when you emit('data') dest.write might return false
12:52:11  <dominictarr>which will put the source into paused state
12:52:21  <rvagg>juliangruber: you have to support commas inside entries! they are surprisingly common
12:52:36  <rvagg>I use a ton of CSV data for my work and it's something I have to deal with all the time
12:52:44  <rvagg>give me , support and I'll jump on your module
12:53:30  <dominictarr>if you ever travel back in time to the late 70's make visicalc use \, to escape commas though
12:53:46  <dominictarr>instead of ","
12:53:57  <dominictarr>and… you can also do this :
12:54:03  <rvagg>"" is " escaped
12:54:05  <rvagg>in CSV
12:54:13  <juliangruber>uargh
12:54:17  <dominictarr>a,"b,c", "d, e", ...
12:54:26  <rvagg>custom delimiters are useful too, I have to occasionally deal with \t and | delimiters
12:54:37  <dominictarr>yeah
12:55:40  <juliangruber>dominictarr: meh, managing stream state sucks
12:55:48  <rvagg>juliangruber: are you doing streams2?
12:56:04  <dominictarr>juliangruber: that is why you use through!
12:56:05  <juliangruber>maybe I'll rewrite it do basically be split('\n', function (d) { return d.split(',') })
12:56:12  <juliangruber>rvagg: nope
12:56:27  <rvagg>use streams2, they are surprisingly friendly and a lot of the state crap goes away
12:56:29  <rvagg>as I'm discovering
12:57:00  <rvagg>use readable-stream rather than the core stream package if you need 0.8 compat of course
12:57:29  <dominictarr>juliangruber: if build a large pipeline of streams it slows down mesurably just from calling all the js
12:57:58  <dominictarr>pull-streams are really good at long pipes though, because there is just way less code to execute
12:58:08  <dominictarr>(based on some silly benchmarks)
12:58:13  <rvagg>oh, and CSV can contain newlines inside entries too btw, so a split('\n') isn't fully compatible
12:58:21  <juliangruber>rvagg: fck
12:58:24  <dominictarr>doing io it probably does'nt make to much difference
12:58:25  <rvagg>BUT, who cares about that little silly rule?
12:58:37  <juliangruber>rvagg: I only needed a fast parser for 123,234,345 like csv
12:58:44  <rvagg>heh, yeah, fair enough
12:58:55  <dominictarr>juliangruber: bitcoin prices?
12:58:59  <juliangruber>dominictarr: we only need backpressure for streams that do IO
12:59:06  <juliangruber>dominictarr: tick data fed into leveldb ;)
12:59:19  <dominictarr>juliangruber: pull
12:59:32  <dominictarr>pull-streams are great at backpressure!
12:59:47  <dominictarr>better than streams2, in object streams...
13:00:45  <juliangruber>dominictarr: maybe I'll just have to wrap my head around them
13:00:48  <juliangruber>if I find time
13:01:16  <juliangruber>I'm thinking about freelancing, like earning less if you want to because you rather enjoy some mad science stuff
13:02:50  <dominictarr>good plan
13:03:07  <dominictarr>think of it as investing in your self
13:03:17  <dominictarr>but you invest time, instead of money
13:03:18  <juliangruber>yes
13:03:39  <juliangruber>I don't care about money when I get to write level-* modules e.g. and that super motivates me
13:04:07  <dominictarr>also, notice that all the best things we have
13:04:13  <dominictarr>node & npm
13:04:29  <dominictarr>where written by someone who quit their job to work on it
13:04:38  <dominictarr>and it got really good
13:04:53  <dominictarr>and then someone was like "we are gonna pay you to work on this"
13:05:12  <rvagg>+1 if you're not enjoying what you're doing
13:05:18  <rvagg>don't linger too long, it'll kill you
13:06:12  <rvagg>and something tells me that there may be work for consulting level-* experts in the near future
13:06:22  <juliangruber>rvagg: me too!
13:06:42  <dominictarr>and there will relatively few people who are expert...
13:07:04  <juliangruber>rvagg: but it's not like I could afford stop working right now
13:07:12  <juliangruber>we is them experts
13:07:29  * fallsemojoined
13:08:38  * slaskisjoined
13:08:55  * slaskisquit (Client Quit)
13:10:02  * thl0quit (Remote host closed the connection)
13:10:19  <rvagg>g'night from over here
13:10:24  <dominictarr>night!
13:10:36  * defunctzombie_zzchanged nick to defunctzombie
13:10:49  <dominictarr>being able to live cheaply helps a lot too
13:11:24  <rvagg>oh, btw, I met a nearFormer today! had coffee with Andrew Jarocki at a local cafe in my small country town
13:11:48  <dominictarr>the sun never sets on the nearform empire!
13:12:07  <rvagg>he's scouting for a place to relocate his family to and they are quite taken with my corner of the country
13:12:13  <dominictarr>very good!
13:12:40  <rvagg>anyway, I'm properly off now
13:12:59  <dominictarr>night
13:34:50  * no9joined
13:35:09  * thl0joined
13:51:34  * keslajoined
13:52:38  * occamshatchetjoined
13:57:48  * tmcwjoined
14:07:04  * keslaquit (Ping timeout: 272 seconds)
14:34:32  * keslajoined
14:38:08  * no9quit (Remote host closed the connection)
14:41:39  * keslaquit (Ping timeout: 256 seconds)
14:43:59  * keslajoined
15:15:17  * mikealjoined
15:19:06  * mikealquit (Client Quit)
15:44:52  * itprojoined
15:44:52  * itprochanged nick to ITpro
15:48:01  * keslaquit (Ping timeout: 268 seconds)
15:52:50  * defunctzombiechanged nick to defunctzombie_zz
15:58:32  * ITproquit (Ping timeout: 272 seconds)
15:59:17  * itprojoined
15:59:17  * itprochanged nick to ITpro
16:04:18  * jcrugzzjoined
16:05:47  * shamajoined
16:18:24  * dguttmanjoined
16:18:27  * dominictarrquit (Quit: dominictarr)
16:31:45  * Benvie1joined
16:33:50  * stagasjoined
16:40:10  * tilgovijoined
16:45:28  * tmcwquit (Remote host closed the connection)
16:46:01  * tmcwjoined
16:50:17  * tmcwquit (Ping timeout: 258 seconds)
17:01:31  * tmcwjoined
17:05:05  * mikealjoined
17:08:20  <substack>mikeal: https://github.com/substack/testling#example
17:08:54  <mikeal>hells yeahs
17:09:16  <substack>doesn't yet do the part where it hits our servers but it will soon
17:09:21  <pkrumins>mikeal: i found out why androids were failing - the lock screen comes back
17:09:31  <mikeal>"hits our servers"?
17:09:44  <pkrumins>mikeal: i'll solve that soon via snapshots or telnetting in and sending some commands that remove the lock
17:09:49  <substack>mikeal: right now it uses a local browser headlessly
17:10:01  <substack>if you have chrome installed it should all work automatically
17:10:18  <mikeal>oh i see
17:10:35  <mikeal>i wrote a little local runner for all my testling tests actually
17:10:48  <mikeal>because i wanted to run them against the local REST API
17:10:59  <mikeal>these tests run 3 different ways
17:11:05  <mikeal>1) in node only
17:11:14  <mikeal>2) in a browser w/ browserify against a local REST API
17:11:31  <mikeal>3) in testling (eventually) swapping out the REST API calls for local mock data
17:14:32  * dominictarrjoined
17:20:19  <thl0>substack: I wish you could comment json
17:20:40  <thl0>that package is a good example of using browserify related fields
17:21:38  <pkrumins>thl0: did you get your testling tests running from the last time?
17:21:47  <thl0>nope
17:22:14  <thl0>gave up at some point, just running them locally since I couldn't get the brfs transform to work
17:22:32  * jxsonjoined
17:22:42  <thl0>but I changed things to not need brfs anymore, so I could give it another shot tonight
17:23:56  * jxson_joined
17:23:59  * jxson_quit (Remote host closed the connection)
17:24:15  <thl0>substack: pkrumins: I had problems with testling failing tests for wrong reason though - i.e. chrome 26 didn't seem to be setup
17:24:17  <chrisdickinson>thl0: i've occasionally resorted to "//": "commented keyval"
17:24:32  <chrisdickinson>i don't think there's a prohibition against repeated keys
17:24:58  <thl0>see here http://ci.testling.com/thlorenz/brace time: 2013-04-24 07:44:29
17:25:16  <thl0>substack: pkrumins: same problem with safari 5
17:25:16  <pkrumins>thl0: yes there is no chrome 26
17:25:21  <pkrumins>checking
17:26:06  <thl0>chrisdickinson: btw: https://github.com/thlorenz/brace/commit/2c189f2933e7b237d89416f5e63ce1fc811a83ea
17:26:13  <pkrumins>thl0: oh cool you actually got it running later
17:26:27  <pkrumins>like the latest commit is succeeding?
17:26:29  * Benvie1quit (Quit: Benvie1)
17:26:37  <chrisdickinson>thl0: i saw, what was the issue?
17:26:45  <pkrumins>thl0: oh i see, you got rid of brfs
17:26:45  * Benvie1joined
17:26:51  <thl0>pkrumins: cause I removed the problematic versions ;)
17:26:59  <chrisdickinson>aaah
17:27:02  <chrisdickinson>the unprefixed one
17:27:02  <chrisdickinson>neat
17:27:12  <thl0>pkrumins: it's another project - not related to brfs
17:27:12  * jxsonquit (Ping timeout: 272 seconds)
17:27:26  * jxsonjoined
17:27:45  <thl0>chrisdickinson: the module is great - don't have to repeat myself now - also now there is one place to fix all issues :)
17:28:19  <thl0>pkrumins: the succeeding one has no chrome 26 or safari 6 anymore ;)
17:28:33  <pkrumins>you mean safari 5
17:28:34  * jxsonquit (Read error: Connection reset by peer)
17:28:39  <thl0>yes
17:28:45  <pkrumins>we dont have chrome 26 installed so
17:28:48  * mikealquit (Quit: Leaving.)
17:28:56  <pkrumins>i'll get to it this week
17:28:59  * jxsonjoined
17:29:01  <thl0>oh, but that is the latest
17:29:05  <thl0>ok, cool
17:29:13  <thl0>my badge can grow then
17:29:17  <pkrumins>yep
17:29:22  <pkrumins>now safari 5 shouldn't have failed
17:29:39  <thl0>chrisdickinson: btw figured out the prob. from yesterday
17:29:51  <thl0>I was using String object to be able to attach extra stuff
17:29:59  <thl0>but safari didn't like that ;)
17:30:07  <thl0>so not related to blob at all
17:30:34  <chrisdickinson>aah
17:31:48  <thl0>nasty to find since it blew up inside the worker blob
17:32:04  <thl0>which is a different url every time, so break points get lost
17:32:21  <thl0>console.log came to the rescure ;)
17:34:36  <thl0>pkrumins: btw this was the project that was using brfs : http://ci.testling.com/thlorenz/scriptie-talkie
17:34:54  <thl0>works now, although mostly tests are failing, but that is a different problem ;)
17:35:19  <pkrumins>thl0: is this without brfs now?
17:35:24  <pkrumins>i can help you get brfs running
17:35:30  <thl0>yes
17:35:44  * cianomaidinjoined
17:35:47  <thl0>no longer necessary - I just needed it cause I was manually inlining worker blob
17:35:57  <thl0>now brace is doing that for me
17:35:57  <pkrumins>ah ok
17:36:09  <thl0>but the info would still come in useful in the future
17:36:18  <thl0>is there a writeup on it somewhere?
17:36:27  <pkrumins>good idea, i can write a tutorial
17:36:36  <pkrumins>on how to run custom bundler with testling
17:37:06  <thl0>nice, both testling and browserify could benefit from writeups related to certain tasks you want to perform
17:37:40  <pkrumins>ok i'll write a blog post on how to run custom bundler during this week!
17:38:10  <thl0>cool!
17:38:34  <pkrumins>you were really close though
17:39:07  <thl0>:) hard to tell when you can't see the api ;)
17:39:52  <pkrumins>you set testling.html to like "moo.html", then do a <script src="bundle.js"> in moo.html, and set testling.preprocess="browserify ... -o bundle.js"
17:40:30  <thl0>chrisdickinson: do you wanna hook testling with the w3blob module?
17:40:32  <pkrumins>when testling runs the tests it will open moo.html and serve bundle.js from the same dir where moo.html is
17:40:47  <thl0>pkrumins: ah
17:40:59  <pkrumins>this way you can also write more complex tests involving other resources
17:41:11  <thl0>chrisdickinson: it would be useful to see this problems immediately and since you already use tape it should be a small change
17:41:13  <pkrumins>like flash or something else
17:42:10  <thl0>pkrumins: that is nice - in brace I resourted to set up the DOM manually: https://github.com/thlorenz/brace/blob/master/test/error-annotations.js#L6-L37
17:42:20  <thl0>that works, but would be nice not to have to do that
17:43:07  <pkrumins>oh cool
17:45:38  <chrisdickinson>thl0: http://ci.testling.com/chrisdickinson/w3c-blob
17:46:06  <thl0>dude, that was fast!
17:46:27  <thl0>chrisdickinson: I was gonna do a PR or something but you are way ahead of me \o/
17:46:49  <chrisdickinson>:)
17:47:11  <chrisdickinson>so my init-repo script actually automatically adds testling hooks for me
17:47:14  <thl0>chrisdickinson: I bet if you remove the fix I did it'll fail in older firefox
17:47:17  <chrisdickinson>i just didn't have 'em in my package.json :|
17:47:39  <thl0>you should totally make that a module
17:47:41  <chrisdickinson>it'd be nice if ci.testling.com did tests for multiple branches
17:47:56  <thl0>kind of like substack's travisify
17:48:04  <thl0>call it testlingify ;)
17:49:22  <thl0>chrisdickinson: I think master is fine - you can test it there before republishing
17:49:41  <chrisdickinson>thl0: yeah, i just hate having "trololo testing" commits in master ):
17:49:51  <thl0>understood
17:50:08  <thl0>chrisdickinson: however travis is also annoying if you don't specify branch
17:50:32  <thl0>and you break stuff in an experimental branch it destroys your badge
17:50:39  <thl0>should be only master by default
17:51:27  <chrisdickinson>yeah ):
17:55:24  <dominictarr>ralphtheninja: you can't really talk about errors in general, you need to discuss specific types of errors
17:55:37  <dominictarr>most stream errors mean the end of the stream.
17:55:57  <dominictarr>in new and old streams, an error breaks the pipe
17:56:06  <ralphtheninja>well, lets assume the connection just breaks in the middle .. a wire is cut or whatever
17:56:25  <dominictarr>you won't know unless you try to write to it.
17:56:32  <ralphtheninja>ok
17:56:40  <dominictarr>I think it timeouts too
17:57:21  <ralphtheninja>but lets say I read data from a stream over e.g. shoe .. the other peer goes down for some reason and my data is incomplete
17:57:35  <ralphtheninja>so I'd have to check timeout in that case .. as a reader
18:00:15  <dominictarr>basically, the way you have to deal with the problem here --
18:00:25  <dominictarr>what it really boils down to
18:00:42  <dominictarr>okay - so it's like a telephone
18:00:55  <dominictarr>if you have a dodgy connection, and you get cut off
18:01:11  <dominictarr>how do you know if the other person heard the last thing you said?
18:03:15  <dominictarr>A: you both said goodbye
18:03:22  <dominictarr>http://www.250bpm.com/blog:22
18:03:39  <dominictarr>is kinda interesting, because basically, he is turning tcp into a pull stream
18:04:46  * timoxleyjoined
18:04:46  * spionquit (Ping timeout: 246 seconds)
18:07:49  <dominictarr>and he's totally right about tcp on tcp
18:08:02  <dominictarr>although, there are other solutions to the general problem
18:08:09  <ralphtheninja>nods
18:08:15  <dominictarr>such as in git and scuttlebutt
18:08:45  <dominictarr>when you are greeting each other
18:09:06  <dominictarr>you make some small talk regarding when you last heard from each other
18:10:50  <dominictarr>I don't think he's being fair if he think buffering can be implemented only in the network layers
18:11:03  <dominictarr>streams are just tcp between parts of your code.
18:11:13  <dominictarr>frp is also just tcp
18:11:33  <thl0>chrisdickinson: I'm so stealing your testling field - didn't know you could do ranges
18:11:52  <thl0>that way you also avoid versions that pkrumins didn't have time to put up yet :)
18:12:49  <ralphtheninja>dominictarr: programmers shouldn't have to think about these things, but can't help to get into lower layers :)
18:13:11  <ralphtheninja>of course it depends on which layer of abstraction you are working on
18:13:19  <dominictarr>disagree
18:13:43  <dominictarr>you need to understand what programming is to program
18:14:12  <dominictarr>and a stream one of the very generic abstractions that crop up all over the place.
18:14:24  <dominictarr>you can't "abstract" it away.
18:14:28  <dominictarr>you have to embrace it.
18:14:59  <dominictarr>else, it's like trying to do geometry with out understanding what a straight line is!
18:15:45  <ralphtheninja>well I meant all the different protocols etc .. I shouldn't have to understand all intricacies of tcp to create an application
18:16:13  * no9joined
18:17:39  * timoxleyquit (Quit: Computer has gone to sleep.)
18:19:32  <ralphtheninja>but it's very interesting!
18:23:13  <dominictarr>no. generally you don't
18:37:32  <dominictarr>mbalho: ping?
18:39:21  * dguttmanquit (Quit: dguttman)
18:40:07  * dguttmanjoined
18:40:53  * keslajoined
18:46:47  <tanepiper>hey ralphtheninja
18:46:59  <chrisdickinson>thl0: i actually stole it from someone else :)
18:48:12  <thl0>chrisdickinson: so it's a resteal like in Poker ;)
18:49:05  <mbalho>dominictarr: yo
18:49:20  <dominictarr>I got a plan for npm in the browser
18:49:30  <mbalho>dominictarr: o rly
18:49:36  <dominictarr>yeah
18:49:37  <dominictarr>so
18:49:48  <dominictarr>we use module-deps
18:49:55  <dominictarr>but then a different packer
18:50:22  <dominictarr>basically, we bundle each module without it's deps into a single script
18:50:22  <mbalho>oh yea i think last tiem i tried that module-deps didnt work in browser, but now it does?
18:50:32  <dominictarr>it doesn't need to
18:51:18  <dominictarr>my plan takes a different approach
18:51:39  <dominictarr>basically: we statically bundle each module on the server
18:51:47  <dominictarr>and deliver it as a script tag
18:51:48  * tilgoviquit (Ping timeout: 276 seconds)
18:52:22  <mbalho>mmk so it injects its own require.define or whatev
18:52:23  <dominictarr>then, there is a npm-browserify on the client that handles them, and keeps them in a node_modules tree
18:52:48  * thl0_joined
18:52:48  * thl0quit (Read error: Connection reset by peer)
18:52:52  <dominictarr>yeah, so, the relative requires within a module are statically linked
18:52:54  <mbalho>npm install filesystem-browserify ftw
18:53:06  <dominictarr>but then the relationship between the modules is dynamically linked.
18:53:47  <dominictarr>so, you'll be able to open the console and go >npm.install({foo: '1.5.2'}, function (err) {…})
18:54:25  <dominictarr>this will require a server to bundle things, but I think that is okay
18:54:32  <dominictarr>you only need to bundle each one once, and then you can cache it.
18:54:34  * cianomaidinquit (Quit: cianomaidin)
18:56:20  <dominictarr>also, we'll send the package.json, which means that you'll get docs too!
18:57:48  * tilgovijoined
19:01:39  <Domenic_>thl0_: I find this kind of config for testling-ci nicest, where it automatically does the latest browsers for you. I think defunctzombie_zz added it. https://github.com/NobleJS/setImmediate/blob/master/package.json#L30-L38
19:01:53  <ralphtheninja>tanepiper: heya
19:22:09  * no9quit (Ping timeout: 256 seconds)
19:32:45  <thl0_>Domenic_: yeah, I like that, pkrumins do you automatically rerun tests when adding/removing browsers even if I don't recommit?
19:33:28  * thl0_changed nick to thl0
19:34:27  * no9joined
19:38:20  <pkrumins>thl0, no, you've to commit to re-run a test on different browsers
19:39:40  <thl0>pkrumins: so it's not entirely automatic like Domenic_ said -- would be nice though
19:40:09  <thl0>but prob. you'd be afraid of changing browsers due to all tests starting to run
19:40:39  <thl0>pkrumins: possibly you could schedule runs over the next 24hrs whenever you change a browser - that should be enough to get thru all projects?
19:42:41  <thl0>pkrumins: substack: also is it possible set cache headers on badges to force revalidate? right now my browser caches them and people don't see updated results until they force refresh
19:45:40  <Domenic_>thl0: pkrumins: you can just use the "test this hook" button in GitHub instead of doing a dummy commit
19:45:56  <pkrumins>oh right, the test hook
19:46:05  <pkrumins>thl0: it won't work well because we can't pull private repos for example
19:46:15  <thl0>pkrumins: Domenic_: ok, but I may not be aware everytime a browser changes
19:46:27  <Domenic_>and yeah i agree the cache headers are annoying :-/
19:46:29  <pkrumins>thl0: also we don't keep public repos around for too long, so they're gone in a few days
19:46:31  <Domenic_>etags would be nicer
19:46:41  <pkrumins>i thought we didnt serve any cache headers
19:46:47  <pkrumins>i removed that part as it was causing trouble
19:46:50  <thl0>Domenic_: pkrumins: travis badges have the same problem
19:47:04  <thl0>pkrumins: I think browsers cache images by default
19:47:17  <thl0>i.e you need to specify NOT to cache
19:47:33  <pkrumins>oh
19:48:04  <Domenic_>pkrumins: thl0: no, you set Cache-Control:public, max-age=31536000
19:48:10  <Domenic_>and browsers do not cache images by default
19:48:20  <pkrumins>Domenic_: that's how you make them not cache images?
19:48:26  <thl0>same applies to github pages javascripts - sucks if you have an app running on it and can't be sure if others get any updates you make
19:48:27  <pkrumins>ok i can add this right away
19:48:43  <Domenic_>pkrumins: no, that's what you're currently doing. it makes them cache images for 31536000 seconds
19:48:50  <thl0>Domenic_: but if pkrumins is not setting any cache headers, why do they cache then?
19:48:54  <thl0>ah
19:49:17  <pkrumins>i'm not setting any headers
19:49:24  <Domenic_>maybe akamai is
19:49:27  <pkrumins>let me check though how we serve badges currently
19:49:32  <pkrumins>https badges don't get akamaid
19:49:38  <Domenic_>ah
19:49:43  <pkrumins>Domenic_: do you use http or https badges?
19:49:45  <Domenic_>no, they do
19:49:46  <Domenic_>https://a248.e.akamai.net/camo.github.com/3b414d4c95dc28593d3c6cecaecf07a4af446e02/687474703a2f2f63692e746573746c696e672e636f6d2f4e6f626c654a532f736574496d6d6564696174652e706e67
19:49:46  <Domenic_>
19:49:46  <Domenic_>
19:49:46  <Domenic_> Request Method:
19:49:46  <Domenic_> GET
19:49:46  <Domenic_>
19:49:47  <Domenic_>
19:49:47  <Domenic_> Status Code:
19:49:48  <Domenic_> HTTP/1.1 200 OK
19:49:50  <Domenic_>oops
19:49:50  <Domenic_>but yes
19:49:55  <Domenic_>that's the url i see the request made for
19:49:57  <pkrumins>oh shit
19:50:02  <pkrumins>please just change to https badges!
19:50:12  <Domenic_>it says https?
19:50:34  <pkrumins>no i mean https://ci.tstling.com/domenic/moo.png
19:50:38  <pkrumins>or do you do it already?
19:50:40  <Domenic_>oh but in my markdown it's http yeah
19:50:44  <pkrumins>yes in the markdown
19:50:46  <pkrumins>yes do https
19:50:59  <pkrumins>we got the ssl cert to avoid this exact problem
19:51:16  <pkrumins>github uses akamai to cache http images in the markdown reademes
19:52:05  <Domenic_>oh wow that makes so much sense
19:52:08  <Domenic_>yeah it works now
19:52:10  <Domenic_>Expires:Wed, 24 Apr 2013 19:51:57 GMT
19:52:13  <Domenic_>(which is now)
19:52:31  * tmcwquit (Remote host closed the connection)
19:52:42  <pkrumins>i still dont get it why they cache http images but not https
19:52:48  <thl0>pkrumins: we are not in control of image linkks
19:52:57  <thl0>all we do is this to the readme.md: [![browser support](http://ci.testling.com/thlorenz/brace.png)](http://ci.testling.com/thlorenz/brace)
19:53:03  <pkrumins>no do https
19:53:11  <Domenic_>thl0: he's saying s/http/https in that string
19:53:12  <pkrumins>thl0: you're in total control if you do https://ci.testling.com/thlorenz/brace.png
19:53:18  <thl0>ah
19:53:29  <thl0>ok misunderstood, thought you meant that long link ;)
19:53:30  <Domenic_>you guys should ideally do ETags to avoid the load on your servers, but shrug
19:53:31  <pkrumins>idea, we could 301 http badges to https!
19:53:36  * tmcwjoined
19:53:43  <Domenic_>oooh the plot thickens!
19:54:01  <thl0>will change this on my projects
19:54:12  <pkrumins>Domenic_: there is literally no load as we cache the images
19:54:30  <thl0>btw I think I copied the way of doing this from one of substack's projects :P
19:54:59  <pkrumins>yes that was the old way
19:55:05  <pkrumins>before https.
19:55:21  <thl0>ah - we should make PR bot that fixes that everywhere
19:55:32  <thl0>otherwise more people will copy it the wrong way
19:55:39  <pkrumins>no way, people hate PR spam bots
19:55:55  <substack>pkrumins: 301 doesn't work with their caching proxy
19:56:01  <substack>github's caching proxy is such junk
19:56:04  <thl0>we'd only launch it onto substack's github ;)
19:56:15  <pkrumins>ah :)
19:56:20  <pkrumins>substack: ah right we tried that
19:56:24  <substack>yep
19:58:53  <dominictarr>substack: I've responded to a bunch of browserify issues today, with what I think you would say.
20:00:44  <substack>great
20:05:45  * tilgoviquit (Remote host closed the connection)
20:06:29  <dominictarr>a lot of them where just needed to be steered in the right direction a bit.
20:10:35  <substack>dominictarr: https://en.wikipedia.org/wiki/Alignment_(Dungeons_%26_Dragons)#Law_vs._Chaos
20:12:46  <dominictarr>of course, there is a time to be lawful and a time to be chaotic
20:13:36  <dominictarr>guess that means I'm a neutral.
20:15:26  <dominictarr>Raynos: duplexer is mocha!? how did that happen?
20:15:48  <Raynos>?
20:16:11  <Raynos>dominictarr: mocha?
20:16:35  <dominictarr>https://github.com/Raynos/duplexer/pull/7
20:16:55  <dominictarr>oh, no, that is just that pull request
20:16:58  <Raynos>:D
20:17:56  <dominictarr>tbh I dislike mocha. tests should be verbose
20:18:14  <dominictarr>because, by the rule of scilence, they are always surprising.
20:18:43  <Raynos>mocha is silly
20:18:55  <Raynos>im on the fence about test verbosity
20:19:05  <Raynos>sometimes tests are so verbose that i cant be bothered to write new ones. that is bad
20:22:49  * st_lukejoined
20:23:12  <st_luke>isaacs: thanks!
20:26:48  <substack>dominictarr: employers should map themselves according to DND classifications
20:27:36  <dominictarr>Raynos: I mean the output.
20:27:54  <Raynos>oh
20:27:58  <Raynos>meh
20:28:01  <Raynos>sometimes I want TAP
20:28:06  <Raynos>sometimes I want red / green
20:28:13  <dominictarr>mocha doesn't even give you a line number!
20:28:26  <dominictarr>if it's a fail, but not an error!
20:29:39  <Raynos>:D
20:30:05  <Raynos>theres no need to bash mocha. your preaching the choir
20:30:27  <dominictarr>why do people make pull requests that don't fix/add anything?
20:34:41  <pkrumins>ask them :)
20:36:13  <thl0>dominictarr: I got that too and in some cases peopl actually misunderstand and want to remove code they think is not needed - but that would actually break things
20:37:20  * mikolalysenkojoined
20:38:16  <dominictarr>hmm, yes. or post an issue, with out describing clearly what they are doing, or posting example code.
20:40:48  <thl0>dominictarr: at this point you gotta decide if you got the time and if it is worth it to educate or just cut it short - I try to explain things to people most of the time and usually things turn around for the better
20:44:07  <dominictarr>I havn't really had so many pull requests that I've had to cut it short.
20:44:25  <dominictarr>but that happens on really popular projects like browserify.
20:44:55  <dominictarr>which is a shame, I think maybe the solution might be recruiting helpers to answer all the questions
20:45:16  <dominictarr>if you add someone as a collaborator they will get all the emails, so can respond to them.
20:46:08  <guybrush>i dont get pr's but when im very happy :p doesnt matter how good the pr is, someone spent precious time to bother with my code
20:46:15  <guybrush>so i dont get why you would think about it like "someone spent precious time to shit in front of my door" - because it just isnt :p
20:46:59  <guybrush>but i get that it takes some time to look at the pr's
20:52:09  * mikealjoined
20:52:41  <mikeal>substack: i need an logo for `request` :)
20:52:52  <mikeal>i got invited to do this sourcebounty thing
20:53:07  <mikeal>and i need an image that means REQUEST!
20:53:16  <mikeal>I immediately thought of you
20:55:02  <dominictarr>a panhandler spanging!
20:56:03  <dominictarr>but he's saying "GET /spare_change?beer=false HTTP 1.1"
20:57:10  <dominictarr>guybrush: yes, but if some one didn't do a good job you need to turn that into a positive thing
20:57:23  <dominictarr>with out discouraging them
20:59:47  <guybrush>right, that reminds me of what ryan said once - that you have to do exactly what you just said
21:00:16  <guybrush>and thats hard work but its worth because then you get more and more people involved
21:00:34  * st_lukequit (Remote host closed the connection)
21:01:15  * st_lukejoined
21:02:54  <dominictarr>yes
21:03:02  <dominictarr>and then they can help you help the others.
21:07:19  * thl0quit (Remote host closed the connection)
21:07:33  <Raynos>substack: whats the name of your random number picking library?
21:07:50  <Raynos>deck >_<
21:18:26  <st_luke>mikeal: do you recall a mailing list post where you were like "I'm sick of your shit, bruno"
21:18:30  <st_luke>or something to that effect
21:18:46  <mikeal>yeah
21:18:53  <mikeal>he was banned at one point
21:19:08  <mikeal>he begged issacs to let him back
21:19:26  <st_luke>haha wow
21:19:53  <Domenic_>ah is that how he finally stopped being so annoying
21:32:51  * wolfeidauquit (Ping timeout: 257 seconds)
21:33:16  <mikeal>he's still annoying
21:33:38  <mikeal>its annoying to advocate for *your* library above the 99% standard for the entire community
21:34:04  <mikeal>and its annoying to try and convince people new to a platform that they should not do what everyone else is doing and instead go down and entirely incompatible track just because you wrote a fuckin library
21:34:21  <st_luke>I'm sick of your shit, bruno
21:35:24  * wolfeidaujoined
21:36:01  <st_luke>ahaha these people at this coworking space are saying "it was cool when those node.js hackers were still here"
21:38:46  * wolfeida_joined
21:40:42  <st_luke>wow chockenberry posted on the node list
21:41:37  * wolfeidauquit (Ping timeout: 258 seconds)
21:42:48  * wolfeidaujoined
21:43:37  * wolfeida_quit (Ping timeout: 256 seconds)
21:44:18  <Raynos>https://github.com/Colingo/routes-router#example Simplest possible HTTP router!
21:44:50  <Raynos>mikeal: I read a flow control thread recently
21:45:02  <Raynos>and I was shocked to see 6 recommendations for crazy esotoric shit
21:46:02  <mikeal>thats the list man
21:46:04  <mikeal>fuck mailing lists
21:46:09  <Raynos>ok at least someone on the thread recommended `async`
21:46:09  <mikeal>we're past them
21:47:55  <Raynos>its funny though. I wouldnt recommend async
21:48:07  <Raynos>I would recommend whatever control flow thing I think is my flavor of the month :(
21:48:19  <Raynos>this month its continuable, last month it was reducers
21:50:56  <mikeal>no you wouldn't
21:51:02  <mikeal>you would recommend that *to yourself*
21:53:20  <dominictarr>control flow libs are so old
21:53:33  <dominictarr>the new thing is writing your own type of streams!
21:55:27  <mikeal>hahaha
22:01:53  <Raynos>mikeal: is "async is a pain in the ass. I want things to be simpler" a good reason to keep reinventing flow control?
22:02:32  <Raynos>which is completely besides the point of that thread. async should be recommended
22:05:26  * mikolalysenkoquit (Ping timeout: 252 seconds)
22:09:38  <mikeal>saying "async is a pain in the ass" is sort of silly, if callbacks are a pain then async is a pain
22:09:44  <mikeal>but callbacks won
22:09:53  <mikeal>an callbacks are everywhere, so people need to get used to them
22:10:12  <mikeal>if you have a favorite *clever* library for flow control then go for that, but i doubt it'll actually be simpler for new people
22:10:46  <mikeal>everyone likes to discount the cognitive simplicity of callbacks because they are focused on the harder corner cases
22:11:11  <chrisdickinson>i prefer to roll my own stackless through streams
22:11:32  <chrisdickinson>fun fact: the word "horrible" fits just about anywhere in my last statement :|
22:13:09  <chrisdickinson>non-sarcastically: i think "does exactly what it says on the tin" is pretty much the gold standard for npm modules; but it's also the hardest thing for people to accept
22:17:41  * thl0joined
22:19:27  <dominictarr>this is the thing, you can't do node without understanding async
22:20:01  <dominictarr>the best way to grok async, I think, is to write your own async lib
22:20:10  <dominictarr>and then never use it again.
22:21:56  * no9quit (Ping timeout: 252 seconds)
22:22:29  * thl0quit (Ping timeout: 252 seconds)
22:26:30  * crankquit (Ping timeout: 264 seconds)
22:27:15  <guybrush>learning by doing is what programming is all about, just like its with driving cars - you cant learn it from books
22:31:29  * crankjoined
22:45:57  * no9joined
22:46:00  * no9quit (Read error: Connection reset by peer)
22:46:48  * no9joined
22:47:32  * num9joined
22:48:03  * num9quit (Client Quit)
22:48:26  * mikealquit (Quit: Leaving.)
22:48:44  * no9quit (Remote host closed the connection)
22:49:09  * no9joined
23:00:53  * ITproquit (Ping timeout: 248 seconds)
23:11:09  * thl0joined
23:12:09  <st_luke>heroku is dumb
23:14:28  * yorickquit (Remote host closed the connection)
23:20:07  <rvagg>node without understanding async? piffle! exhibit #1: https://github.com/arturadib/shelljs
23:21:13  * tmcwquit (Remote host closed the connection)
23:23:16  <st_luke>bruno.imsickofyourshit.net
23:25:35  <st_luke>rvagg.imsickofyourshit.net
23:27:27  <dominictarr>rvagg: it's missing the way that shell does async!
23:27:33  * thl0quit (Remote host closed the connection)
23:27:58  <dominictarr>(which are quite interesting - might be useful if the rest of shell didn't suck so much)
23:28:40  <rvagg>dominictarr: actually, I think it's simply missing the point of Node, that project makes me sad and makes me want *Sync() banished from core
23:29:47  <dominictarr>rvagg: could do that - we could just use browserify to assemble modules for node!
23:33:14  <st_luke>rvagg: what's wrong with that shelljs thing? I haven't read the source. does it just do every thing sync?
23:33:26  <rvagg>yes
23:33:36  <rvagg>all sync all the things, no async api, all sync ALL SYNC
23:34:07  <rvagg>take your 4 worker threads and stick those babies in idle
23:34:23  <st_luke>hmm thats too bad
23:34:45  <st_luke>thats a weird project anyway
23:35:18  <rvagg>st_luke: yeah, but look how popular it is
23:35:35  <rvagg>and look at those download numbers: https://npmjs.org/package/shelljs
23:35:43  <rvagg>and weep for the future of Node
23:35:48  <st_luke>damn
23:35:53  <st_luke>those are some big download numbers
23:35:59  <st_luke>maybe something popular like grunt uses it
23:36:24  <st_luke>i dunno, maybe if child processes were easier for most people in node they wouldn't use something like that
23:37:35  * st_lukequit (Remote host closed the connection)
23:39:21  <rvagg>actually, I reckon more education is needed on how node actually works, I think there's still a lot of people that just assume that because javascript is singlethreaded then node is too and it's ok to choose *Sync() over async
23:39:48  * st_lukejoined
23:40:28  <dominictarr>st_luke: it is kinda hard to use node for the sort of stuff that shell is used for
23:40:33  <dominictarr>as it currently is
23:40:48  <mbalho>people are lazy and will do whatever looks easiest, so we should all start lying in ou rreadmes
23:40:59  <mbalho>'browserify has everything you will ever need'
23:41:03  <st_luke>I mean look how popular imagemagick is
23:41:21  <dominictarr>mbalho: yeah you may be right
23:41:32  <dominictarr>you totally need to think: gee this looks easy
23:41:49  <dominictarr>then you are hooked.
23:42:35  <mbalho>yea
23:43:16  <dominictarr>st_luke: trouble is, that bash sucks
23:43:19  <st_luke>automake makes really hard to read makefiles
23:43:19  <guybrush>mbalho: i know you did something regarding ignoring some "require()" in bfy, whats the current state of art?
23:43:22  <dominictarr>it's really hard to use
23:43:31  <guybrush>like is it sane to use "(require)()" ?
23:43:46  <dominictarr>guybrush: you can configure that in your package.json now
23:43:52  <st_luke>dominictarr: i used to think bash was lame then i used zsh for a year and a half
23:43:53  <guybrush>ooh nice
23:43:58  <guybrush>thx for the hint
23:44:15  <guybrush>but i would like to do it dynamically
23:44:17  <dominictarr>st_luke: zsh is worse? or better?
23:44:48  <st_luke>dominictarr: its like playing a video game
23:45:07  <dominictarr>how so?
23:45:07  <st_luke>too many features
23:45:17  <st_luke>well i used 'oh-my-zsh'
23:45:27  <st_luke>so you can turn a bunch of stuff off
23:45:31  <dominictarr>right, but the features in bash are so tricky to use
23:45:34  <st_luke>but then just use bash if you're gonna turn that stuff off
23:45:48  <dominictarr>I have to google for things like if statements
23:45:57  <dominictarr>and shit that should be totally trivial
23:46:25  <dominictarr>writing anything slightly complex is an amazing feat
23:46:45  <st_luke>dominictarr: i wrote a build script for front end assets in bash last week and it took like 3x as long as it would take me in js
23:46:54  <dominictarr>exactly
23:46:55  <st_luke>i dont know why i didnt just stop and write it in js
23:46:59  <st_luke>stubbornness
23:47:12  <dominictarr>but, it's always there
23:47:18  * timoxleyjoined
23:47:40  <dominictarr>but what if… you opened your term to the node repl
23:47:51  <dominictarr>and completely mypassed bash?
23:50:07  <st_luke>rvagg: why am i only a $5 troll?
23:50:38  <rvagg>st_luke: it's not about the quality of your trolls, I'm thinking about the number and that you're much better at churning out a larger number of trolls
23:50:54  <st_luke>oh it is a compliment
23:51:04  <rvagg>totally
23:52:16  * CoverSlidejoined
23:52:21  <st_luke>Im trying to get libwebp to build in node, this is a huge pain in the ass. if I end up succeeding I'm going to write about easy ways to do this so I dont ever have to use my brain in this way again
23:52:48  <st_luke>770 line makefile
23:53:56  <timoxley>is there any way to deploy different compiled code per architecture using npm?
23:53:59  <timoxley>cc isaacs
23:54:30  <rvagg>timoxley: not yet, but you can use a postinstall to download a per-architecture package and include that
23:54:37  <rvagg>timoxley: like appjs does (or did)
23:54:52  <rvagg>timoxley: but it's not just about per-architecture, you need to match the NODE_MODULE_VERSION of the current Node build
23:55:13  <timoxley>rvagg that was my thought, though these things are supposed to be user-contributed peer dependencies
23:55:19  <rvagg>timoxley: and it's only since 0.10.3 that we have that number available in process.versions
23:55:37  <rvagg>this is an area ripe for someone to come along with an awesome solution
23:55:38  <timoxley>so would require everyone to include that post-install script
23:55:45  <timoxley>rvagg rad
23:56:06  <timoxley>tossing up between custom solution or something around npm
23:57:45  <rvagg>I think we need to start a working group of some kind to start hashing out ideas oh how to do binary module distributables
23:57:45  <timoxley>rvagg hang on, what is NODE_MODULE_VERSION
23:58:02  <timoxley>rvagg sounds perfect
23:58:14  <rvagg>process.versions.module, it defines the API compatibility between native modules and the current version of node
23:58:16  <rvagg>it's in node.h
23:58:25  <rvagg>if it doesn't match, then Node will reject the module
23:58:42  <rvagg>so it's not about the version of node, a compiled binary can work across versions of node if the binary API is compatible
23:58:51  <rvagg>so that number gets incremented each time the binary API breaks
23:58:59  <timoxley>ahhh
23:59:03  <timoxley>interesting