00:10:30  * no9quit (Quit: Leaving)
00:12:29  * jcrugzzjoined
00:13:31  * substackjoined
00:13:48  <substack>here we go
00:14:05  <substack>time to lurk, absorbing leveldb wisdom
00:14:42  * thl0joined
00:15:14  <substack>leveldb seems like a really important tool for killing framework-thinking
00:17:14  * jcrugzzquit (Ping timeout: 252 seconds)
00:45:29  * ChrisPartridgejoined
01:19:49  * Pwnnaquit (Remote host closed the connection)
01:21:01  <thl0>juliangruber: hey - I see you worked on sublevel
01:21:25  <thl0>wondering I could break API relating to sep
01:21:44  <thl0>ideally that would be an opts thing, so I can set valueEncoding as well
01:22:11  <thl0>otherwise I gotta do the if(typeof x == 'string') ... dance
01:24:21  * Pwnnajoined
01:30:18  * thl0started doint the typeof == string dance
01:36:09  * chirinojoined
02:08:09  <levelbot>[npm] jsonquery@0.0.2 <http://npm.im/jsonquery>: MongoDB query language implemented as a node.js Stream (@nharbour)
02:10:39  <rvagg>ya, sublevel needs way more tests to make sure it's api-compatible with levelup
02:10:47  <rvagg>encodings is the biggest pain point for me too
02:13:34  * jcrugzzjoined
02:15:29  * ralphtheninjaquit (Ping timeout: 252 seconds)
02:22:36  * brianloveswordsquit (Excess Flood)
02:24:48  * brianloveswordsjoined
02:52:09  <thl0>rvagg: currently working on a PR to make mixed encodings (one per sub) work
02:52:42  <thl0>I wanna break the API though since right now it passes sep (a string), but needs to be an options object
02:53:20  <thl0>rvagg: do you think domenictarr would object (no pun intended)
02:53:21  <thl0>?
02:53:51  <rvagg>I think dominic likes to break things, so if you have a good reason to break it then go ahead
02:54:09  <thl0>I do
02:54:35  <rvagg>you can do a: if (typeof options == 'string') { options = { sep: options } }
02:54:40  <thl0>otherwise I have to do this stupid typeof string dance, but you wanna use opts anyways when you pass multiple things
02:54:45  <rvagg>heh!
02:54:49  <thl0>yeah, but that's so ugly
02:54:55  * rvaggshrugs
02:55:00  <rvagg>as long as you have good tests for it
02:55:26  <thl0>also not needed, cuz why would you just pass sep separately if you have an opts thing?
02:55:38  <rvagg>backward compatibility
02:55:40  <thl0>I'll adapt the tests to that api
02:55:45  <rvagg>but, I doubt anyone's using that directly anyway
02:55:56  <thl0>well, the sep param is nowher documented
02:56:27  <thl0>and then there is this: https://github.com/dominictarr/level-sublevel#stability
02:57:04  <thl0>rather break it now to get clean api going forward - also I tried to do the dance for a bit, but it propagates to too many places
02:57:23  <thl0>in sub.js and index.js - not nice, so I aborted that
03:02:37  * timoxleyquit (Quit: Computer has gone to sleep.)
03:08:02  * thl0quit (Remote host closed the connection)
03:33:49  * timoxleyjoined
04:46:41  * Pwnnaquit (Ping timeout: 240 seconds)
04:53:46  * eugenewarejoined
04:58:52  * chirinoquit (Quit: Computer has gone to sleep.)
05:00:32  * Pwnnajoined
05:07:35  * ultimatebusterjoined
05:21:28  * Pwnnaquit (Disconnected by services)
05:21:30  * ultimatebusterchanged nick to Pwnna
05:21:46  * Punnajoined
05:21:56  * Punnaquit (Read error: Connection reset by peer)
05:44:10  * levelbotquit (Remote host closed the connection)
05:44:25  * levelbotjoined
06:10:36  * chapelquit (Ping timeout: 260 seconds)
06:12:13  * chapeljoined
06:16:04  * num9quit (Remote host closed the connection)
06:49:19  * jcrugzzquit (Ping timeout: 260 seconds)
06:53:01  * timoxleyquit (Quit: Computer has gone to sleep.)
07:16:57  * jcrugzzjoined
07:20:01  * eugenewarequit (Ping timeout: 256 seconds)
07:24:42  * jcrugzzquit (Ping timeout: 264 seconds)
07:30:32  * dominictarrjoined
07:40:34  * Pwnnaquit (Ping timeout: 276 seconds)
07:42:19  * timoxleyjoined
08:18:57  * ChrisPartridgequit (Ping timeout: 256 seconds)
08:56:50  * timoxleyquit (Quit: Computer has gone to sleep.)
09:03:57  * timoxleyjoined
09:14:27  * ralphtheninjajoined
09:29:54  * dominictarrquit (Quit: dominictarr)
09:35:41  * eugenewarejoined
10:23:04  * timoxleyquit (Quit: Computer has gone to sleep.)
10:37:17  * timoxleyjoined
10:45:45  * jcrugzzjoined
10:50:17  * jcrugzzquit (Ping timeout: 252 seconds)
11:23:30  * dominictarrjoined
11:25:36  * niftylettucequit (Ping timeout: 260 seconds)
11:26:34  * thl0joined
11:31:37  * owen1quit (Ping timeout: 256 seconds)
11:32:36  <thl0>dominictarr: in order to make that valueEncoding PR on levelup is it ok to break API?
11:32:48  <thl0>i.e. the sep is a string, but I'd need opts
11:33:17  <thl0>otherwise if backward compat is important I can do the if (typeof opts == string) thing
11:33:26  <dominictarr>break it.
11:33:39  <thl0>cool, less ugly code then :)
11:33:46  <dominictarr>totally
11:34:10  <dominictarr>maybe throw a helpful error, though, so it's easier to fix old code
11:34:11  <rvagg>see, he's a breaker
11:34:26  <thl0>rvagg: :)
11:34:39  <dominictarr>when a project is young, you should break stuff while you still can
11:35:05  <dominictarr>otherwise you'll have loads of weird artifacts when it's mature
11:35:14  <thl0>that's how I feel too, just wanted to get your blessing
11:35:33  <thl0>told rvagg last night: rather break it now to get clean api going forward
11:37:58  * eugenewarequit (Read error: Connection reset by peer)
11:38:35  * eugenewarejoined
11:44:04  * thl0quit (Remote host closed the connection)
11:52:12  * chapelquit (Ping timeout: 260 seconds)
11:54:13  * chapeljoined
12:11:09  <dominictarr>mbalho: you there?
12:11:13  * no9joined
12:15:40  * owen1joined
12:15:48  * chirinojoined
12:18:54  * chirino_mjoined
12:21:02  * chirinoquit (Ping timeout: 252 seconds)
13:10:51  * timoxleyquit (Quit: Computer has gone to sleep.)
13:22:24  * niftylettucejoined
13:27:16  * werlejoined
13:36:52  * thl0joined
13:37:34  <thl0>dominictarr: should readStream auto parse JSON to objects before emitting 'data' when valueEncoding is 'json'?
13:38:00  <thl0>or just emit the value as a string? - I know .get auto parses
13:39:33  <thl0>dominictarr: wondering cause I'm passing { valueEncoding: 'json' } to r.createReadStream
13:39:58  * dominictarrquit (Ping timeout: 256 seconds)
13:40:07  <thl0>dominictarr: but honestly - these streams in sublevel seem a bit broken to me, i.e. a value stream doesn't just return value, etc. - will look into that as well
13:40:26  * dominictarrjoined
13:52:42  * werlequit (Quit: Leaving.)
13:56:27  * ralphtheninjaquit (Read error: Operation timed out)
14:14:55  * no9quit (Ping timeout: 264 seconds)
14:15:40  * dominictarrquit (Ping timeout: 256 seconds)
14:16:32  * dominictarrjoined
14:21:02  <mbalho>dominictarr: yo
14:21:11  <dominictarr>hey, whats up
14:21:26  <dominictarr>planning on getting the tacodb stuff up today
14:21:30  <mbalho>w00t
14:22:03  <mbalho>dominictarr: i dont remember, is there a way to sync from browser to node yet?
14:22:17  <dominictarr>not yet, but that will be next
14:22:35  <dominictarr>oh, yeah, does levelup work in the browser yet?
14:22:46  <dominictarr>from looking at your tests, seems like it needs a bit more?
14:22:49  <mbalho>dominictarr: halfway, the test suite is currently only running in node
14:23:43  <dominictarr>aha, right - I was looking into testing my level-* stuff in the browser too, but it needed some work...
14:23:48  <mbalho>dominictarr: the only thing level.js needs is a chained batch implementation
14:24:03  <dominictarr>so, it works, but there are no tests?
14:24:12  <mbalho>dominictarr: i have only tested a few methods
14:25:29  <mbalho>dominictarr: it would be great to make the levelup tests generic, the basic approach i took with leveldown was to export all test functions and have them take in the `test` function, so in browser it gets tape and in node it gets tap
14:25:49  <dominictarr>I started on a module for it, level-test
14:26:45  * no9joined
14:28:15  <dominictarr>google street view needs wsad + mlook
14:28:30  <dominictarr>mbalho: streetview -> voxel.js!
14:29:47  <dominictarr>surely you can scrap all that out somehow...
14:29:52  <mbalho>oh yea i had that idea
14:29:59  <mbalho>side by side though
14:30:08  <mbalho>the app would be: a 3d open street ma
14:30:09  <mbalho>p
14:30:14  <dominictarr>gotta go, bbaib
14:30:24  * dominictarrquit (Quit: dominictarr)
14:30:26  <mbalho>where you log on and go to your neighborhood in streetview and then start modelling the buildings in voxel.js
14:56:04  * werlejoined
15:01:23  <thl0>rvagg: how is key encoding 'json' treated?
15:01:27  <thl0>in levelup
15:01:43  <thl0>i.e. what would my keys look like ({ key: 'the key'}) ?
15:20:31  * no9quit (Ping timeout: 246 seconds)
15:30:59  * dominictarrjoined
15:33:42  * no9joined
15:56:24  <levelbot>[npm] level-js@1.0.4 <http://npm.im/level-js>: leveldown/leveldb library for browsers using IndexedDB (@maxogden)
15:57:15  <brycebaril>that was fast :)
15:57:31  <mbalho>brycebaril: caught me at a good time
15:57:53  <mbalho>brycebaril: i still need to implement the chained batch api in level.js though
15:58:13  <mbalho>brycebaril: and also convert the levelup tests to work in a browser in the same way that the abstract-leveldown tests run in node + browser
15:58:20  <mbalho>brycebaril: if any of that stuff sounds fun then have a go!
15:58:43  <brycebaril>Yeah, I'm not using it, so that particular hole hasn't hit me. If I end up missing it I'll take a poke
15:58:45  <brycebaril>:)
15:59:19  <brycebaril>(the chained batch api that is)
16:11:33  <thl0>dominictarr: hey looks like we are working on same thing
16:12:12  <thl0>dominictarr: I just fixed key/value in sublevel and also a bunch of other props that weren't propagating to levelup
16:12:39  <dominictarr>key value streams?
16:12:55  <thl0>i.e. readKeys, readValues
16:12:57  <dominictarr>oh, yeah…. that has been fixed 3 times now...
16:13:01  <thl0>shoot
16:13:08  <dominictarr>in paralelle :( :( :(
16:13:14  <thl0>I just fixed it along with my valueEncoding fix
16:13:24  <thl0>cause that had to passed down as well
16:13:35  <thl0>so this will totally conflict
16:14:13  <thl0>dominictarr: looked through the fix, but it is kinda short sighted since it only worries about values/keys to be true or false
16:14:41  <thl0>mine takes care of all other props (including encoding as well)
16:15:17  <thl0>so to merge this on top of these fixes after 0.4.5 makes no sense
16:15:56  <dominictarr>are you looking at the current code in master?
16:16:04  <thl0>dominictarr: do you want me to just PR based on 0..4.5?
16:16:04  <thl0>yep
16:16:18  <thl0>sorry 4.6.5
16:18:11  * jcrugzzjoined
16:18:23  <thl0>dominictarr: https://github.com/thlorenz/level-sublevel/commit/09cf2dbb520201f0339855ca4d6ad24186fac63f
16:18:38  <thl0>this is based on 4.6.5 though
16:19:02  <dominictarr>can you merge it with the latest?
16:19:26  <thl0>makes no sense, since key/value fixes have to be based on that to make sense
16:19:28  <thl0>i.e. https://github.com/thlorenz/level-sublevel/commit/85708ad77488b6c606249c158f27242ff6dded0d
16:19:59  <thl0>by merging, I'd probably undo a lot of the original key/value fixes
16:20:48  <thl0>dominictarr: see in the last commit how easy it was to fix key/value after proper options propagation was in place
16:21:16  * jcrugzzquit (Client Quit)
16:21:42  <thl0>dominictarr: and then fixing other missing options is trivial https://github.com/thlorenz/level-sublevel/commit/59b0c6611405f1121830f4933342ae48cf9ec5a2
16:22:44  <thl0>so not sure how best to do this since the approaches are totally conflicting, i.e. current key/value fixes get in the way to do this properly in order to allow encoding to be fixed as well
16:22:54  <dominictarr>why not just copy all the options? then you won't have to change that code if options are added
16:23:14  <thl0>dominictarr: I tried to just xtend them, but that caused some tests to fail
16:23:35  <thl0>I'm not sure why, seems like some of these options caused problems
16:23:54  <thl0>that's why I merge selectively, but you can try to just xtend there and see
16:24:32  <thl0>but we could figure out what causes problems and use a blacklist instead of a whitelist
16:24:33  <dominictarr>it's probably because of start, end, and min max
16:24:51  <dominictarr>that is all gonna change when we go to lt gt lte gte
16:25:05  <dominictarr>okay, I'll just take your pr for now
16:25:08  <thl0>ok, so we'll put some of these on the black list or leave it for now if it's gonna change
16:25:41  <thl0>so I base it on 4.6.5 or how do we do this (you want me to just PR knowing it's gonna conflict)?
16:26:06  <dominictarr>just leave it for now
16:26:29  <dominictarr>just merge with the current master, and make sure the test pass
16:26:35  <dominictarr>I don't care about rebase
16:27:02  <thl0>dominictarr: ok, but I'll end up undoing a bunch of code that's conflicting, (i.e. fixes that are no longer needed)
16:27:23  <thl0>also it will end up with tests that test the same thing
16:32:38  <dominictarr>lots of tests are okay!
16:32:57  <dominictarr>the rest is just the price of working in parallel
16:49:49  <levelbot>[npm] level-static@1.0.7 <http://npm.im/level-static>: use leveldb as a static file server (@dominictarr)
16:54:53  <thl0>dominictarr: I merged on top of master, all tests pass: https://github.com/dominictarr/level-sublevel/pull/13
16:55:28  <thl0>you should prob. squash, I just wanted to leave the history for easier review
16:55:59  * no9quit (Ping timeout: 260 seconds)
16:57:34  <thl0>dominictarr: only thing left to do is figure make writeStream work with mixed encodings and allow mixed keyEncodings
16:58:12  <thl0>I didn't get to that yet, but main thing we needed was diff. valueEncodings that work on batch and such
17:21:20  * no9joined
17:42:30  * thl0quit (Remote host closed the connection)
17:55:20  <levelbot>[npm] level-live-stream@1.4.2 <http://npm.im/level-live-stream>: Stream live changes from levelup. (@dominictarr)
18:08:20  <levelbot>[npm] level-live-stream@1.4.3 <http://npm.im/level-live-stream>: Stream live changes from levelup. (@dominictarr)
18:17:26  * thl0joined
18:18:51  * Pwnnajoined
18:20:24  * thl0quit (Remote host closed the connection)
18:27:22  * chirino_mquit (Quit: Computer has gone to sleep.)
18:53:11  * chirinojoined
19:17:53  * thl0joined
19:25:49  <mbalho>i think i corrupted indexeddb in my app....
19:25:55  <mbalho>i get "Internal error creating database backend for indexeddb.open."
19:25:58  <mbalho>AWESOME
19:26:39  <mbalho>works in incognito tab, throws that error in normal tab
19:26:44  <mbalho>wtf@chrome.browser
19:30:12  <thl0>dominictarr: is that PR ok?
19:30:30  <dominictarr>yes, I'll merge it after I get something to eat
19:31:08  <dominictarr>but can you do it again?
19:31:13  <dominictarr>mbalho:
19:31:25  <thl0>dominictarr: cool, just wanted to make sure you are ok with it
19:32:12  <thl0>dominictarr: you mean do the PR again? it's still pending not sure what you mean
19:32:21  <dominictarr>no, I was talking tomax
19:32:21  <mbalho>dominictarr: hi
19:32:36  <thl0>dominictarr: got it :) cool then
19:32:36  <dominictarr>I was just congratulating you for breaking chrome
19:32:54  <mbalho>yea i should win some sort of award from google
19:33:06  <dominictarr>free pair of google glasses
19:33:40  <mbalho>free foot massage from malte
19:33:49  * mbalhodaydreams
19:36:36  * thl0quit (Remote host closed the connection)
19:54:32  * niftylettucequit (Ping timeout: 256 seconds)
20:01:20  * niftylettucejoined
20:04:53  * no9quit (Ping timeout: 248 seconds)
20:07:36  * no9joined
20:11:15  * chirinoquit (Quit: Computer has gone to sleep.)
20:13:49  <levelbot>[npm] level-js@1.0.5 <http://npm.im/level-js>: leveldown/leveldb library for browsers using IndexedDB (@maxogden)
20:18:20  <levelbot>[npm] level-js@1.0.5 <http://npm.im/level-js>: leveldown/leveldb library for browsers using IndexedDB (@maxogden)
20:18:46  * dominictarrquit (Quit: dominictarr)
20:25:57  * chirinojoined
20:38:37  * thl0joined
21:17:36  <mbalho>damn indexeddb is pretty brittle
21:18:26  <mbalho>i get weird errors if i open the same database multiple times
21:18:41  <mbalho>which may be a result of leveldbs single threadedness but i would imagine indexeddb reuses the connection
21:18:45  <mbalho>but its apparently buggy
21:38:04  * dominictarrjoined
21:43:40  <dominictarr>thl0: have you ever used the sep option in sublevel?
21:43:52  <dominictarr>db.sublevel(name, sep) ?
21:44:03  <thl0>dominictarr: no, but I'm only using it for about a week
21:44:25  <thl0>so not the right person to ask ;), but it wasn't documented, so I doubt people were overriding it much
21:44:27  <dominictarr>also: juliangruber hij1nx chapel
21:44:51  <dominictarr>just deciding whether to publish a new major version
21:44:57  <thl0>dominictarr: otherwise we could put either a warning console.error or we check for typeof string
21:45:03  <dominictarr>I think I only used it in a few tests
21:45:07  <thl0>and adjust it
21:45:17  <thl0>I changed all of them - weren't too many
21:45:34  <dominictarr>make it throw, with an error that tells them to post an issue and tell me that they actually where using it
21:45:58  <dominictarr>or, http post...
21:46:43  <dominictarr>I grepped all my code, and I never actually used it outside of the sublevel tests.
21:46:59  <thl0>you want me to attach that to the current PR or make another one?
21:47:17  <thl0>I mean it's fairly easy like a one liner in like two or three places
21:47:20  <dominictarr>I'll just put in a check and then remove it in the next version
21:47:36  <thl0>cool, so you are good - nothing you need from me?
21:49:56  <dominictarr>levelbot,
21:49:56  <thl0>dominictarr: btw are keys in level (utf8) case sensitive?
21:50:03  <dominictarr>yes
21:50:20  <levelbot>[npm] level-sublevel@4.6.9 <http://npm.im/level-sublevel>: Separate sections of levelup, with hooks! (@dominictarr)
21:50:21  <dominictarr>it's just a bytewise comparison
21:50:43  <thl0>ok, weird, my .pre only gets called once with some value in the middle (happens to be 'Admin' where there is also 'admin')
21:52:23  <thl0>when I use another dataset that doesn't have this kind of duplicate it works as expected -- odd
21:53:25  <thl0>dominictarr: thanks for landing this I truly needed it \0/
21:54:47  <dominictarr>that is a very strange error, can you reproduce it?
21:55:41  <thl0>hard to do, but btw just stored about 8000 npm users in under 7 secs including indexing
21:56:32  <dominictarr>but if it's just admin Admin then you can make a tiny test case.
21:56:51  <dominictarr>thl0: rvagg check this out…
21:56:52  <dominictarr>https://travis-ci.org/dominictarr/level-sublevel/jobs/7647128
21:57:42  <dominictarr>looks like a non deterministic fail
21:58:00  <thl0>dominictarr: this looks like it's the problem: '/tmp/test-streams-sublevel-key-value/000001.dbtmp'
21:58:08  <thl0> No such file or directory
21:58:21  <dominictarr>I have never seen that before
21:59:02  <dominictarr>never mind, it just broke locally
21:59:36  <thl0>dominictarr: weird, why is it not breaking in 0.8?
21:59:49  <thl0>could it be related to streams?
22:00:15  <dominictarr>sometimes it breaks, sometimes it works
22:02:01  <thl0>looks like the db file is being removed prematurely at times
22:03:16  <thl0>dominictarr: could it be that these lines are reversed? https://github.com/dominictarr/level-sublevel/blob/master/test/streams-sublevel-key-value.js#L1-L2
22:03:34  <thl0>i.e. rimraf is sometimes slower than the db creation?
22:03:50  <thl0>i.e. it gets created and then removed right away if rimraf is too slow?
22:04:01  <dominictarr>yes, that should be the other way around
22:04:17  <thl0>sorrry my mistake
22:04:21  <dominictarr>actually, I'm switching everthing to use level-test
22:04:29  <thl0>cool
22:04:47  <dominictarr>which will make it easy to make the tests run in the browser, when that is ready
22:04:55  <thl0>so you want no patch for this?
22:14:16  <dominictarr>oh, I've just fixed it
22:14:30  <thl0>cool, thanks
22:15:20  <levelbot>[npm] level-sublevel@4.6.10 <http://npm.im/level-sublevel>: Separate sections of levelup, with hooks! (@dominictarr)
22:15:58  <thl0>dominictarr: btw - this is annoying: https://github.com/dominictarr/level-sublevel/blob/master/sub.js#L143
22:16:16  <thl0>whoever put that there prob. meant to remove it
22:17:22  <dominictarr>oops.
22:17:31  <dominictarr>I do that too sometimes...
22:17:37  * no9quit (Ping timeout: 248 seconds)
22:17:41  <thl0>seeing it now (which kinda proves that keyStream works - good thing overall)
22:17:50  <levelbot>[npm] level-sublevel@4.6.11 <http://npm.im/level-sublevel>: Separate sections of levelup, with hooks! (@dominictarr)
22:19:59  <thl0>dominictarr: so playing with this some more it looks like it doesn't index any uppercase keys
22:20:21  <thl0>I may be wrong though - gotta go for a bit, but I'll try to come up with a test case
22:21:26  <dominictarr>is this just using sublevel, or other modules?
22:23:48  <thl0>just using sublevel.pre to index (and level ofcours)
22:25:47  <thl0>so I just listed all npm users with an upper case letter in the name
22:26:05  <dominictarr>if you inspect the db do you see caps?
22:26:06  <thl0>and none with the first letter being uppercase get listed
22:26:34  <dominictarr>it's probably a broken regexp somewhere
22:26:35  <thl0>actually my bad
22:26:47  <thl0>start: a, end: z
22:27:04  <thl0>see the problem (I gotta learn my ASCII alphabet)
22:31:23  * no9joined
22:31:35  <thl0>so dominictarr all good for now I can also no longer repro this with the other dataset
22:35:14  * thl0quit (Remote host closed the connection)
22:36:42  * ChrisPartridgejoined
22:53:01  * dominictarrquit (Quit: dominictarr)
23:33:41  * timoxleyjoined
23:34:27  * timoxleyquit (Client Quit)