00:00:00  * ircretaryquit (Remote host closed the connection)
00:00:07  * ircretaryjoined
00:00:07  <gozala>in worst case scenario that will end up head, tail pairs
00:00:19  <gozala>in best it will be just push
00:00:29  <gozala>and there can be everything in between
00:00:36  <gozala>dominictarr: ^
00:01:02  <Raynos>gozala: oh hi
00:01:13  <gozala>Also ideally all the transformation functions don't need to care about any of this
00:01:37  <gozala>which is possible with a help of decorators
00:02:17  <gozala>dominictarr: this basically gives reader control weather it intends to pull
00:02:27  * shamaquit (Remote host closed the connection)
00:02:28  <dominictarr>gozala: yeah -- also, on of my favorite ideas from reducables is how the transforms just pass the pull back to the source
00:02:34  <gozala>or weather it lets input to push on it
00:02:43  <dominictarr>so they don't have to understand what is happening at all
00:02:57  * thl0quit (Ping timeout: 276 seconds)
00:03:09  <Raynos>gozala: I'm on the fence about complexity
00:03:22  <Raynos>I think pull-stream has lower complexity for writing transformations
00:03:30  * Domenic__joined
00:03:35  <Raynos>the only reason to favor your thing
00:03:37  <Raynos>is performance
00:03:43  <gozala>Raynos: is that complex to you
00:03:43  <Raynos>so id need to see some benchmarks
00:03:44  <gozala>var map = pausable(function(f, signal) {
00:03:44  <gozala> return function mapped(next, end) {
00:03:44  <gozala> signal(function(value) {
00:03:44  <gozala> return next(f(value))
00:03:44  <gozala> }, end)
00:03:45  <gozala> }
00:03:45  <gozala>})
00:03:55  <Raynos>having to call pausable
00:03:58  <Raynos>for every single thing
00:04:01  <Raynos>is complex
00:04:12  <Raynos>it stopped being simple functions
00:04:26  <gozala>Raynos: sure if that's too complex
00:04:32  <gozala>than don't do it
00:04:37  <dominictarr>the objective of pull-stream is to make it easy to avoid IO
00:04:38  <gozala>everything comes with a price
00:04:41  <Raynos>anyway the real problem is
00:04:48  <Raynos>how do you pass messages between source & sink
00:04:53  <Raynos>in transformations without fucking it up
00:05:03  <gozala>gist documents that now
00:05:15  <gozala>and that protocol is also extandable
00:05:29  <gozala>in a way that it can degrade to plain pull
00:05:44  <gozala>but input and reader can extend to optimise specific cases
00:05:50  <dominictarr>the preserving backpressure/lazyness across trickier stuff, like concatenating streams that is the hard part.
00:07:23  <gozala>Raynos: also if you don't like pausable you don't have to use them
00:07:25  <gozala>just wriet
00:07:25  <Raynos>gozala: so my genuine opinion on this is thinking hard about the IO use cases and ensuring that backpressure & closing works correctly and cleanly
00:07:26  <gozala>function map(f, signal) {
00:07:26  <gozala> return function mapped(next, end) {
00:07:26  <gozala> function rest(continuation) {
00:07:26  <gozala> return function(signal) {
00:07:26  <gozala> continuation(map(f, signal))
00:07:26  <gozala> }
00:07:27  <gozala> }
00:07:28  <gozala> signal(function(value) {
00:07:28  <gozala> var continuation = next(value)
00:07:29  <gozala> return typeof(continuation) ? rest(continuation) :
00:07:29  <gozala> continuation
00:07:30  <gozala> }, end)
00:07:30  <gozala> }
00:07:37  <Raynos>writing map is easy
00:07:39  <Raynos>writing merge is harder
00:07:45  <Raynos>writing hwm is harder
00:07:49  <Raynos>writing parallel transform is harder
00:07:58  <gozala>Raynos: I've written all of that for reducers
00:08:05  <gozala>take a look at fs-reduce
00:08:26  <Raynos>so my original motivation for pull-stream & recurse-stream
00:08:29  <gozala>Raynos: can you easily cover this case with pull streams
00:08:30  <gozala>https://gist.github.com/Gozala/5314269#stoping-signals
00:08:31  <Raynos>is "fuck streams2.Readable is 700 lines"
00:08:55  <Raynos>from experience I know handling edgecases in streams is fucking hard
00:08:56  <dominictarr>Raynos: +1
00:09:05  <Raynos>so I need to do it and it needs to be correct
00:09:16  <Raynos>it needs to be SO correct that I can rip out all streams from node core and replace them with functions
00:09:25  <Raynos>furthermore it needs to be more performant then node core
00:09:25  <gozala>Raynos: dominictarr I'm not sure how that relates to what I'm trying to do
00:09:35  <gozala>I've being the first one to say node streams suck
00:09:53  <Raynos>gozala: because I can use infinite push signals ( https://github.com/Raynos/signaal ) for non IO stuff and its nice and pure.
00:10:05  <Raynos>gozala: as much as node streams suck they are still incredibly hard
00:10:15  <gozala>Raynos: I'd be very surprised if you can achieve better performance with pull streams
00:10:22  <gozala>than push streams
00:10:29  <Raynos>I've written a ton of stream like things and I dont have the confidence to say that any of them handle backpressure correctly in at least 95% of the cases
00:10:53  <Raynos>gozala: I dont care about pull vs push. I care about pull-stream vs node core. I care about handling backpressure correctly in 100% of the cases
00:11:10  <gozala>Raynos: ok I'm not sure what we're arguing about here
00:11:21  <gozala>so I'll just let you play with pull streams
00:11:43  <dominictarr>gozala: still, very interested to see what you come up with!
00:11:43  <Raynos>im saying that the implementation of a functional push-pull stream that i like depends on can it implement all the real stream things in a simple API
00:11:44  <gozala>and we can back to whiteboard when you realise you need both
00:11:57  <gozala>and so that they can interoperate
00:12:28  <gozala>Raynos: you mix simple and easy a lot
00:12:36  <gozala>idea can be very simple
00:12:37  <Raynos>i dont care that much about the interface / contract as long as it can handle real IO.
00:12:47  <Raynos>gozala: I know I mix simple & easy too much
00:13:06  <gozala>Raynos: have you tried fs-reduce ?
00:13:19  <gozala>did not it handled back pressure properly ?
00:13:19  <Raynos>not yet
00:13:24  <Raynos>Some of the things in there are cool
00:13:44  <gozala>Raynos: also I have to admit that I had to workaround lack of pull
00:13:50  <Raynos>https://github.com/dominictarr?tab=repositories
00:14:03  <Raynos>dominictarr has written like 14 different types of pull based transformation streams
00:14:06  <gozala>by presenting file content stream as concatenation of lazy chunk reads
00:14:11  <Raynos>based on real ways that you want to interact and combine IO operations
00:14:25  <Raynos>I need to catch up on all that work myself
00:15:16  <gozala>dominictarr: Raynos Anyway what I was intended to do is share some of my thought how one can arrange interoperation of push and pull streams
00:15:36  <gozala>not to say you should or should not use them
00:15:41  <Raynos>gozala: I think its an interesting idea. I just need to spend more time to convince myself i need push
00:15:48  <gozala>if you have any feedback I'm curious to hear
00:15:51  <substack>jesusabdullah: say WHA
00:18:53  * marcello3dquit (Remote host closed the connection)
00:23:27  <jesusabdullah>mmnh, guurl
00:26:28  <AvianFlu>jesusabdullah: you tell 'em sister
00:28:59  * st_lukequit (Remote host closed the connection)
00:43:15  * jxsonquit (Ping timeout: 276 seconds)
00:44:20  * wiwilliajoined
00:55:42  * dguttmanquit (Quit: dguttman)
00:56:02  * thl0joined
01:13:53  * jibayjoined
01:17:19  <Raynos>dominictarr: https://github.com/dominictarr/hyperscript/pull/5
01:17:48  <Raynos>gozala: I dont think I need push for IO other then you claim its more performant. That's all
01:18:12  <dominictarr>Raynos: does nodeType and nodeName work in IE?
01:18:19  <Raynos>dominictarr: yes
01:18:37  <Raynos>they are DOM1 so pretty old
01:18:39  <gozala>Raynos: with IO usually you don't need push and pull is just fine
01:19:19  <gozala>it's just non trivial to compose apps that need both push streams and pull streams
01:22:45  <dominictarr>Raynos: should your PR be a minor or a patch?
01:22:45  * douglaslassancejoined
01:23:06  <Raynos>dominictarr: data-set is a new feature so minor.
01:23:18  <Raynos>gozala: that's a seperate problem
01:23:26  <dominictarr>was thinking that too
01:25:21  <gozala>Raynos: Indeed it's separate but a problem
01:25:38  <gozala>you can always shoehorn things
01:25:47  <Raynos>gozala: I was thinking about how to implement leveldb with signals
01:25:49  <Raynos>didnt get very far
01:25:55  <gozala>but IMO it's better to design things up front
01:26:16  <Raynos>i think its not unreasonable to reduce scope and create a pull based stream thing purely for node server apps
01:26:24  <Raynos>and deal with stateful push based browser inputs as seperate domain
01:26:43  <gozala>Raynos: I don't think push is browser specific
01:26:53  <gozala>it's problem specific, but not browser specific
01:26:55  <Raynos>give me a good node context where I want push for IO
01:27:21  <gozala>well IRC implementation
01:27:34  <gozala>you need to handle incoming message weather you like it or not
01:27:46  <gozala>it's not up to you weather you wanna handle them or not
01:28:18  <gozala>or any other case where you're up is driven by / reacts to input
01:28:37  <gozala>same with http requests
01:28:50  <gozala>the come in weather you wanna pull or not
01:29:09  <gozala>of course you can keep users waiting until you pull next incoming request
01:29:35  <gozala>but that models problem incorrectly
01:30:31  <gozala>Raynos: ^
01:30:37  <gozala>anyway heading home now
01:30:53  <Raynos>gozala:
01:30:59  <Raynos>but node core currently models sockets as pull
01:31:06  <Raynos>i dont see a problem with it
01:33:20  * st_lukejoined
01:37:55  * tmcwjoined
01:40:52  * jcrugzzquit (Ping timeout: 245 seconds)
01:48:22  * CryptoQuickquit (Ping timeout: 240 seconds)
01:51:11  * marcello3djoined
01:58:05  <mbalho>is there a level- lib for chained mapreduce?
02:08:53  * ITproquit (Ping timeout: 252 seconds)
02:09:09  * jibayquit (Remote host closed the connection)
02:11:39  * dominictarrquit (Quit: dominictarr)
02:12:11  <Raynos>mbalho: what do you mean "chained" ?
02:13:36  <mbalho>Raynos: http://examples.cloudant.com/sales/_design/sales/index.html
02:16:21  <Raynos>mbalho: all I see is buzzwords
02:16:35  * ins0mniaquit (Ping timeout: 252 seconds)
02:17:25  <defunctzombie>st_luke: ping
02:17:35  <st_luke>yo
02:17:54  <defunctzombie>st_luke: how much you know about internap hardware stuffs?
02:18:07  <defunctzombie>if i get a raid 1 box, is all that setup for me?
02:18:11  <Raynos>mbalho: It shouldnt be hard to do chained reduce with map-reduce though
02:18:16  <defunctzombie>and how would I know if drives fail or such?
02:18:44  <defunctzombie>st_luke: also, know any alternatives to internap that are good to check out?
02:18:56  <defunctzombie>I am pretty happy with internap personally but always on the lookout for options
02:19:21  <st_luke>i think they will set up all the raid stuff if you order it
02:19:38  <st_luke>and im pretty sure you can enable some module in ubersmith to monitor drive status over snmp
02:19:51  <st_luke>but i dont know if i can recommend them anymore
02:20:32  * wiwilliaquit (Ping timeout: 260 seconds)
02:20:37  <st_luke>my friend that was in charge of operations decided to quit so things are probably gonna go downhill
02:20:49  <defunctzombie>:(
02:20:53  <defunctzombie>sadness
02:20:59  <defunctzombie>what are good alternatives?
02:23:01  <st_luke>man i dont even know anymore
02:23:16  <st_luke>at least with internap you have a fairly known quantity
02:23:28  * wolfeidauquit (Read error: Connection reset by peer)
02:23:41  <defunctzombie>yea
02:23:42  * wolfeidaujoined
02:23:49  <defunctzombie>and their datacenters are solid
02:23:55  <st_luke>to be honest most hosting companies are really bad with customer private data and security overall
02:24:36  <st_luke>the former voxel stuff that internap is running now is all pretty good, and ubersmith is very secure because the guy in charge of it knows what he's doing
02:24:49  <st_luke>at least the guy in charge of its development
02:25:18  <defunctzombie>that is good
02:25:24  <st_luke>every hosting company ive worked at other than voxel/internap has stored passwords and private customer info in plain text, etc
02:25:30  <defunctzombie>I know that the datacenter is pretty important
02:25:33  <defunctzombie>wow
02:25:43  <defunctzombie>cause there are some major companies operating out of it
02:26:17  <st_luke>a big part of why internap bought voxel was for the datacenters
02:26:22  <st_luke>so they're pretty important to them
02:29:00  <defunctzombie>I would rather pay a premium to have solid shit than go with an unknown name
02:30:33  <st_luke>yeah it cant be that much more anyway
02:30:44  <st_luke>plus you are like a bitcoin millionaire anyway
02:30:59  <defunctzombie>I wish
02:32:32  * ralphtheninjaquit (Ping timeout: 252 seconds)
02:36:09  * jcrugzzjoined
03:05:43  <defunctzombie>so here is an interesting thought
03:05:49  <defunctzombie>if you make global javascript vars
03:05:57  <defunctzombie>doesn't that mean extensions and other things cna see them?
03:06:08  <defunctzombie>so putting potentially sensitive information into them would be bad...
03:16:35  * douglaslassancequit (Quit: Leaving...)
03:22:41  <gozala>Raynos: at this point I think it's would be easier if I let you explore pull based streams so you can discover limitations yourself
03:23:31  * ralphtheninjajoined
03:25:00  <Raynos>:/
03:25:43  * thl0quit (Remote host closed the connection)
03:30:35  * st_lukequit (Remote host closed the connection)
04:01:31  <isaacs>substack: LOL!
04:02:00  <isaacs>substack: almost the exact same API and implementation
04:02:32  <mbalho>I JUST MADE THIS THING http://maxogden.github.com/gifblocks/
04:02:48  <mbalho>someone beta test it
04:03:18  <isaacs>substack: even a similar description. clearly, this is the correct implementation.
04:09:58  * jesusabdullahopens
04:10:05  * jesusabdullahcries about it
04:12:44  <jesusabdullah>mbalho: gif is entirely blue -_-;
04:12:53  <jesusabdullah>mbalho: also I couldn't climb out of the pit, I tried!
04:13:02  <jesusabdullah>mbalho: sick framerates though, nice ux, smoove dudes
04:14:16  <mbalho>jesusabdullah: i realized the japanese font im using is 6mb
04:14:18  * marcello3dquit (Remote host closed the connection)
04:14:28  <jesusabdullah>damn gurl
04:14:34  <mbalho>jesusabdullah: what browser/version/os are you using?
04:14:44  <jesusabdullah>chrome beta
04:14:50  <mbalho>hmm i wonder why the gif doesnt work
04:15:07  <jesusabdullah>mbalho: cause I was really really high up
04:15:11  <jesusabdullah>mbalho: it works at the ground level
04:15:21  <niftylettuce>FUCKING HACKITY HACK LOUDBOT
04:15:40  <mbalho>jesusabdullah: oh i see
04:15:49  <jesusabdullah>interesting no?
04:17:09  * tmcwquit (Remote host closed the connection)
04:17:54  <jesusabdullah>Oh I see what you did there
04:17:58  <jesusabdullah>the camera is stationary
04:18:35  <jesusabdullah>I was outside its render distance
04:21:02  <mbalho>yea
04:22:33  <jesusabdullah>what's the sauce for that look like?
04:27:18  <mbalho>its on github
04:28:11  <chrisdickinson>oof, gave a talk on my git stuff at the pdx node user group
04:30:59  * ralphtheninjaquit (Read error: Operation timed out)
04:31:55  <isaacs>chrisdickinson: ^5
04:32:36  <chrisdickinson>now to try and rewrite it as a proposal for nodepdx
04:33:18  <chrisdickinson>are there any bits that would be particularly interesting? i'm thinking of going at it from the angle of putting browserify through its paces
04:35:23  * dguttmanjoined
04:36:44  <substack>isaacs: agreed!
04:37:07  <substack>of course, we have similar aesthetic sense when it comes to apis
04:42:56  * dguttmanquit (Quit: dguttman)
04:53:03  * wiwilliajoined
05:17:47  * st_lukejoined
05:23:54  <jjjjohnnny>mbalho: it always takes the same photo
05:24:55  <jjjjohnnny>and then chuffs my cpu
05:26:03  <jesusabdullah>jjjjohnnny: you have to move yourself in front of the camera silly
05:29:13  * jcrugzzquit (Remote host closed the connection)
05:30:27  <jjjjohnnny>A USER ERROR WAS IT
05:30:35  <jjjjohnnny>http://i.imgur.com/vZjOBGp.gif
05:33:43  * timoxleyquit (Quit: Computer has gone to sleep.)
05:38:50  * paul_irishquit (Read error: No route to host)
05:40:25  * chiltsquit (Ping timeout: 245 seconds)
05:40:27  * nicholasfjoined
05:40:51  * chiltsjoined
05:42:52  * wolfeidauquit (Remote host closed the connection)
05:44:56  * nicholasfquit (Ping timeout: 256 seconds)
05:45:48  * mikolalysenkoquit (Ping timeout: 256 seconds)
05:49:43  <st_luke>Domenic_: if I were to rewrite a node program using a promises library for my control flow which module is a good choice?
05:54:13  <jjjjohnnny>el user interface
05:54:19  <jjjjohnnny>el = {}
05:54:39  <jjjjohnnny>el.knob = createDial(opts)
05:54:58  <jjjjohnnny>el.ticktock = createTocker()
05:55:30  <jjjjohnnny>el.emento = "por favor"
06:03:29  * wolfeidaujoined
06:04:51  * timoxleyjoined
06:08:54  * chiltsquit (Ping timeout: 276 seconds)
06:09:43  * chiltsjoined
06:12:04  * mikolalysenkojoined
06:12:12  * timoxleyquit (Ping timeout: 264 seconds)
06:20:36  * mikolalysenkoquit (Ping timeout: 264 seconds)
06:21:38  * fallsemoquit (Quit: Leaving.)
06:27:51  * CryptoQuickjoined
06:39:17  <mbalho>jjjjohnnny: hahah how did you do that
06:44:39  * devaholicquit (Ping timeout: 276 seconds)
06:47:03  * mikolalysenkojoined
06:56:54  * mikolalysenkoquit (Ping timeout: 256 seconds)
07:07:15  <jesusabdullah>substack: http://www.weather.com/sports-rec/march-madness/Toughest-Weather-City-Tournament-20130315
07:16:11  <substack>jesusabdullah: lubbock, clearly
07:18:56  <jesusabdullah>Hell no
07:19:19  <jesusabdullah>Lubbock doesn't have 50 degree deltas within a day
07:20:05  <substack>it's easy because you can just wear more clothes
07:20:25  <substack>also fairbanks isn't even windy
07:20:50  * defunctzombiechanged nick to defunctzombie_zz
07:20:57  <jesusabdullah>except when it is
07:21:01  <jesusabdullah>then it *really* sucks
07:21:09  <jesusabdullah>(and that does happen from time to time, it's just uncommon)
07:22:53  * mikolalysenkojoined
07:32:07  * mikolalysenkoquit (Ping timeout: 245 seconds)
07:40:58  * nicholasfjoined
07:45:11  * nicholasfquit (Ping timeout: 255 seconds)
07:46:00  * CryptoQuickquit (Quit: CryptoQuick)
07:53:49  * timoxleyjoined
07:59:00  * timoxleyquit (Ping timeout: 264 seconds)
07:59:10  * mikolalysenkojoined
08:00:56  * chiltsquit (Ping timeout: 256 seconds)
08:01:19  * douglaslassancejoined
08:09:18  * chiltsjoined
08:09:48  * mikolalysenkoquit (Ping timeout: 264 seconds)
08:30:34  * jdiezquit (Read error: Operation timed out)
08:31:40  * Guest1421joined
08:33:53  * jez0990quit (Ping timeout: 252 seconds)
08:35:31  * mikolalysenkojoined
08:45:31  * cianomaidinjoined
08:45:59  * mikolalysenkoquit (Ping timeout: 252 seconds)
08:47:58  * wiwilliaquit (Ping timeout: 256 seconds)
08:48:12  * timoxleyjoined
08:51:19  * dominictarrjoined
08:53:00  * timoxleyquit (Ping timeout: 264 seconds)
09:12:07  * mikolalysenkojoined
09:13:30  <dominictarr>mbalho: there isn't a chained map-reduce like that, you can feed one into another
09:14:16  <dominictarr>do you need a fixed number of stages, or to reduce until a certain state?
09:21:38  <dominictarr>juliangruber: Raynos does hyperscript 1.1 break in IE, or does dataset just not work?
09:21:55  <juliangruber>hmm
09:21:58  <juliangruber>haven't tested
09:22:22  * mikolalysenkoquit (Ping timeout: 246 seconds)
09:22:32  <juliangruber>we need a test(ling) suite for hyperscript
09:25:16  <dominictarr>juliangruber: Raynos I've added you two as collaborators for hyperscript as you are both using it in production
09:26:30  <juliangruber>cool
09:26:50  <dominictarr>juliangruber: insomnia and I started on this: https://github.com/1N50MN14/html-element which implements enough of HTMLElement to run hyperscript serverside
09:26:50  <juliangruber>before, setting data-foo should have worked in ie, just not using dataset
09:26:52  <juliangruber>now it breaks
09:27:00  <juliangruber>awesome too!
09:27:17  <dominictarr>so, before it would have just set a property on the object?
09:52:06  * Guest1421quit (Ping timeout: 245 seconds)
09:53:43  * mikolalysenkojoined
09:57:33  * chiltsquit (Ping timeout: 240 seconds)
09:57:48  * chiltsjoined
09:59:36  * mikolalysenkoquit (Ping timeout: 264 seconds)
10:05:52  * cianomaidinquit (Quit: cianomaidin)
10:06:54  * chiltsquit (Read error: Operation timed out)
10:17:39  * jibayjoined
10:19:56  * chiltsjoined
10:25:06  * mikolalysenkojoined
10:29:51  * ins0mniajoined
10:36:12  * mikolalysenkoquit (Ping timeout: 264 seconds)
10:39:11  * thl0joined
10:42:46  * Guest1421joined
10:42:46  * Guest1421changed nick to ITpro
10:43:16  * ITprochanged nick to Guest26528
10:58:33  * ins0mniaquit (Ping timeout: 240 seconds)
11:01:44  * mikolalysenkojoined
11:04:31  <juliangruber>I think so
11:05:37  * cianomaidinjoined
11:12:11  * mikolalysenkoquit (Ping timeout: 255 seconds)
11:14:30  * ralphtheninjajoined
11:22:51  * cianomaidinquit (Quit: cianomaidin)
11:35:55  * cianomaidinjoined
11:38:15  * mikolalysenkojoined
11:47:22  * cianomaidinquit (Quit: cianomaidin)
11:48:40  * mikolalysenkoquit (Ping timeout: 246 seconds)
11:57:07  * yorickjoined
11:57:07  * yorickquit (Changing host)
11:57:07  * yorickjoined
12:00:20  * timoxleyjoined
12:04:14  <juliangruber>dominictarr: https://github.com/kentonv/capnproto
12:04:35  * marcello3djoined
12:05:07  * stlsaintquit (Ping timeout: 246 seconds)
12:11:41  * st_lukequit (Remote host closed the connection)
12:12:18  * st_lukejoined
12:12:39  * cianomaidinjoined
12:14:30  <juliangruber>although, since it copys memory areas, we can't use it in js land
12:16:32  * mikolalysenkojoined
12:24:25  * jez0990joined
12:24:35  * cianomaidinquit (Quit: cianomaidin)
12:24:53  * mikolalysenkoquit (Ping timeout: 252 seconds)
12:25:16  * cianomaidinjoined
12:37:54  * cianomaidinquit (Quit: cianomaidin)
12:40:32  * mikolalysenkojoined
12:43:32  * tmcwjoined
13:06:15  * timoxleyquit (Quit: Computer has gone to sleep.)
13:08:34  * timoxleyjoined
13:10:13  <dominictarr>shared memory, or copying memory?
13:10:16  * cianomaidinjoined
13:10:21  <dominictarr>juliangruber: ^
13:13:11  * thl0quit (Remote host closed the connection)
13:17:26  <dominictarr>looks really interesting, anyway
13:20:41  * tmcwquit (Remote host closed the connection)
13:25:52  * niixjoined
13:28:00  <marcello3d>anyone know in css, if there is a way to do .foo + .foo, but have it work even if there is a display:none element in between?
13:32:38  * dguttmanjoined
13:35:27  <juliangruber>dominictarr: since it's also a rpc system I guess it really stores ranges of memory
13:40:16  <dominictarr>defunctzombie_zz: am beginning to maybe agree about the problem of versions. I need to know the exact version of deps so when I break something I can figure out what change introduced the bug.
13:42:17  * thl0joined
13:42:33  * thl0quit (Read error: Connection reset by peer)
13:42:52  * thl0joined
13:43:51  * fallsemojoined
13:51:59  * fallsemoquit (Quit: Leaving.)
13:57:33  * dguttmanquit (Ping timeout: 276 seconds)
14:00:13  * tmcwjoined
14:09:15  * ins0mniajoined
14:19:04  <marcello3d>dominictarr: bingo!
14:20:04  <marcello3d>dominictarr: once you pin all versions, it becomes a new UI/UX problem of how to update everything/review changes easily
14:20:29  <marcello3d>if you could solve that problem, then people wouldn't mind as much
14:20:54  <dominictarr>marcello3d: yes… what I really need is snapshots of module versions, so that I can see what has changed since the last time I ran the tests
14:21:16  <marcello3d>it's a good argument for just checking in node_modules
14:21:43  <marcello3d>feels dirty, but it covers that and your earlier problem
14:21:48  * pikpikquit (Changing host)
14:21:48  * pikpikjoined
14:21:48  * pikpikquit (Changing host)
14:21:48  * pikpikjoined
14:22:01  <dominictarr>haha, yeah - maybe you could check that into a dev branch, and leave master clean?
14:23:09  * fallsemojoined
14:26:27  <marcello3d>I'm not sure if npm modules should work that way (that recreates the same problem as pinning), but certainly at the app level
14:28:13  <marcello3d>the main problem with pinning is dependencies will get outdated, you start forking projects just to update their package.json
14:29:39  * defunctzombie_zzchanged nick to defunctzombie
14:29:57  * Domeni___joined
14:30:10  * mikealjoined
14:30:21  <defunctzombie>dominictarr: yes, it is critical
14:30:34  <defunctzombie>dominictarr: it is also critical for a group of devs to be on the same page with what is going on in the codebase
14:31:04  * ITprojoined
14:31:05  <dominictarr>defunctzombie: the "group of devs" is just myself, in the time dimension
14:31:47  * mikealquit (Client Quit)
14:32:17  <defunctzombie>dominictarr: yes
14:32:18  <dominictarr>marcello3d: I'm not against upgrading versions, but I want to be able to check in a known good tree
14:32:34  <dominictarr>and install exactly those modules, if I want
14:32:43  <defunctzombie>dominictarr: ive tried to tell people, but they don't listen :)
14:33:02  <marcello3d>dominictarr: right, so checking node_modules into git should solve that, right?
14:33:04  * Guest26528quit (Ping timeout: 256 seconds)
14:33:17  <marcello3d>ignoring the issue of native/compiled dependencies
14:33:17  <dominictarr>pinning version numbers isn't good enough. I want to be able to install an exact hash
14:33:28  <dominictarr>marcello3d: yes, that is one option.
14:33:42  <marcello3d>even exact hash isn't good enough
14:34:01  <marcello3d>they could rewrite their github tree and the hash could disappear (I think?)
14:34:03  <dominictarr>marcello3d: not of one module, but an entrie tree
14:34:21  <dominictarr>marcello3d: I mean the hash of the content
14:34:22  <marcello3d>you're describing git to me
14:34:31  <marcello3d>hmmm
14:35:05  <marcello3d>that would only work if you shrinkwrapped/archived, right?
14:35:25  <dominictarr>marcello3d: shrink-wrapped with hashes would be good enough
14:35:43  * Domeni___quit (Remote host closed the connection)
14:37:45  * Guest26528joined
14:38:07  * Domeni___joined
14:38:24  <defunctzombie>dominictarr: again, correct
14:38:30  <defunctzombie>dominictarr: hash of contents is also very important
14:38:57  <defunctzombie>both of those things matter for a correct and secure deployment
14:39:55  <defunctzombie>and checking into node_modules at the app level doesn't solve the problems of history management
14:40:05  <defunctzombie>it also adds noise to your app repos which is annoying
14:40:08  <dominictarr>yeah, because if some idiot was editing the code in node_module/*/*.js and they published their module and it doesn't work because there is no published modules with their changes because they forgot to update the real dep….
14:40:27  <dominictarr>I want to detect that
14:40:34  <dominictarr>fast
14:40:44  * ITproquit (Ping timeout: 252 seconds)
14:40:55  <dominictarr>so I the tests fail, I want to know what hash they worked for
14:41:56  <defunctzombie>yep
14:42:01  * CryptoQuickjoined
14:42:20  <defunctzombie>you are starting to see why npm (current form) sucks for dev as well :)
14:42:32  <defunctzombie>even tho it is touted as being really flexible during dev time
14:42:53  <defunctzombie>it doesn't help you deal with detecting the hard problems that it should be imho
14:45:56  * st_lukequit (Remote host closed the connection)
14:49:37  <timoxley>substack FYI http://www.downforeveryoneorjustme.com/substack.net
14:49:44  <timoxley>"It's not just you! http://substack.net looks down from here."
14:51:17  <dominictarr>defunctzombie: it is really good - there is just always room for improvement
14:51:47  <dominictarr>we've solved one set of painful problems, and now we've found a new problem
14:52:11  <dominictarr>it's the "first world problems" pattern
14:53:36  <dominictarr>defunctzombie: have you used bundler? I found a great article about how it works
14:53:46  * timoxleyquit (Quit: Computer has gone to sleep.)
14:54:05  <dominictarr>http://patshaughnessy.net/2011/9/24/how-does-bundler-bundle
14:54:13  <dominictarr>SO, SO, HORRIBLE
15:02:18  * cianomaidinquit (Quit: cianomaidin)
15:02:44  <dominictarr>defunctzombie: what if there was a way to check in node_modules into a dev branch, but not master?
15:03:18  * cianomaidinjoined
15:10:52  * timoxleyjoined
15:20:15  * mikealjoined
15:25:39  * dguttmanjoined
15:26:16  <isaacs>substack: Mine's more efficient, though. Maybe I'll send you a pull req to make them exactly the same.
15:26:38  * mikealquit (Quit: Leaving.)
15:31:49  * mikolalysenkoquit (Ping timeout: 248 seconds)
15:33:49  * cianomaidinquit (Quit: cianomaidin)
15:37:09  * dguttmanquit (Ping timeout: 248 seconds)
15:39:41  * dguttmanjoined
15:39:44  * shamajoined
15:41:40  * mikolalysenkojoined
15:43:00  * nicholas_joined
15:43:46  <defunctzombie>dominictarr: meh, so my take on it is that we can build good package managers that don't require that
15:44:05  <defunctzombie>dominictarr: yes, certainly I can always check things in... but I think tooling can be better
15:44:08  <defunctzombie>and not require that
15:44:24  <dominictarr>defunctzombie: yeah, I am leaning that way too
15:44:37  <dominictarr>npm should really be able to be exact about what is installed
15:44:56  <defunctzombie>dominictarr: absolutely
15:45:07  <defunctzombie>dominictarr: otherwise it is useless for dev and prod
15:45:21  <defunctzombie>dominictarr: and I don't buy the argument that a package manager cannot be used to deploy things or such
15:45:26  <dominictarr>you need to be able to know exactly what is installed, and what was last tested
15:45:32  <defunctzombie>yep
15:45:38  <defunctzombie>dominictarr: you are starting to see the light :)
15:45:59  <dominictarr>I'm thinking a hash tree section in the package, or a separate file
15:46:18  <dominictarr>so you can install the old way, and also the last tested version...
15:46:37  <dominictarr>and see what modules are different if they arn't exact
15:47:10  <dominictarr>maybe, keep a log of test runs, and trees...
15:47:24  * nicholas_quit (Ping timeout: 260 seconds)
15:50:01  * cianomaidinjoined
15:50:52  * jcrugzzjoined
15:54:33  <jez0990>dominictarr: may as well throw in some public key love whilst solving that problem
15:55:33  <mikolalysenko>grr... I want to write more modules but have to write thesis proposal instead...
15:55:42  <mikolalysenko>must resist urge to procrastinate and code stuff in js...
15:56:05  <mikolalysenko>I really want to write a module to point location in triangulations
15:56:09  * Guest26528changed nick to ITpro
16:04:17  * wiwilliajoined
16:07:15  * cianomaidinquit (Quit: cianomaidin)
16:27:11  <mikolalysenko>dominictarr: is there a minimal example of scuttlebutt out there?
16:27:52  <dominictarr>yeah, sure https://github.com/dominictarr/streams-workshop/blob/master/5-scuttlebutt.js
16:29:21  <dominictarr>that makes a chat room where the clients can reconnect when the server goes down - and retrive messages written when offline
16:30:33  <mikolalysenko>interesting
16:30:43  <mikolalysenko>also, how bad is the latency in scuttlebutt?
16:30:59  <mikolalysenko>like can you use it in a realtime game, or do you have to add some scheduling/priority stuff on top of it?
16:31:48  <mikolalysenko>like over a websocket, how many ms does it take for changes to the state to propagate
16:34:52  * Guest26528joined
16:37:53  * ITproquit (Ping timeout: 252 seconds)
16:41:41  * wiwilliaquit (Ping timeout: 248 seconds)
16:45:52  * mikealjoined
16:47:27  * tmcwquit (Remote host closed the connection)
16:48:20  * dguttmanquit (Ping timeout: 255 seconds)
16:48:37  * dguttmanjoined
16:49:49  * mikeal1joined
16:49:49  * mikealquit (Read error: Connection reset by peer)
16:52:49  * Domeni___quit (Remote host closed the connection)
17:04:06  * niixquit (Remote host closed the connection)
17:04:34  * Domeni___joined
17:09:28  * tmcwjoined
17:18:38  * cianomaidinjoined
17:22:58  * timoxleyquit (Quit: Computer has gone to sleep.)
17:26:39  <tmcw>substack: are testling-ci tests run on https servers?
17:28:42  * jibayquit (Remote host closed the connection)
17:30:25  * cianomaidinquit (Quit: cianomaidin)
17:33:11  * timoxleyjoined
17:47:06  * wiwilliajoined
17:48:01  <tmcw>these tests pass in real browsers but fail without much debug help in testling-ci https://ci.testling.com/mapbox/corslite
17:48:31  <tmcw>they also work in browserling
17:48:47  <dominictarr>mikolalysenko: that is mostly about where the server is from the client.
17:48:57  <dominictarr>updates are sent immediately
17:49:08  <dominictarr>so, that is about round trip time.
17:49:20  <dominictarr>although, you could look into webrtc
17:49:50  <dominictarr>I think you can get direct connection with that - even over the local network - which will be super fast
17:50:08  <mikolalysenko>dominictarr: but there is going to be some latency due to processing time, etc.
17:50:29  <dominictarr>processing on the server?
17:50:34  <mikolalysenko>yeah
17:50:45  <mikolalysenko>or maybe I am misunderstanding how scuttlebutt works?
17:50:53  * cianomaidinjoined
17:50:57  * cianomaidinquit (Client Quit)
17:51:25  <dominictarr>if two clients are connected to the same server, an update will pretty much bounce off the server and go directly to the other clients
17:51:41  <mikolalysenko>ok
17:52:02  <mikolalysenko>I guess what I am wondering is if scuttlebutt could be used in say a realtime multiplayer game
17:52:31  <mikolalysenko>I would suppose though that you would still need to do some prediction on the client side
17:52:49  <mikolalysenko>but in the game you have values which are usually changing all the time, so many frequent updates get pushed out over the wire
17:53:03  <dominictarr>yes.
17:53:34  <dominictarr>with the basic scuttlebutt/model, consecutive updates overwrite the old values
17:53:52  <dominictarr>so, it doesn't need to send everything
17:54:11  <mikolalysenko>a question about these models: can you create spline models that do stuff like interpolate/predict values?
17:54:32  <mikolalysenko>for example, in most games you want cubic hermite splines to fit position/velocity values
17:55:11  <mikolalysenko>the way it usually works is that clients run some fixed number of ticks behind the server
17:55:21  <mikolalysenko>and the buffer up future positions for objects
17:55:44  <mikolalysenko>then you can basically interpolate each frame to get the position of the object
17:59:56  * Domeni___quit (Read error: Connection reset by peer)
18:00:21  * Domeni___joined
18:00:24  * thl0_joined
18:00:32  * thl0quit (Read error: Connection reset by peer)
18:05:48  * jxsonjoined
18:17:22  <niftylettuce>upvotes please and ty "Node Wrapper and CLI for EasyPost (geteasypost.com)" http://news.ycombinator.com -- should be like #5 /cc pkrumins AvianFlu dominictarr mbalho tanepiper
18:17:32  <niftylettuce><3
18:18:40  <dominictarr>niftylettuce: you need a botnet
18:19:06  * mikeal1quit (Quit: Leaving.)
18:19:27  <niftylettuce>dominictarr: :)
18:20:16  <niftylettuce>substack: can i haz ur upvote too :) ?
18:20:42  * dominictarrquit (Quit: dominictarr)
18:22:47  * mikolalysenkoquit (Read error: Connection reset by peer)
18:26:38  <jesusabdullah>what is easypost
18:28:26  <niftylettuce>jesusabdullah: http://geteasypost.com
18:28:28  <jesusabdullah>oh word
18:28:37  <niftylettuce>jesusabdullah: upvotesz plsz?
18:28:42  <jesusabdullah>yeah sure
18:28:59  * mikolalysenkojoined
18:32:52  * xaqjoined
18:35:21  <niftylettuce>yay #4
18:35:24  <niftylettuce>e-z
18:45:35  <jez0990>aha, IRL streams http://en.wikipedia.org/wiki/Kanban
18:46:50  <jez0990>Kanban wisdom seems to suggest a mixture of push and pull
18:47:22  * Guest26528changed nick to ITpro
18:48:14  * xaq_joined
18:51:33  * xaqquit (Ping timeout: 258 seconds)
18:51:40  <niftylettuce>isaacs: is something wrong with NPM?
18:51:51  <niftylettuce>isaacs: every time I try to publish a new version of a module, it's taking the version number but not taking my changes to code
18:52:09  <isaacs>niftylettuce: I DEMAND AN EXAMPLE TO REPRODUCE THIS
18:52:46  * xaq_quit (Remote host closed the connection)
18:54:29  * jcrugzzquit (Ping timeout: 248 seconds)
18:54:51  <niftylettuce>isaacs: https://github.com/niftylettuce/giggity
18:55:17  <niftylettuce>i tried publishing a change here https://github.com/niftylettuce/giggity/blob/master/bin/giggity.js#L12 and its not taking it in npm
18:55:44  <isaacs>niftylettuce: what isn't changing?
18:55:45  <isaacs>http://registry.npmjs.org/giggity
18:55:47  <isaacs>i see 4 versions there
18:55:56  <niftylettuce>yeah its not taking that ".Play()"
18:56:01  <niftylettuce>on line 12 in that link^
18:56:17  <niftylettuce>i changed version for play.js since marak's module poorly maintained
18:56:24  <niftylettuce>weirdness
18:56:26  <isaacs>, play = require('play').Play()
18:56:29  <isaacs>should be that, right?
18:56:30  <niftylettuce>yeah
18:56:37  <niftylettuce>but it aint and i sad
18:57:08  <isaacs>$ head -n12 node_modules/giggity/bin/giggity.js | tail -1
18:57:09  <isaacs> , play = require('play').Play()
18:57:10  <isaacs>you sure?
18:57:13  <isaacs>cuz that's what i'm getting
18:57:53  <niftylettuce>isaacs: are you doing `$ npm install -g giggity` and then `$ giggity` ? b/c the bin script is weird
18:58:02  <niftylettuce>it should play audio but it doesnt it gives error
18:58:05  <isaacs>niftylettuce: i'm doing `npm install giggity` and then looking at the data
18:58:12  <niftylettuce>yea do the -g flag
18:58:21  <niftylettuce>and then go do head -n12 on the bin file
18:58:24  <isaacs>niftylettuce: yeah, works for m
18:58:26  <isaacs>e
18:58:31  <isaacs>family guy troll
18:58:43  <niftylettuce>isaacs: the audio works for u? wtf i cant repo
18:58:44  <niftylettuce>repro*
18:58:57  <isaacs>niftylettuce: running a second time says the png's corrupted.
18:59:05  <isaacs>niftylettuce: i think the bug is in your code, dude
18:59:32  <niftylettuce>isaacs: no i know of that err, thats not it
18:59:33  <isaacs>oh, it does different ones.
18:59:39  <isaacs>niftylettuce: `npm ls -g giggity`
18:59:50  <niftylettuce>isaacs: now it works, i had a local issue
18:59:51  <isaacs>niftylettuce: whassat do
18:59:54  <niftylettuce>isaacs: :) thanks man <3
18:59:57  <isaacs>there you go :)
19:00:03  <isaacs>neat module.
19:02:00  * Domenic__quit (Ping timeout: 260 seconds)
19:03:26  * Domenic__joined
19:05:27  <timoxley>https://twitter.com/puffnfresh/status/320249238795743234
19:07:40  <timoxley>the smugness/attitude of these functional programming/static typing people really gets on my nerves
19:10:49  * ryan_stevensjoined
19:12:27  * _ddgbotjoined
19:13:40  <mbalho>timoxley: that dudes a troll
19:14:25  <mbalho>i want to respond with 'our only contract is to not be wankers' but i wont
19:14:31  <timoxley>hahaha
19:17:00  * douglaslassancequit (Quit: Leaving...)
19:18:59  * ITproquit
19:19:24  * Guest26528joined
19:19:24  * Guest26528changed nick to ITpro
19:22:40  * cianomaidinjoined
19:23:55  * timoxleyquit (Quit: Computer has gone to sleep.)
19:29:12  <Domeni___>this is the same guy that trolled lxjs with "haskell in js" i think.
19:29:28  <mbalho>yep
19:29:28  <Raynos>timoxley: ?
19:30:06  * timoxleyjoined
19:30:45  <Raynos>he has a point though
19:31:00  <Raynos>a type system makes enforcing semver easier
19:31:58  <Domeni___>maybe one as strong as haskell's
19:32:06  <Domeni___>(i don't have experience with such type systems)
19:32:27  <mikolalysenko>stronger typing would be nice, especially if you could do better inlining stuff
19:32:28  <Raynos>juliangruber: How could `data-foo` have worked?
19:38:59  <juliangruber>Raynos: it would be set like any other attribute, just not as fast as with dataset
19:39:03  * tilgovijoined
19:39:12  <Raynos>but hyperscript doesnt set attributes
19:39:14  <Raynos>it sets properties
19:39:21  <Raynos>data- properties are not a thing
19:39:24  <Raynos>as far as a I know
19:39:57  <Raynos>yeah, it doesnt work
19:47:04  * jcrugzzjoined
19:54:41  <juliangruber>oh ok
19:54:56  <juliangruber>sorrey
19:55:14  <juliangruber>what's the lightest thing for hacking on the go? a kindleberry py?
19:55:29  * AvianFluquit (Remote host closed the connection)
19:56:02  <mbalho>i think so yea
19:56:11  <mbalho>depends on if 'go' means outside in the sun or not
20:02:12  <juliangruber>in the train mostly
20:02:20  <juliangruber>often on my lap
20:06:10  * jxsonquit (Remote host closed the connection)
20:09:46  <timoxley>Raynos dominictarr was tacking this problem at one point from the perspective of tests
20:09:53  <timoxley>tests > types?
20:11:26  <jesusabdullah>idk man my dell mini 9 was pretty fucking tiny
20:11:30  <jesusabdullah>not so great for the sun but tiny
20:11:49  <jesusabdullah>I'd avoid the acer apires honestly, I haven't been happy with either of the ones I bought
20:13:17  * cianomaidinquit (Quit: cianomaidin)
20:14:18  <juliangruber>I was thinking, maybe an iPad mini sshing onto the raspberry pi
20:14:47  <juliangruber>I don't really feel like an acer or dell...
20:17:46  <Domeni___>surface!
20:18:14  * shadghostjoined
20:19:18  <juliangruber>Domeni___: with linux on it? :D
20:19:41  <juliangruber>the keyboard is really sexy though
20:19:51  <Domeni___>the kickstand is pretty nice too actaully
20:20:55  <juliangruber>the surface sshing into the kindleberry or running a vm could work
20:20:56  <Domeni___>http://www.geek.com/microsoft/how-to-install-ubuntu-on-the-surface-pro-1539262/
20:21:13  <juliangruber>yeah...but 900$ bucks man
20:21:43  <Domeni___>yeah
20:22:24  <Raynos>juliangruber: chromebook pixel?
20:22:31  <juliangruber>Raynos: $$$$
20:22:33  <juliangruber>:D
20:25:45  <juliangruber>mbalho: the screen lag doesn't bother you?
20:25:53  <juliangruber>of the kindleberry
20:26:58  * ITproquit (Excess Flood)
20:27:27  * Guest26528joined
20:27:27  * Guest26528changed nick to ITpro
20:27:57  * ITprochanged nick to Guest71926
20:29:12  <mikolalysenko>has anyone bothered to implement fast selection for js yet?
20:29:13  <mikolalysenko>http://en.wikipedia.org/wiki/Selection_algorithm
20:29:34  <mikolalysenko>I can't find an npm module for it, but "select" is an overloaded term...
20:29:45  <mikolalysenko>also tried looking for median, etc. and no luck
20:29:49  <mbalho>juliangruber: nope
20:33:23  <mbalho>juliangruber: did you see the writeup i did? "it doesn't bother me at all when typing" http://maxogden.com/kindleberry-wireless.html
20:34:29  <juliangruber>mbalho: I just read that and thought...hm maybe that changed after using it more
20:34:38  <mbalho>lol
20:34:39  <juliangruber>great writeup
20:34:41  <juliangruber>btw
20:36:11  * timoxleyquit (Quit: Computer has gone to sleep.)
20:37:54  * juliangruberzzz
20:38:08  * timoxleyjoined
20:50:15  * jdiezjoined
20:50:16  * jdiezquit (Changing host)
20:50:16  * jdiezjoined
20:55:39  * thl0_quit (Remote host closed the connection)
20:57:33  * paul_irishjoined
21:00:13  * nicholas_joined
21:02:39  * ins0mniaquit (Ping timeout: 276 seconds)
21:13:05  * mikolalysenkoquit (Ping timeout: 257 seconds)
21:16:37  * jxsonjoined
21:18:22  * tilgoviquit (Remote host closed the connection)
21:19:03  * jdiezpart
21:21:09  * jxsonquit (Ping timeout: 252 seconds)
21:24:25  * ryan_stevensquit (Quit: Leaving.)
21:25:14  * wiwillia2joined
21:25:29  * thl0joined
21:26:42  * wiwilliaquit (Ping timeout: 245 seconds)
21:26:42  * brianloveswordsquit (Ping timeout: 245 seconds)
21:27:06  * brianloveswordsjoined
21:33:14  <rowbit>/!\ ATTENTION: (default-local) [email protected] successfully signed up for developer browserling plan ($20). Cash money! /!\
21:33:20  <rowbit>/!\ ATTENTION: (default-local) paid account successfully upgraded /!\
21:37:44  * AvianFlujoined
21:38:21  * ins0mniajoined
21:42:43  * paul_irishchanged nick to paul_____irish
21:46:37  <chrisdickinson>Raynos: hitting a weird issue with levelidb related to indexdb-wrapper trying to call `setVersion` on the database (and that method doesn't exist)
21:46:44  * paul_____irishchanged nick to paul_irish
21:49:41  * ryan_stevensjoined
21:50:22  * dominictarrjoined
21:51:58  <Raynos>chrisdickinson: that shit is broke as fuck I think
21:52:04  <Raynos>probably newer versions of chrome
21:52:18  <Raynos>chrisdickinson: write a new cross browser IDB wrapper :D
21:52:28  <chrisdickinson>hah
21:52:30  <chrisdickinson>yeah
21:52:35  <chrisdickinson>that'll probably have to happen
21:52:52  <Raynos>Or maybe
21:52:58  <Raynos>just update levelidb to use the latest version
21:52:59  * ryan_stevens1joined
21:53:11  * ryan_stevens1quit (Client Quit)
21:53:27  <Raynos>right now its my fork ( https://github.com/Raynos/levelidb/blob/master/package.json#L23 )
21:54:10  * ryan_stevensquit (Ping timeout: 245 seconds)
21:57:11  * ryan_stevensjoined
21:58:03  <dominictarr>niftylettuce: hey, just had an idea: you could greatly simplify the task of a hacker news botnet by using tor
21:58:52  <dominictarr>you just have to make requests that look like a normal user, so that a new user looks like a real one.
22:07:51  <Raynos>isaacs: is there a way we can get rid of `push("")` semantics by just putting the complexity involved in TLS itself?
22:08:18  <isaacs>Raynos: not without having TLS dig into the _readableState
22:08:28  <Raynos>why?
22:08:29  * timoxleyquit (Quit: Computer has gone to sleep.)
22:09:17  <Raynos>As I understand
22:09:23  <Raynos>you can replace all references to push("")
22:09:33  <Raynos>with a implicit call to `this._read()`
22:10:56  * CryptoQuickquit (Ping timeout: 256 seconds)
22:12:47  * ryan_stevensquit (Quit: Leaving.)
22:14:01  <defunctzombie>https://github.com/shtylman/node-sauron
22:14:02  * thl0quit (Remote host closed the connection)
22:14:10  <defunctzombie>simplest launcher I have yet
22:14:35  <defunctzombie>debating about trying 'mon' via 'mongroup' tho but seems more involved
22:15:56  <isaacs>Raynos: no, the point is that we need to NOT call this._read() again right now
22:16:09  <Raynos>then do it in a timeout
22:16:11  <isaacs>Raynos: and you're not suposed to call _read() yoursefl anyway
22:16:12  <Raynos>or something
22:16:14  <isaacs>Raynos: no, that's terrible.
22:16:20  <isaacs>Raynos: think about it, how long do you make the timer for?
22:16:21  <Raynos>that what does pipe do
22:16:25  <Raynos>when you call push("")
22:16:43  <isaacs>Raynos: pipe() sits there waiting for another 'readable' event
22:16:51  <isaacs>which will never come, until you tell it to read some more data.
22:16:51  <Raynos>ok then do that yourself
22:16:55  <isaacs>when?
22:17:01  <Raynos>`this.once("readable", function () { that._read() })`
22:17:09  <isaacs>how do i tell it that i'm not in the 'reading' state?
22:17:13  <isaacs>without putting data into it?
22:17:20  <isaacs>and without signalling failure?
22:17:33  <Raynos>i dont fully understand the state machine
22:17:50  * stlsaintjoined
22:17:51  <Raynos>and so i should just duck out :P
22:17:56  <isaacs>heh :)
22:18:19  <isaacs>in this case, the clear side has no data, and won't have any more data until and unless the encrypted side puts some in.
22:18:27  <isaacs>but you can't know ahead of time when that will be.
22:18:52  <isaacs>and you need to make sure that the Stream machinery knows you're not actively doing anything, so that it will try again later if you call read(0) on it
22:18:54  * timoxleyjoined
22:19:02  <isaacs>it's a very weird case.
22:33:13  * dguttmanquit (Quit: dguttman)
22:33:32  <dominictarr>isaacs: instead of the empty push can't the stream just go ahead and read again on it's own?
22:35:12  <dominictarr>or what if, instead of a push('') you just emitted 'readable' again -- hmm, or is that what push('') does anyway?
22:37:25  <Domeni___>so. this is pretty good. discuss while i commute back home. http://www.dartlang.org/articles/feet-wet-streams/
22:42:06  * Guest71926quit (Ping timeout: 276 seconds)
22:47:02  <isaacs>dominictarr: so, it will go ahead and read() again on its own
22:47:12  <isaacs>dominictarr: but _read() is where the "check if we have more data" logic lives
22:47:15  <jesusabdullah>yo dawgs, question: I have code that's hanging instead of exiting, and I'm closing up everything as far as I can tell. Any protips for figuring out where the extra listener is?
22:47:24  <isaacs>dominictarr: so read() will say, "Oh, I see, I'm already reading. never mind then."
22:47:32  <jesusabdullah>isaacs: you're good at this stuff, any suggestions?
22:47:53  <isaacs>jesusabdullah: var openStuff = process._getActiveHandles()
22:48:01  <isaacs>jesusabdullah: then start poking around on that thing
22:48:07  <dominictarr>right - so calling read twice before the next 'readable' does nothing?
22:48:14  <jesusabdullah>isaacs: also that reminds me, should t.type(xs, 'array') work? It seems to be like, "lolno that is an object" which is TRUE but not what I'm trying to ask
22:48:26  <jesusabdullah>isaacs: t.ok(Array.isArray(xs)) works but, like, :(
22:48:30  <jesusabdullah>isaacs: also thanks
22:50:16  <jesusabdullah>aww crap, it's supertest
22:50:27  <jesusabdullah>I wonder why?
22:50:41  <isaacs>jesusabdullah: t.type(xs, Array)
22:50:56  <jesusabdullah>oh okay
22:51:01  <jesusabdullah>works for me
22:51:20  <isaacs>dominictarr: exactly
22:51:35  <isaacs>dominictarr: that's why i need a way to say "I'm not reading any more, but i'm also not giving youanything, even EOF"
22:52:11  * Domeni___quit (Remote host closed the connection)
22:53:19  <dominictarr>right - I get that, but whats stopping the stream from just getting data - the encrypted stream needs to read more...
22:54:40  <isaacs>yreah
22:55:01  <isaacs>once the crypto side puts more data into openssl, some data MAY become available to the clear stream
22:55:17  <isaacs>so the crypto side says this.opposite.read(0) to say "Hey, buddy, might be some stuff for you"
22:55:42  <isaacs>but from the CryptoStream's point of view, some OTHER object is telling you when that happens, you don't know yourself
22:55:45  <dominictarr>Domenic_: what is the dart module system like? seems like it will have a $classpath (and the associated problems)
22:56:52  <dominictarr>hmm, so can't it just push that into the clear text stream's buffer this.opposite.push(data) ?
22:59:58  * ins0mniaquit (Ping timeout: 246 seconds)
23:01:59  * tilgovijoined
23:02:31  <isaacs>dominictarr: well, it doesn't know what to push into the opposite side
23:02:42  <isaacs>dominictarr: the opposite side needs to talk to openssl to get that
23:02:55  <isaacs>dominictarr: it could do this.opposite._read()
23:03:09  <isaacs>dominictarr: but what if it's already *actually* in the middle of reading?
23:04:45  * tmcwquit (Remote host closed the connection)
23:08:20  * yorick_joined
23:10:05  * substack_joined
23:12:51  <Raynos>Domenic_: `length` and `isEmpty` semantics sound super dodge
23:13:09  <Raynos>`length` should be a higher order `count :: Stream -> Future<Number>` function
23:13:56  <Raynos>Domenic_: Having `single` and `multiple` as seperate things is going to make for frustrating complexity. reducers has this, it's annoying.
23:14:27  <Raynos>actually wait, I think I'm thinking of having single & multiple semantics for `pull-stream` as well. Maybe it's not a bad idea
23:15:26  <Raynos>`.transform()` and `StreamTransformer` are just pipe and Duplex
23:17:51  <Raynos>Domenic_: The only good thing is an emphasis on functional style stream transformations. The rest is nothing new
23:20:10  <Raynos>Domenic_: the biggest problem I see so far is the lack of backpressure. Also I don't know whether `take(n)` aborts the stream
23:20:53  <Domenic_>Raynos: what's wrong with length and isEmpty.
23:21:14  <Raynos>well does length only fulfill the future when the stream is done?
23:21:15  <Domenic_>Raynos: hmm, good to get implementation experience saying that's bad. It seemed like an elegant way to do pull streams without missing data.
23:21:17  <Raynos>what about isEmpty
23:21:26  <Raynos>when does it fulfill
23:21:29  <Domenic_>yeah that is my understanding
23:21:35  <Raynos>length is ambigious compared to `count`
23:21:42  <Raynos>i dont know what isEmpty will tell me.
23:21:50  <Domenic_>if length === 0
23:22:24  <Domenic_>why do you like count as a function instead of length as a method?
23:28:07  <Raynos>Domenic_: as long as the semantics are the same it's fine.
23:28:20  <Raynos>I just cant tell what `length` and `isEmpty` do and when they do it
23:28:29  <Raynos>I feel that `count` is way less ambigious in what it does
23:30:31  * mikealjoined
23:30:43  <Raynos>Domenic_: Yeah, the lack of references to back pressure or abortion is really bad.
23:31:13  <Domenic_>ah yes, the old back pressure thing
23:33:16  <Domenic_>looks like they have cancel/pause/resume: http://api.dartlang.org/docs/releases/latest/dart_async/StreamSubscription.html
23:35:59  <Raynos>Domenic_: then it's a question whether StreamTransformer bubbles back pressure
23:36:06  <Raynos>and whether where , take, skipWhile & pals bubble it as well
23:36:15  <Domenic_>interesting
23:36:32  * Guest26528joined
23:36:33  * Guest26528changed nick to ITpro
23:36:34  <Raynos>if they dont then there is no back pressure
23:36:53  <Raynos>so I should be able to get a file read and a file write stream
23:37:03  <Raynos>and put a bunch of take / where / bla / transform calls in between
23:37:21  <Raynos>and have the writer write one chunk at a time with manual pause / resume pumping
23:37:26  <Raynos>and the process memory usage should stay flat
23:37:30  <Raynos>no matter how big the files are
23:37:40  <Domenic_>there are no write streams though, not exactly.
23:38:05  <Raynos>Well there are
23:38:11  <Raynos>http://api.dartlang.org/docs/releases/latest/dart_io/IOSink.html
23:38:16  * xaqjoined
23:38:29  <Domenic_>ah that's what i was looking for
23:38:37  <Raynos>whether you want to call it writable or reader doesnt matter
23:38:49  <Raynos>writable / reader / consumer & readable / source / stream
23:38:54  <Raynos>all the same words
23:39:07  <Raynos>Domenic_: do you know how to jump to implementation?
23:39:31  <Domenic_>no idea
23:39:38  * ITprochanged nick to Guest67021
23:39:40  <substack_>blarg services are down
23:44:19  <Domenic_>anyone going to nodepdx
23:51:02  <jesusabdullah>Probably not
23:51:11  <jesusabdullah>I thought about submitting a talk but I don't think I have time
23:53:12  * yorick_quit (Remote host closed the connection)
23:56:53  * marcello3dquit (Remote host closed the connection)