00:00:52  <mbalho>it just concerns me that the barrier to entry for all this stuff we are working on is knowledge of lots of nerdy shit :)
00:01:06  <dominictarr>no way!
00:01:11  <dominictarr>it's pretty simple
00:01:28  <dominictarr>oh, it can be hard to get it to compile
00:03:56  <rvagg>from the usage stats for levelup vs the number of compile problems reported I think most people are compiling fine
00:04:03  <rvagg>but it's something I need to work on more
00:05:04  <dominictarr>leveled compiled fine for me
00:05:46  <dominictarr>ALSO janl told me at jsconf.eu that we wanted to reimplement leveled in pure js.
00:06:18  <mbalho>leveldb not leveled
00:06:37  <mbalho>(thats what he told me at least)
00:06:43  <rvagg>dominictarr: I saw that mentioned on pouchdb github but haven't got a response about progress
00:06:43  <dominictarr>sorry, correct
00:06:57  <mbalho>he is also busy
00:07:47  <dominictarr>if we have other cool stuff, like map reduce, and a reusable test suite, then maybe we can get him more excited about this
00:08:06  <mbalho>yea thats way true
00:08:32  <dominictarr>the time is ripe for leveldb
00:09:10  <mbalho>ill try to revive my geohash point indexer on top of my8bird leveldb
00:14:00  <mbalho>woot https://gist.github.com/4137796
00:14:17  <fotoverite>woot
00:15:18  <mbalho>oh wait subtack published that already https://github.com/substack/polyhash
00:15:28  <mbalho>its just hella slow
00:16:29  <mbalho>heres a shapefile indexer that i got working sorta https://gist.github.com/4137801
00:26:36  * yorickquit (Remote host closed the connection)
00:29:45  <dominictarr>mbalho, we probably just want to start with a way to index points, and things happening withing a radius or bounding box.
00:30:44  * thatguydanquit (Quit: thatguydan)
00:38:13  * thatguydanjoined
00:38:47  <mbalho>the last gist i posted indexes only points and gives you a radius query
00:39:27  <mbalho>it also lets you upload point shapefiles to index them
00:39:42  <mbalho>i started doing querying by polygon but didnt finish it
00:46:58  * thatguydanquit (Ping timeout: 256 seconds)
00:48:29  <Raynos>dominictarr, rvagg: I think dominic is right and leveldb needs some kind of plugin system
00:48:52  <rvagg>code it up then brother
00:49:30  <dominictarr>I'm doing that right now
00:50:22  <Raynos>I dont like plugin systems :p. They are a necessary evil. not sure how it should work but it needs something
00:51:24  <dominictarr>a database isn't really a module
00:51:31  <dominictarr>it's integrated
00:51:47  <dominictarr>it's moving towards an application
00:52:11  <dominictarr>at that level the modules that fit into it need to accept it's incidental features...
00:52:31  <dominictarr>that is when you get plugins, rather than a completely independent module.
00:53:52  <Raynos>like I want a plugin that adds before and after events to the db
00:54:03  <Raynos>so that I can write latency compensation for the db file IO
00:54:23  <Raynos>but i only want to "monkeypatch" the db once
00:54:29  <Raynos>which means a plugin system is needed
00:55:17  <dominictarr>so, the pattern I'm doing now, is each module adds just one property that is it's own name
00:55:25  <dominictarr>so, hooks adds db.hooks
00:55:49  <dominictarr>and then you do db.hooks.pre(function (){...})
00:55:50  <dominictarr>etc
00:56:01  <Raynos>well it doesnt need to add public properties
00:56:09  <Raynos>it just needs to monkey patch the thing once.
00:56:22  <dominictarr>each plugin?
00:56:29  <Raynos>yeah
00:56:41  <Raynos>hooks only needs to overwrite put / del / batch once
00:56:43  <dominictarr>each plugin does only patch once
00:56:43  <Raynos>per db instance
00:56:51  <dominictarr>absolutely
00:56:56  <Raynos>it doesnt need to add db.hooks it could have a weakmap internally
00:56:57  <dominictarr>that is why there is a hooks plugin
00:57:03  <Raynos>and then you do hooks(db).pre(...)
00:57:11  <Raynos>:D
00:57:18  <dominictarr>you add the hooks plugin
00:57:29  <Raynos>but if you write the hooks plugin
00:57:33  <Raynos>thats like the only plugin I need
00:57:37  <substack>dominictarr: what about using events instead for that?
00:57:48  <dominictarr>and then you use that to manage how other plugins intercept events
00:58:35  <dominictarr>substack, the "listener" needs to mutate the input (batch array)
00:58:40  <Raynos>mbalho: I wanted to write a function called html :(
00:58:56  <rvagg>hence my suggestion to use an Event object that can modify internal behaviour
00:58:56  <dominictarr>there is no "clean" way to do this
00:59:00  <mbalho>Raynos: to do what
00:59:26  <Raynos>my own custom bullshit
00:59:30  <dominictarr>okay, sure an event object could work
01:00:12  <dominictarr>I just did it the simplest way, because so far I am the author and only user of the only thing that does this.
01:00:21  <Raynos>https://github.com/Raynos/wizard-game/blob/master/browser/ui/top_bar.js#L80
01:00:53  <dominictarr>I'll change it if there is another plugin that has different requirements
01:01:20  <dominictarr>I am expecting to need one that can do async operations -- currently it's only sync changes to the batch
01:01:43  <dominictarr>but I'm gonna leave it until I am actually exploring the problem that needs this as a solution
01:01:48  <substack>dominictarr: what about through streams
01:01:57  <substack>take input, produce output
01:02:01  <dominictarr>anything else is a premature optimization
01:06:00  <Raynos>mbalho: https://github.com/Raynos/unpack-html#unpack-html I used another name already
01:06:59  <Raynos>dominictarr: write a small readme for level-hooks with an example please
01:07:25  <dominictarr>I will do that soon
01:22:38  <Raynos>thanks
01:34:05  <Raynos>rvagg: Im going to refactor all the encoding stuff out of levelup into a seperate module
01:34:33  <rvagg>Raynos: fine, but keep in mind that I'm also going to push some of it down into C++ so it avoids Buffers for the most part
01:34:49  <Raynos>cool
01:34:56  <Raynos>I need for both indexeddb and memory shim
01:35:40  <Raynos>i actually think all the encoding shit is bullshit :P
01:36:03  <rvagg>perhaps but I'm addicted to flexibility
01:41:20  <chrisdickinson>yay, finally things are starting to come together: https://github.com/chrisdickinson/glsl-deparser
01:42:01  <chrisdickinson>surprisingly, it wasn't that much harder to write a streaming parser than it was to write a regular parser.
01:43:16  * ITproquit (Read error: No route to host)
01:44:16  * ITprojoined
01:46:07  * shykeschanged nick to zz_shykes
01:47:37  * zz_shykeschanged nick to shykes
01:54:44  <mbalho>Raynos: you dont like cheerio?
01:55:44  <Raynos>mbalho: are you kidding me?
01:56:17  <mbalho>Raynos: nope
01:56:33  * ITproquit (Ping timeout: 276 seconds)
01:56:33  <mbalho>Raynos: why would i know if you liked cheerio
01:58:12  <Raynos>mbalho: its jquery on the server. That's silly
01:58:22  <mbalho>why
01:58:26  <rvagg>good for scraping
01:58:31  <Raynos>because the jquery api is silly
01:58:44  <mbalho>silly for what use case
02:00:25  <mbalho>ive written a couple scrapers with it and the only silly thing is $.each argument identity is (index, element)
02:00:31  <mbalho>https://github.com/maxogden/smitten-kitchen-scraper/blob/master/index.js https://github.com/maxogden/image-url-resolver/blob/master/index.js
02:00:45  <mbalho>if it was just document.querySelector/sizzle it would be less silly
02:00:53  <Raynos>mbalho: all use cases. the jquery api is silly
02:01:11  <Raynos>i think the abuse of a query selector is also silly
02:01:19  <Raynos>query selector is only useful when you dont control the html
02:01:21  <Raynos>like a scraper
02:01:24  <Raynos>and thats bloody niche
02:01:52  <mbalho>so querying the dom is niche
02:02:09  <mbalho>do you use getElementById exclusively in your client side code?
02:03:17  <rvagg>require('sizzle')('#foo')
02:04:05  <mbalho>rvagg: does that work in node?
02:04:17  <rvagg>no, I use cheerio in node
02:04:37  <rvagg>https://github.com/rvagg/node-echomunge-web/blob/master/index.js#L17
02:04:51  <Raynos>mbalho: I avoid the query the dom wherever possible
02:05:14  <Raynos>mbalho: thats why unpack-html returns an elements object with named references
02:05:27  <Raynos>i prefer to build up the dom programattically
02:06:24  <dominictarr>Raynos, readme https://github.com/dominictarr/level-hooks
02:06:35  <mbalho>rvagg: my two api complaints with cheerio after having worked with it for a bit is $.map identity and the whole $($('.foo')[0]) pattern which to fix both would require diverging from the jquery api
02:07:00  <mbalho>rvagg: but the rest of it is nice and fast
02:07:45  <Raynos>why do people even use the jquery api
02:07:50  <dominictarr>they make it jQuery because then everyone already knows how to use it
02:08:06  <Raynos>dominictarr: hooks()(db) is weird. Can we have hooks(db) ?
02:08:13  <dominictarr>their target market is everybody on earth except Raynos
02:08:38  <Raynos>dominictarr: but jquery is shit. It's like saying that node should have copied the java streaming api
02:08:40  <dominictarr>well, acually, I want db.use(plugin)
02:08:41  <Raynos>that would be stupid
02:08:53  <dominictarr>Raynos, that is what streams2 IS
02:08:55  <Raynos>dominictarr: so its db.use(hooks()) and db.use calls it with db
02:09:01  <dominictarr>yes
02:09:19  <dominictarr>but we havn't put that in yet
02:09:23  <mbalho>my definition of 'shit' includes things that the majority of javascript programmers think is too difficult
02:10:03  <chrisdickinson>(sidenote: jQuery actually solves a lot of very hard to detect problems -- even if i hate the api and everything that api design has subsequently begotten -- it's a great library to look to for reference when reconciling browser differences)
02:10:32  * jibayquit (Quit: Leaving)
02:10:48  <mbalho>imo complaining about jquery is the same as complaining about js, jquery has good parts too
02:10:57  <Raynos>Has nobody read https://gist.github.com/1613169
02:11:12  <Raynos>complaining about jquery is like complaining about underscore
02:11:30  <Raynos>Its bullshit left from the pre-npm age
02:11:55  <dominictarr>it doesn't matter if you use jQuery or not. who cares
02:12:15  <Raynos>agreed.
02:12:31  <dominictarr>it's like, did the guy who made my coffee ride a bicycle to work?
02:12:36  <Raynos>that shit doesnt matter. What matters is building the most awesome modular api ever
02:13:07  <mbalho>actually that doesnt really matter, its probably just a long tail optimization
02:13:08  <dominictarr>well, what matters is building something that solves a new problem and is highly adoptable
02:13:28  <mbalho>yes o/
02:13:49  <chrisdickinson>i only bring it up because it bears mentioning that when making a module that represents some facet of the giant ball of mud that is jquery, it's usually best to read through the relevant code in jquery just to make sure you're aware of the pitfalls
02:14:48  <mbalho>jquery the good parts: el.text(), el.html(), el.css(), el.remove(), el.attr()
02:14:51  <Raynos>dominictarr: when are we doing the distributed db thing?
02:15:04  <dominictarr>Raynos, replication?
02:15:12  <Raynos>the meetup
02:15:17  <Raynos>distributed meetup thing*
02:15:18  <Raynos>not db.
02:15:20  <dominictarr>oh right
02:15:26  <Raynos>chrisdickinson: dont look at jquery for reference
02:15:27  <dominictarr>substack is back now
02:15:40  <dominictarr>so any time, I'll email the people who need to come
02:15:42  <Raynos>chrisdickinson: look at jessie for reference https://github.com/rassie/jessie
02:18:13  <chrisdickinson>well, i suppose more accurately, reading through jquery and the jquery bug tracker for the relevant module you're trying to author is a pretty instructive experience.
02:18:40  <chrisdickinson>(and then making the decision as to how you'll support the broken browsers, if at all)
02:19:39  <Raynos>I have a function that "queries" a live db for a tailable stream
02:19:51  <Raynos>its like readStream() but its live and adds new puts / dels to it
02:20:12  <Raynos>what should I call it that doesnt have the word query or live in the name
02:20:24  <Raynos>or stream :P
02:21:23  <dominictarr>livequery querystream livestream livequery
02:21:36  <Raynos>:D
02:22:14  <chrisdickinson>lueryqream
02:22:36  <dominictarr>there isn't really a name for this type of query
02:22:56  <dominictarr>the only other database that has something like this is couchdb _changes feed
02:23:03  <dominictarr>maybe "livefeed"
02:23:53  <mbalho>dbcat
02:24:18  <mbalho>npm install changes is available
02:24:37  <dominictarr>tail-f
02:24:42  <dominictarr>level-tail-f
02:24:44  <dominictarr>level-tailf
02:25:05  <dominictarr>... but I think the meaning of "livefeed" is pretty much exactly what we are going for here
02:25:44  <dominictarr>so basically I want to go db.livefeed({start: ..., end: ...})
02:25:48  <dominictarr>and get a stream
02:25:54  <dominictarr>that never ends
02:26:36  <mbalho>doesnt 'stream' imply 'live'
02:26:57  <dominictarr>well, levelup already has readStream
02:27:06  <dominictarr>that just does a range query as a stream
02:27:09  <Raynos>livefeed
02:27:12  <Raynos>or tail might be nice
02:27:14  <Raynos>why tail-f ?
02:27:26  <dominictarr>because that is the linux command that does the same thing
02:27:45  <dominictarr>go tail -f LOGFILE
02:27:55  <dominictarr>it will show realtime changes in that logfile
02:28:14  <Raynos>livefeed or live-feed
02:28:28  <Raynos>BIKESHEDDERY++
02:28:38  <dominictarr>level-livefeed
02:29:20  <dominictarr>because it's tightly coupled to levelup
02:29:38  <dominictarr>or firmly coupled
02:29:54  <rvagg>or has a strong emotional affinity with
02:30:05  <Raynos>well yes level-livefeed vs level-live-feed
02:33:34  <mbalho>why is it readStream instead of createReadStream
02:34:13  <rvagg>cause you didn't suggest that early on
02:34:15  <mbalho>if (API already exists in node) copyAPIFromNode()
02:34:51  <mbalho>rvagg: you are allowed to make breaking changes
02:35:19  <rvagg>createAbstractProxySingletonConstructorReadStream()
02:35:53  <rvagg>mbalho: btw, I only just figured out you are max because of I noticed the strange duplication of your comment about jquery "the good parts" here & on twitter...
02:36:01  <mbalho>:)
02:36:38  <rvagg>I'm going to give you commit access and you can change the API if you feel strongly enough about it
02:36:50  <Raynos>https://github.com/Raynos/level-livefeed#level-livefeed
02:37:03  <mbalho>rvagg: ill pull req it, do you care about backwards compat?
02:37:44  <rvagg>well, it's cheap enough to leave the old names in place pointing to the new ones, perhaps it'd be best to do that for a few versions
02:37:59  <mbalho>good call
02:38:15  <rvagg>but no, I don't really care too much but perhaps the pouchdb guys might
02:40:28  <dominictarr>just remove it from the docs but leave it in the code.
02:40:54  <rvagg>+1
03:01:11  <defunctzombie>substack: why does this commit exist? https://github.com/shtylman/node-detective/commit/a15e9b95895467ff67e59a7875b344d50743f607
03:02:40  <Raynos>dedup is the best
03:05:13  * ralphtheninjaquit (Read error: Operation timed out)
03:07:23  <dominictarr>example for level-queue https://github.com/dominictarr/level-queue
03:16:50  <dominictarr>Raynos, actually I need livefeed for map-reduce
03:17:26  <Raynos>dominictarr: o/
03:17:36  <Raynos>https://github.com/Raynos/level-livefeed
03:17:41  <Raynos>except it has a bug maybe
03:17:43  <Raynos>maybe yes
03:17:45  <Raynos>yes it has bugs
03:17:46  <Raynos>second
03:18:22  <substack>defunctzombie: so that (require)('foo') doesn't get detected
03:18:31  <defunctzombie>but that should be detected
03:18:35  <defunctzombie>it works in nodejs
03:18:42  <dominictarr>Raynos, you have some bugs
03:18:48  <defunctzombie>why shouldn't it work when browserified?
03:18:50  <Raynos>ok v0.1.2 is working better
03:19:38  <Raynos>livefeed is like db.writeStream() in reverse
03:20:19  <dominictarr>also, you arn't capturing documents added in batches
03:20:43  <dominictarr>also, you should use start <= key && key <= end
03:20:52  <dominictarr>that is the semantics that leveldb uses
03:21:07  * shuaibquit (Quit: Computer has gone to sleep.)
03:21:13  <Raynos>dominictarr: I forgot about batches!
03:21:15  <Raynos>Ok fixing
03:21:28  <dominictarr>just use level-hooks
03:21:55  <dominictarr>also, you are not checking whether start, end are undefined.
03:22:45  <Raynos>what should start and end default too?
03:22:48  <dominictarr>also, the user needs a way to destroy the end when he's not interested in the stream any more,
03:22:52  <dominictarr>and it needs to cleanup
03:23:10  <dominictarr>so, it needs end, or destroy... or what ever
03:23:18  <Raynos>it needs close
03:23:41  <dominictarr>yeah
03:24:23  <dominictarr>what is close? streams have destroy/end
03:25:33  <Raynos>close is like server.cloise
03:25:45  <Raynos>but what should start and end default too
03:26:36  <Raynos>I guess i should just handle it otherwise
03:27:07  <dominictarr>but it's not a server
03:27:27  <dominictarr>they should default to the maximum range
03:27:34  <dominictarr>the whole database
03:27:36  <defunctzombie>substack: https://github.com/shtylman/node-detective/commits/update-esprima
03:27:45  <defunctzombie>starts with the basic changes
03:27:52  <dominictarr>same as db.readStream
03:28:04  <defunctzombie>the latest change is quite experimental but has to do with wanting to remove the { range: true }
03:31:37  <substack>did you figure out how to make the test/skip.js work?
03:31:42  <substack>without ranges
03:32:16  <defunctzombie>well, I don't see why you want to skip those things
03:32:27  <substack>defunctzombie: (require)('foo.js') shouldn't work because that is how you do a require with browserify and have it not be picked up
03:32:30  <defunctzombie>the example of (require)('foo') works in node
03:32:40  <defunctzombie>?
03:32:44  <defunctzombie>what is the point of that
03:32:46  <substack>that's not important
03:32:59  <substack>so that you can have requires that don't get picked up by browserify
03:33:16  <defunctzombie>I dunno.. seems to magical to me :/
03:33:26  <defunctzombie>I would expect it to convert my code
03:33:29  <substack>also I started on a refactor of required to be streaming but it was really difficult
03:33:40  <substack>the nested nature of the dependency graph is actually really annoying
03:33:42  <defunctzombie>and (require)('foo') works in node so I would expect it to work
03:33:45  <defunctzombie>yes
03:33:48  <defunctzombie>I figured it would be
03:33:49  <substack>in browserify I just want a flat list of dependencies
03:34:04  <Raynos>dominictarr: https://github.com/isaacs/node/blob/streams2/lib/fs.js#L1426
03:34:25  <substack>defunctzombie: (require)('foo') is how you do a require and have it not be picked up by browserify and there is a lot of existing code that depends on this functionality
03:34:44  <dominictarr>everything else is a classic stream
03:34:45  <defunctzombie>substack: I realize this.. my point is that I think that is wrong :)
03:34:59  <substack>defunctzombie: part of the point is that it works in node
03:35:12  <substack>so you can have dependencies that are only picked up in node and not in browser code
03:35:45  <defunctzombie>personally, I would prefer to be explicit about that type of shimming (which is really what it seems to be)
03:35:59  <dominictarr>I think isaacs has stated that close is specific to impl
03:36:07  <dominictarr>notice that it calls destroy
03:36:19  <defunctzombie>in either case... it isn't the place of detective to make that call :/
03:36:52  <defunctzombie>"Find all calls to require() no matter how crazily nested using a proper walk of the AST" clearly not true if it ignores things :p
03:37:04  <substack>yes it is
03:37:11  <substack>var require_ = require; require_('...')
03:37:21  <substack>uglify thinks (require)() is different from require()
03:37:28  <substack>detective used to use uglify
03:37:39  <defunctzombie>right
03:37:44  <defunctzombie>I remember that
03:37:48  <substack>(require)() is the documented way to not have a require be picked up
03:37:56  <defunctzombie>where is that documented?
03:38:13  <defunctzombie>and again.. I do not think that is the role of detective
03:38:22  <defunctzombie>or at least would be optional
03:38:33  <defunctzombie>default behavior I would expect it to pick up my require
03:38:34  <rvagg>btw, i heard brendan eich mentione at jsconf.au that someone has a new JS parser that was faster than esprima, but I don't recall the details now
03:38:52  <defunctzombie>you are making a module which is meant to be generic but it really isn't
03:38:53  <substack>in the tests at least
03:38:58  <substack>defunctzombie: (require) is an expression
03:39:02  <Raynos>dominictarr: https://github.com/isaacs/node/blob/streams2/lib/zlib.js#L340
03:39:10  <defunctzombie>so?
03:39:14  <substack>the problem is that esprima is too clever about reducing (require) into require
03:39:19  <defunctzombie>the test is not really documentation
03:39:30  <Raynos>dominictarr: most of isaacs streams2 work has close and not destroy
03:39:31  <defunctzombie>that is because (require) === require
03:40:02  <defunctzombie>it is correct in that regard
03:40:06  <dominictarr>Raynos, I'm just gonna write my one one that has classic stream api, that will be much easier than talking you around.
03:40:09  <substack>defunctzombie: but so is (1,require) === require
03:40:16  <defunctzombie>yes
03:40:26  <substack>an AST parser shouldn't be doing those reductions
03:40:34  <Raynos>dominictarr: have fun :D
03:40:53  <Raynos>rewriting the module because of bikesheddery of close vs destroy
03:41:05  <defunctzombie>and a require finder should not be removing requires just because some downstream module does it that way ;)
03:41:50  <defunctzombie>esprima does return (1, require) as an expression
03:42:01  <substack>but it reduces (require) to require
03:42:04  <substack>which is annoying
03:42:17  <defunctzombie>?
03:42:24  <defunctzombie>I am running esparse on it
03:42:31  <defunctzombie>and I see it return an epxression statement
03:42:36  <defunctzombie>with the identifier require
03:42:40  <ik> , ,
03:42:43  <ik>o(#)~
03:42:45  <ik> ' '
03:42:57  <defunctzombie>I believe the ast it returns is correct
03:43:59  <defunctzombie>now we could argue that the ast it return for (require)() is not correct
03:44:21  <defunctzombie>but I can't be too sure about that one
03:44:36  <substack>it already works this way and code depends on detective working this way
03:44:48  <substack>case closed
03:44:50  <defunctzombie>code always depends on something working some way
03:44:59  <defunctzombie>that is a terrible excuse for brokenness ;)
03:45:06  <defunctzombie>you don't have to change it..
03:45:16  <defunctzombie>but it is wrong from a detective standpoint
03:45:23  <substack>it works the way it needs to work
03:45:31  <substack>for my purposes
03:45:40  <defunctzombie>sure
03:45:43  <defunctzombie>I don't doubt that
03:46:05  <defunctzombie>but that makes the detective module special purposed for browserify
03:46:21  <defunctzombie>which is not to say wrong, just that is what it is
03:46:33  <defunctzombie>at least maybe document on the readme
03:46:41  <defunctzombie>that (require)(foo) is meant to be ignored
03:46:56  <defunctzombie>versus a bug carried over from previous times
03:46:59  <substack>documenting the behavior could be useful
03:47:16  <substack>it is a bug that was always more of a feature because people used the bug to get a certain behavior
03:47:19  <substack>worse is better
03:47:47  <defunctzombie>sure, like I said. I prefer obtaining the behavior in a different way
03:47:57  <defunctzombie>but if that is how browserify does it then that is how it does it
03:48:09  <defunctzombie>I think it is too subtle :/
03:48:31  <defunctzombie>and would not do it that way, but that is my preference
03:48:36  <Raynos>i agree
03:48:40  <Raynos>we should have something explicit
03:48:43  <Raynos>like //@ignore
03:48:46  <Raynos>or some bullshit
03:48:50  <substack>never using comments ever
03:48:55  <substack>I hate that so much.
03:48:55  <defunctzombie>comments are bad
03:48:58  <Raynos>but substack lives in the harsh world of backwards compat is a bitch
03:49:13  <defunctzombie>I personally think it has to be outside the scope of the code
03:49:24  <defunctzombie>I would equate it to linking to different libs in compile land
03:49:30  <substack>browserify will also never have manifests
03:49:31  <substack>ever
03:49:35  <defunctzombie>it would need to be in the package.json file, or a build
03:49:38  <defunctzombie>or some other thing
03:49:41  <defunctzombie>somewhere
03:49:46  <substack>that will never happen in browserify
03:49:49  <defunctzombie>or in your js that makes the bundle
03:50:07  <substack>in fact all of the things that let you ignore requires and such is getting taken out completel
03:50:08  <defunctzombie>but making subtle behavior like that, you are just making a preprocessor essentially
03:50:10  <substack>y
03:50:44  <defunctzombie>it is basically the same as a comment except syntactically looks ok
03:51:08  <defunctzombie>right.. so the required issue at hand.. no streaming then?
03:51:09  <substack>it's not a comment because it runs in node code if you run it
03:51:09  <dominictarr>Raynos, wanting a consistent API isn't bikeshedding. the rest is already classic streams
03:51:27  <defunctzombie>or is it easier to just skip required altogether?
03:51:43  <substack>it might be best to just skip required
03:51:57  <substack>since I'm already having to flatten everything
03:52:11  <defunctzombie>I guess I still don't see the optimization win
03:52:14  <defunctzombie>since if you remove range
03:52:17  <defunctzombie>it goes really fast
03:52:32  <substack>incremental processing
03:52:39  <substack>is more important than raw throughput
03:52:45  <defunctzombie>I just don't see the gain
03:52:50  <Raynos>dominictarr: except im not returning a classic stream :D and streams2 dont have destroy
03:52:53  <defunctzombie>all my bundling happens at startup
03:52:54  <defunctzombie>instantly
03:53:00  <defunctzombie>and I never even think about it
03:53:09  <defunctzombie>my middleware just does it on the fly
03:53:24  <defunctzombie>and browser caching layers take care of the rest
03:54:09  <defunctzombie>I would be interested to see a working pipeline tho
03:54:18  <defunctzombie>maybe it exposes some other way to process it
03:54:25  <substack>this is more important for user plugins
03:54:27  <defunctzombie>but this type of thing is a one off for me :/
03:54:34  <substack>which may be io-intensive
03:54:42  <defunctzombie>k
04:08:22  <Raynos>rvagg, dominictarr: levelup emits events that are encoded keys and values instead of the raw deal. Should it emit the raw ones?
04:16:15  * \xDE\xAD\xC0\xDEjoined
04:30:15  <Raynos>dominictarr: https://github.com/Raynos/level-livefeed/blob/master/index.js#L22 let me know if you see any other bugs
04:48:02  * shykeschanged nick to zz_shykes
04:48:58  * zz_shykeschanged nick to shykes
04:54:09  * shykeschanged nick to zz_shykes
04:55:36  <rvagg>Raynos: probably should emit the original
04:55:47  <Raynos>rvagg: yeah made a pr for it
04:55:49  <rvagg>I think...
05:00:22  * jesusabd1llahchanged nick to jesusabdullah
05:48:04  <dominictarr>Raynos, half as many lines https://github.com/dominictarr/level-live-stream/blob/master/index.js
05:48:09  <dominictarr>(about)
05:54:33  <Raynos>dominictarr: most of that is because of your terser style. Also you moved the hooking module to a seperate module and you dont handle unpipe logic, etc.
05:56:34  <Raynos>dominictarr: nor do you emit put and del as seperate things
05:56:49  <Raynos>dominictarr: NIH++
06:29:49  <dominictarr>actually, the output should be exactly the same as yours.
06:29:58  <dominictarr>{type: put|del,...}
06:30:29  <Raynos>dominictarr: readStream() doesnt output type: "put"
06:30:49  <dominictarr>no, but livefeed does
06:31:04  <Raynos>but you pipe readStream() into livefeed
06:31:12  <Raynos>so the first batch from disk doesn't have any type
06:31:38  <dominictarr>okay, correct. if !data.type then it's old data
06:31:47  <Raynos>yes
06:32:15  <Raynos>I added type put to the old data
06:33:09  <dominictarr>that is nice in one way, because it means you can use this to replicate
06:33:44  <Raynos>i wasnt going to use it to replicate but thats an interesting idea
06:33:47  <dominictarr>LevelUp#writeStream accept {type: 'del', ?
06:33:56  <Raynos>yes
06:34:08  <Raynos>or should do
06:34:14  <dominictarr>it wouldn't be very useful for that unless you are only reading from the replica
06:34:26  <Raynos>no it doesnt
06:34:45  <Raynos>but it can be fixed so it does
06:34:58  <dominictarr>yes, I agree it should
06:35:17  <Raynos>dominictarr: what about https://github.com/rvagg/node-levelup/pull/36 ?
06:35:32  <dominictarr>I guess it should default to put though
06:35:43  <dominictarr>... maybe if the data is an array then it should do a batch
06:35:45  <dominictarr>?
06:36:01  <Raynos>dominictarr: it should default to put for backcompat and nice-ness
06:36:18  <Raynos>i dont know about array === batch
06:36:28  <Raynos>depends on whether you want to store array values with JSON encoding
06:36:48  <Raynos>for example scuttlebutt/model stores arrays
06:36:49  <dominictarr>no, it would be like {key: K, value: V}
06:37:00  <dominictarr>or [{key: K, value: V},...]
06:37:07  <Raynos>oh true
06:37:09  <Raynos>it would be key, value
06:37:12  <Raynos>so yeah sure array too
06:37:43  <chrisdickinson>dumb question: what would map reduce on the GPU look like? or what would be a good application for it?
06:37:52  <dominictarr>so when you use the json encoding, it stringifyies for you?
06:38:12  <Raynos>dominictarr yeah but it only stringifies keys and vallues and not the { k v } object
06:38:13  <dominictarr>I really don't know much about GPU stuff
06:38:36  <dominictarr>but it is "embarasingly parallel"
06:39:58  <chrisdickinson>my current line of thought is: skip the vertex stage entirely, and render data as chunks via fragment shaders
06:39:59  <dominictarr>chrisdickinson, you'd need a cpu heavy calc i think.
06:40:18  <dominictarr>to be worth it
06:40:33  <chrisdickinson>but, per pixel, you can only squeeze about gpu_texture_units * 4 bytes of data into it.
06:40:41  <dominictarr>also, we are assuming that you are storing the result back in the db.
06:42:39  <chrisdickinson>(other issue: you only get 4 bytes of output per input, disregarding depth buffer and friends)
07:07:13  * defunctzombiequit (Remote host closed the connection)
07:27:35  <rvagg>hey mbalho, there was a Max Ogden look-alike at jsconf.au btw, there seems to be one at every JS conference
07:27:41  * rvaggwill show you a pic when one shows up
07:33:09  <mbalho>whoa
07:33:30  <rvagg>mbalho: http://www.flickr.com/photos/aemeredith/8211051442/in/set-72157632080790340/ I'm not sure if it's the guy in the middle with the white shirt I'm thinking of, doesn't look like who I saw
07:34:46  <mbalho>brendan eich lookin classy
07:36:04  <rvagg>ya, unlike the rest of us slobs
07:37:40  * defunctzombiejoined
07:37:41  * defunctzombiequit (Changing host)
07:37:41  * defunctzombiejoined
07:39:22  <rvagg>mm, perhaps it was who I'm thinking of, here's one of my shots: https://twitter.com/i/#!/rvagg/media/slideshow?url=pic.twitter.com%2F9dAWV5Tj the guy in the chair at front of shot
07:41:52  <mbalho>close enough
07:43:48  <dominictarr>rvagg, mbalho there was a massive max like beard at cascadia too
07:46:20  * defunctzombiequit (Ping timeout: 265 seconds)
07:49:23  <Raynos>rvagg: merged that PR in. You'll have to git pull origin master && npm publish
07:49:28  <Raynos>already bumped version
07:50:21  <dominictarr>Raynos, don't bump the version
07:50:36  <Raynos>dominictarr: I thought I had publish right.
07:51:05  <dominictarr>https://github.com/rvagg/node-levelup/blob/master/CONTRIBUTING.md#releases
07:51:26  <dominictarr>a version constitutes a release?
07:52:22  <Raynos>Probably
07:52:35  <dominictarr>also Raynos ralphtheninja found this today http://www.youtube.com/watch?v=LXAW4HwFt58
07:52:36  <Raynos>read that after npm publish said 404 :D
07:52:56  <dominictarr>also his site randpeer.org
07:52:59  <Raynos>dominictarr: there is a webrtc conference in SF this week
07:53:09  <dominictarr>you think we should crash it?
07:53:11  <Raynos>seems to be full of telephony people though
07:53:29  <Raynos>dominictarr: by crash it do you mean hustle onto stage and talk about p2p streams
07:53:36  * ITprojoined
07:53:47  <dominictarr>well, maybe just sneak in with a lanyard
07:54:19  <Raynos>I see
07:54:28  <Raynos>I think im supposed to work
07:54:38  <dominictarr>I guess we could do a full blown pussy riot too
07:55:31  <fotoverite>FREE PUSSY RIOT!
07:55:46  <Raynos>i dont know what that is
07:56:09  <fotoverite>http://en.wikipedia.org/wiki/Pussy_Riot
07:56:25  <dominictarr>oh my god, have you been living under a rock?
07:56:26  <fotoverite>I take it you don't have a TV Raynos
07:56:44  <Raynos>?
07:56:48  <dominictarr>you arn't following the right people on twitter
07:56:49  <Raynos>has this happened recently?
07:56:53  <fotoverite>If one does not read liberal papers and doesn't watch tv that's quite possible.
07:56:55  <dominictarr>few months ago
07:56:56  <fotoverite>Yes
07:57:07  <dominictarr>I heard about it on twitter
07:57:30  <Raynos>they got arrested for what?
07:57:34  <dominictarr>so awesome.
07:57:41  <dominictarr>for being totally punk rock
07:57:46  <dominictarr>in a church
07:57:55  <dominictarr>oh, and protesting putin
07:58:07  <Raynos>:D
07:58:14  * ITproquit (Ping timeout: 255 seconds)
07:58:22  <dominictarr>they where doing a punk prayer, asking st mary to save russia from putin.
07:59:49  <dominictarr>after you catch up on current events, Raynos
08:00:03  <dominictarr>you totally need to watch that video I linked
08:00:24  <Raynos>oh yes
08:00:30  <dominictarr>this guy has already spent years studying the 'serverless' peer to peer and network topologies
08:13:16  <Raynos>ok so you have to write a startlist
08:13:27  <Raynos>that should be an npm module
08:38:12  <rvagg>Raynos, dominictarr that's published
08:39:52  <Raynos>thanks
08:40:50  <rvagg>did you know... if you have 'npm shrinkwrap' as part of a "script" in package.json, npm throws a fit...
08:44:23  <rvagg>arr.. it's a problem with `npm ls`, put that in a "script" and it crys
08:47:13  <rvagg>mmm.. npm config sets "depth" to 0 for run-script subcommands but Infinity otherwise
08:54:27  <Raynos>https://github.com/Raynos/topology
09:01:22  <Raynos>OH!
09:01:28  <Raynos>He says nodes can agree on the network time
09:30:48  <Raynos>dominictarr: nice video!
09:53:31  <Raynos>I found a use case for monads @[email protected]
09:53:48  <Raynos>when this happens you know you are doing too much functional programming
09:53:53  <Raynos>or its bed time
10:10:03  <substack>Raynos, dominictarr: https://torrentfreak.com/anonymous-file-sharing-ruled-illegal-by-german-court-121123/
10:10:16  <Raynos>RAGEFACE
10:10:19  <substack>exit nodes seem like a point of failure
10:12:11  * jibayjoined
10:12:39  <substack>also germany has really bad laws about these things
10:13:02  <substack>files should probably go through multiple points so there's no single user responsible
10:15:56  * \xDE\xAD\xC0\xDEquit (Remote host closed the connection)
10:57:01  * yorickjoined
10:57:02  * yorickquit (Changing host)
10:57:02  * yorickjoined
11:00:37  * dominictarrquit (Ping timeout: 265 seconds)
11:08:05  <substack>http://www.youtube.com/watch?v=dFZecokdHLo
11:36:48  * ralphtheninjajoined
13:47:29  * ITprojoined
14:35:13  * CoverSlidejoined
14:59:22  * alessioalexjoined
15:06:04  * alessioalexpart
15:24:11  * rannmannquit (Ping timeout: 260 seconds)
16:02:09  * defunctzombiejoined
16:02:09  * defunctzombiequit (Changing host)
16:02:10  * defunctzombiejoined
16:04:19  * nk109joined
16:04:23  * nk109quit (Client Quit)
16:13:55  * rannmannjoined
16:13:55  * rannmannquit (Changing host)
16:13:55  * rannmannjoined
16:32:03  * shuaibjoined
16:40:05  * zz_shykeschanged nick to shykes
17:02:54  * shykeschanged nick to zz_shykes
17:47:19  <juliangruber>mbalho: streamline should work with levelup or node-leveldb too!
18:11:08  * shuaibquit (Ping timeout: 255 seconds)
18:14:06  * shuaibjoined
18:34:57  * shuaibquit (Ping timeout: 276 seconds)
18:37:09  * shuaibjoined
19:13:18  * AvianFlujoined
19:31:29  <AvianFlu>OH YEAH, I KNEW THAT ALREDAY
19:54:55  * AvianFluquit (Remote host closed the connection)
20:17:12  <juliangruber>just returning home from push.inspiration
20:17:59  <juliangruber>some super interesting talks about generated art and hacking the system
20:18:23  <juliangruber>the guy that did newstweek spoke
21:39:43  * st_lukejoined
21:45:17  * ralphtheninjaquit (Read error: Operation timed out)
22:19:31  * Madarsquit (Quit: reboot)
22:24:01  * ralphtheninjajoined
22:28:05  * Madarsjoined
23:06:46  <chrisdickinson>is there a module to take multiple paths and turn them into a single stream that emits their contents?
23:07:50  <chrisdickinson>(ideally with a sideband event to signify changing from one path to another?)
23:48:32  * AvianFlujoined
23:59:30  * st_lukequit (Remote host closed the connection)