00:00:01  * ircretaryquit (Remote host closed the connection)
00:00:08  * ircretaryjoined
00:01:07  <dominictarr>it's a Log Structured Merge Tree
00:01:50  <mikeal>that's not an answer :)
00:02:05  <mikeal>when you select a range you get them back ordered
00:02:21  <mikeal>the key ordering algorithm isn't provided by the user, so leveldb must have one
00:02:44  <dominictarr>the default is lexiographic order
00:02:59  <dominictarr>so, the keys are sorted by their bytes… like strings
00:03:23  <mikeal>ok, that sucks for unicode then
00:03:32  <dominictarr>mikeal: sorry, I thought you ment something different there
00:03:53  <dominictarr>mikeal: you can plugin a custom comparator, but it's gotta be written in C
00:04:48  <mikeal>cool, that's good
00:05:15  <mikeal>postgres didn't take off in China until they wrote a custom indexing engine that sorted chinese properly
00:05:32  <dominictarr>hmm, interesting.
00:05:41  <mikeal>even the standard unicode sort algorithm sucks for chinese
00:06:24  <mikeal>couchdb has a pretty cool way of sorting JSON keys
00:07:15  <dominictarr>ah deanlandbolt wrote a module for that! https://github.com/deanlandolt/bytewise
00:09:12  <mikeal>if only it was in C we could use it in leveldb :)
00:09:59  <dominictarr>well, if you transform the keys before you save it will work
00:10:23  <dominictarr>so, for indexes, rvagg wrote this https://github.com/rvagg/node-level-mapped-index
00:10:59  <rvagg>mikeal: and the modules page is really taking off, https://github.com/rvagg/node-levelup/wiki/Modules
00:11:03  <mikeal>oh shit
00:11:32  <rvagg>and btw, we are pretty much in a position to allow swappable comparators in leveldb itself if people have a need for sorting in other ways, if they are C anyway
00:11:54  <dominictarr>but these are computed asyncly, so you cant necessarily db.put(key, value, function () { db.getBy(indexedKey, function () {…}}) and know it will work
00:12:27  <mikeal>good to know
00:12:52  <dominictarr>but if you did need to do that, you could use prehooks (or batches)
00:13:23  <dominictarr>I can talk you through how to implement that, if/when you need that.
00:13:27  <rvagg>mikeal: default comparator is here: https://github.com/rvagg/node-leveldown/blob/master/deps/leveldb/leveldb-1.9.0/util/comparator.cc
00:13:37  <rvagg>BytewiseComparatorImpl
00:13:40  <mikeal>i think i have enough to write what i want actually
00:13:47  <mikeal>with bytewise and levelup
00:14:18  <dominictarr>sweet!
00:14:41  <mikeal>it's a database that you can't delete or edit
00:14:43  <mikeal>:)
00:14:53  <mikeal>you can only write and create indexes, and query of course
00:15:28  <mikeal>but you can do stuff like db.on('change', function (doc) { }) and write to other indexes
00:16:01  <mikeal>i can create the indexing api with just new leveldbs and bitwise
00:16:06  <mikeal>er bytwise
00:17:02  * stlsaintquit (Quit: leaving)
00:19:32  <mikeal>one last question
00:19:42  <mikeal>is there any limitation in creating many ondisc leveldbs?
00:19:59  * mikolalysenkoquit (Ping timeout: 245 seconds)
00:20:03  * stlsaintjoined
00:20:03  <mbalho>its faster if you use 1 leveldb with prefixed keys
00:20:12  <mikeal>why would that be?
00:20:32  <mbalho>something about the way it optimizes the ondisk format is advantageous for bigger datasets... rvagg knows the details
00:20:36  <rvagg>yeah, try and use one, namespaced
00:20:41  <rvagg>and you can cache the hell out of it
00:20:55  <mikeal>k
00:21:01  <rvagg>default cache is only 8MB but there is no limitation on that, embiggen!
00:22:12  <mikeal>looks like sublevel doesn't have the entire levelup api yet
00:23:03  <rvagg>should be pretty close I think
00:26:52  <mikeal>i need the range query thing
00:28:16  <dominictarr>that is done via createReadStream({start:, end:})
00:28:47  <dominictarr>or {min:, max:} which works in sublevel (and is a feature underdiscussion for levelup)
00:30:16  <mikeal>if i'm using bytewise what keyEncoding do i use?
00:30:22  <mikeal>cause it returns buffers
00:30:43  <dominictarr>binary, i think
00:30:56  <mikeal>i would image "binary" but i'm always weary of "binary" encoding in node because it usually means "binary encoded string"
00:31:48  <rvagg>wait, perhaps the default leveldb encoding is good enough cause it's bytewise anyway
00:32:13  <rvagg>leveldb is about arbitrary character arrays, not necessarily utf/ascii strings, so it handles bytewise ordering of any array
00:32:34  <rvagg>mikeal: you should try the default ordering and see if it suits your needs before you complicate with another package
00:33:02  <mikeal>no no, i want that array ordering stuff
00:33:15  <mikeal>that's very specifically what i want :)
00:33:31  <mikeal>so, buffers as keys
00:33:34  <mikeal>what encoding?
00:33:43  <rvagg>binary and it won't touch your buffers
00:33:47  <mikeal>cool
00:33:52  <rvagg>it'll pass them straight down as they are
00:35:09  <rvagg>I suspect non-utf8 keys might break sublevel though
00:35:57  <mikeal>slicing up the data is really easy and clean if i have bytewise
00:35:57  <rvagg>dominictarr: this goes back to the issue I was commenting on last night (your morning) about hooks+sublevel vs externr plugins
00:36:10  <mikeal>['db', dbname, key]
00:36:13  * mikolalysenkojoined
00:36:20  <rvagg>dominictarr: need to have more access to the encoding & other decisions that levelup makes internally
00:36:49  <dominictarr>agree
00:37:44  <dominictarr>we had a big discussion about injectable encodings months ago, but we got hung up on whether it should be a string or a buffer
00:38:16  <dominictarr>we need to resume that discussion, because levelup has progressed a lot since then
00:41:44  <dominictarr>this issue https://github.com/rvagg/node-levelup/issues/51
00:43:25  <rvagg>yeah
00:45:47  * AvianFluquit (Remote host closed the connection)
01:04:33  <dominictarr>opening an issue to discuss this https://github.com/rvagg/node-levelup/issues/123
01:05:13  * mikealquit (Quit: Leaving.)
01:08:16  * thl0joined
01:09:24  <dominictarr>night all
01:09:28  * dominictarrquit (Quit: dominictarr)
01:11:47  <rvagg>night
01:19:10  * jxsonquit (Ping timeout: 245 seconds)
01:20:27  * no9quit (Ping timeout: 260 seconds)
01:23:19  * fallsemoquit (Quit: Leaving.)
01:23:59  * stlsaintquit (Quit: Lost terminal)
01:27:18  * mikolalysenkoquit (Ping timeout: 256 seconds)
01:40:57  * jcrugzzquit (Quit: Lost terminal)
02:19:33  * mikolalysenkojoined
02:28:27  * jcrugzzjoined
02:30:59  * fallsemojoined
02:39:42  * timoxleyjoined
02:45:19  <mikolalysenko>Dumb question: is there any way to get node's console.log to print out typed arrays without shitting itself?
02:45:45  <mikolalysenko>like I do NOT give a fuck how many BYTES_PER_ELEMENT are in my array when I do console.log
02:46:15  <mikolalysenko>just show me the elements in order, maybe put something like Float32Array() or whatever around it if you have to
02:46:50  * ins0mniaquit (Ping timeout: 255 seconds)
02:47:04  * jcrugzzquit (Ping timeout: 245 seconds)
02:49:12  * fallsemoquit (Quit: Leaving.)
02:55:54  * jcrugzzjoined
03:02:06  * fallsemojoined
03:03:55  <mbalho>mikolalysenko: i havent seen anything, it is super slow for big typed arrays too, i think someone needs to spend some time working on that
03:04:04  <mbalho>mikolalysenko: would be worth going into #libuv for
03:08:12  <mikolalysenko>maybe, I was just slightly frustrated
03:08:18  <mikolalysenko>but anyway, I did finish this! https://github.com/mikolalysenko/static-range-query
03:08:25  <mikolalysenko>I'm going to try comparing it to cross filter next
03:08:49  <mikolalysenko>and debugging it with the weird typed array formatting makes many things unnecessarily painful
03:09:09  <mikolalysenko>mbalho: ^
03:15:12  * nicholasfquit (*.net *.split)
03:15:12  * pikpikquit (*.net *.split)
03:15:12  * Domenic_quit (*.net *.split)
03:15:12  * mbalhoquit (*.net *.split)
03:15:12  * rook2pawnquit (*.net *.split)
03:15:12  * py1honquit (*.net *.split)
03:15:12  * Altreusquit (*.net *.split)
03:20:11  * nicholasfjoined
03:20:11  * pikpikjoined
03:20:11  * Domenic_joined
03:20:11  * mbalhojoined
03:20:11  * rook2pawnjoined
03:20:11  * py1honjoined
03:20:11  * Altreusjoined
03:20:22  * Benvie1quit (Remote host closed the connection)
03:20:37  * Benvie2joined
03:20:37  * Domenic__joined
03:22:16  * jcrugzzquit (Read error: Connection reset by peer)
03:23:15  * vitor-brquit (Quit: Saindo)
03:37:33  * mikealjoined
03:48:22  <mikeal>so
03:48:24  <mikeal>other than batch
03:48:32  <mikeal>are there any other transactions that leveldb offers/
03:53:01  <thl0>substack: not much luck with my testling setup: https://github.com/thlorenz/scriptie-talkie/blob/master/package.json#L50-L51
03:53:27  <thl0>the preprocess points to the bundle script and the html to the file that would load the resulting bundle
03:53:54  <thl0>however another file seems to get generated (bundled) somehow and loaded into another html skeleton
03:58:15  <rvagg>mikeal: no, unfortunately, batch and snapshots are all you get that are transaction-ish
03:58:34  <rvagg>and snapshots aren't quite fully exposed to Node yet, hasn't been quite enough demand for me to put in the time, but it's nearly there
03:59:38  * fallsemoquit (Quit: Leaving.)
04:00:42  * tmcwjoined
04:01:29  <mikeal>i don't think ill use snapshots
04:01:36  <mikeal>i might actually write a custom log on top of what i'm doing
04:01:44  <mikeal>hard to explain why before i finish :)
04:06:31  * jxsonjoined
04:07:07  <mikolalysenko>another node question: what are some good benchmarking libraries?
04:07:35  <mikolalysenko>this one: https://npmjs.org/package/benchmark seems way to enterpisey/frameworky
04:07:47  <mikolalysenko>and the documentation is obtuse/cluttered
04:11:48  <rvagg>mikolalysenko: I use it a bit, docs here: http://benchmarkjs.com/docs
04:12:18  <rvagg>it can't do async set up and tear down and it makes heavy use of Function.toString so you have to do some awkward stuff to get it to work
04:12:40  <rvagg>mikolalysenko: using it here: https://github.com/rvagg/node-levelup/tree/master/test/benchmarks/
04:13:17  <rvagg>it's much better at browser-based benchmarking than Node but it does work
04:15:26  <mikolalysenko>ben looks pretty good...
04:15:35  <mikolalysenko>but I want to be able to give it a time limit
04:15:51  <mikolalysenko>because I want to compare many different algorithms, and some of them are really terrible
04:20:22  * thl0quit (Remote host closed the connection)
04:23:10  * defunctzombiechanged nick to defunctzombie_zz
04:24:01  * timoxleyquit (Quit: Computer has gone to sleep.)
04:25:53  * kenperkinsquit (Quit: Computer has gone to sleep.)
04:25:59  * timoxleyjoined
04:26:07  * st_lukejoined
04:26:19  * timoxleyquit (Client Quit)
04:30:49  * jxsonquit (Remote host closed the connection)
04:34:07  <mikolalysenko>bah, I made this: https://github.com/mikolalysenko/limit-bench
04:34:23  <mikolalysenko>there are probably other things out there that do the same thing...
04:34:57  * timoxleyjoined
04:49:24  * st_lukequit (Remote host closed the connection)
04:55:02  * jcrugzzjoined
04:59:17  * kenperkinsjoined
04:59:50  * timoxleyquit (Quit: Computer has gone to sleep.)
05:09:26  <substack>new section http://substack.net/weaning_yourself_off_jquery#_code28
05:09:33  <substack>talks about browserify and npm
05:11:47  * kenperkinsquit (Quit: Computer has gone to sleep.)
05:13:01  * tmcwquit (Remote host closed the connection)
05:16:41  * jcrugzzquit (Ping timeout: 255 seconds)
05:17:24  * mikealquit (Quit: Leaving.)
05:19:38  * mintxianjoined
05:20:06  * mikealjoined
05:20:19  * gildean_joined
05:20:20  * shamaquit (Remote host closed the connection)
05:20:30  <mikeal>i'm 99% sure that someone in this channel wrote a module that will rmdir -r from nodejs :)
05:20:32  * jjjjohnn1yjoined
05:20:38  * CoverSli1ejoined
05:21:07  * xyxnejoined
05:21:11  * jesusabd1llahjoined
05:23:42  <substack>mikeal: rimraf
05:23:53  * Nexxyquit (Disconnected by services)
05:23:58  * xyxnechanged nick to Nexxy
05:24:02  <mikeal>isaacs!
05:25:28  * jjjjohnnnyquit (*.net *.split)
05:25:28  * notalexgordon_quit (*.net *.split)
05:25:28  * jesusabdullahquit (*.net *.split)
05:25:28  * CoverSlidequit (*.net *.split)
05:25:29  * mint_xianquit (*.net *.split)
05:25:29  * gildeanquit (*.net *.split)
05:25:30  * mintxianchanged nick to mint_xian
05:27:27  * mikolalysenkoquit (Ping timeout: 276 seconds)
05:31:49  * jesusabd1llahchanged nick to jesusabdullah
05:38:56  * Benvie2quit (Ping timeout: 256 seconds)
05:39:33  * Domenic__quit (Ping timeout: 240 seconds)
05:42:12  <substack>spinning out this ploy logging stuff into its own module
05:42:37  <substack>ploy has a few modules sitting inside of it ready to burst out like an alien
05:42:50  <substack>but it's working really solidly in production
05:55:04  * Benvie1joined
05:59:33  * Benvie1quit (Ping timeout: 248 seconds)
06:11:44  * antix_joined
06:20:53  * antix_quit (Ping timeout: 248 seconds)
06:21:20  * antix_joined
06:21:21  * antix_quit (Changing host)
06:21:21  * antix_joined
06:30:46  * antix_quit (Ping timeout: 246 seconds)
06:31:46  * antix_joined
06:33:37  * mikolalysenkojoined
06:38:58  * mikolalysenkoquit (Ping timeout: 256 seconds)
06:40:01  * mikealquit (Quit: Leaving.)
06:41:33  * antix_quit (Ping timeout: 276 seconds)
06:41:50  * antix_joined
06:43:54  * mikealjoined
06:49:34  <jesusabdullah>dear bros
06:49:39  <jesusabdullah>and not-bros
06:50:06  <jesusabdullah>what's the 0.10 version of, stdin.on('data', function (data) { /* do something w/ data */ process.stdout.write('something'); });
06:50:35  * antix_quit (Ping timeout: 256 seconds)
06:51:20  * antix_joined
06:52:24  <jesusabdullah>also the 0.10 version of process.stdin.resume();
06:52:29  <jesusabdullah>I think you see what I want to do here
06:52:34  <jesusabdullah>is it a through stream thing?
06:52:38  <jesusabdullah>if so, how do I backport?
06:54:18  <jesusabdullah>nvm using read
06:55:57  <jesusabdullah>nvm npm searching repl
06:57:05  <jesusabdullah>fuck
06:57:28  <jesusabdullah>I really need a stdin.pipe(repl(function (in, cb) { cb(out); }).pipe(stdout)
06:57:32  <jesusabdullah>some kind of through stream
06:58:53  <jesusabdullah>ehh fuck it
06:59:26  * antix_quit (Ping timeout: 252 seconds)
07:00:07  * antix_joined
07:01:40  <rvagg>jesusabdullah: deoxxa/steez would probably do that job, but I don't think it's at streams2 level yet
07:08:14  * antix_quit (Ping timeout: 252 seconds)
07:08:49  * antix_joined
07:16:53  * antix_quit (Ping timeout: 240 seconds)
07:17:19  * jcrugzzjoined
07:17:52  * antix_joined
07:25:54  * notalexgordon_joined
07:26:17  * antix_quit (Ping timeout: 255 seconds)
07:26:41  * antix_joined
07:29:44  * jcrugzzquit (Ping timeout: 252 seconds)
07:41:19  * antix_quit (Ping timeout: 264 seconds)
07:41:43  * antix_joined
07:50:02  * antix_quit (Ping timeout: 252 seconds)
07:50:33  * antix_joined
07:59:20  * antix_quit (Ping timeout: 258 seconds)
08:00:49  * gildean_changed nick to gildean
08:01:22  * antix_joined
08:10:39  * antix_quit (Ping timeout: 260 seconds)
08:12:13  * antix_joined
08:20:04  <Raynos>jesusabdullah: Stream.Transform
08:20:14  <Raynos>_transform(chunk, cb) { cb(out) }
08:20:25  * antix_quit (Ping timeout: 258 seconds)
08:22:00  * antix_joined
08:31:24  * antix_quit (Ping timeout: 276 seconds)
08:32:59  * antix_joined
08:40:53  * antix_quit (Ping timeout: 240 seconds)
08:42:55  * antix_joined
08:42:55  * antix_quit (Changing host)
08:42:55  * antix_joined
08:50:04  <jesusabdullah>Raynos: I see
08:50:17  <jesusabdullah>rvagg: steez? cool
08:50:25  <jesusabdullah>rvagg: I had an idea for my Data Center tycoon game
08:50:30  <jesusabdullah>rvagg: telnet interface
08:50:37  <jesusabdullah>rvagg: it's really like you're connecting to the cloud!
08:52:25  * antix_quit (Ping timeout: 256 seconds)
08:53:43  <substack>jesusabdullah: https://github.com/substack/node-browserify#api-example
08:53:46  <substack>ignore that
08:53:50  <substack>jesusabdullah: https://github.com/substack/bashful
08:53:57  <substack>clipboard has been unreliable lately
08:54:35  * antix_joined
08:57:20  <jesusabdullah>not the worst idea substack XD
09:00:06  <jesusabdullah>substack: do you have a thing that only parses commands?
09:00:12  <jesusabdullah>substack: you do right? what's that called again?
09:00:17  <jesusabdullah>the bash command parser thing
09:00:46  <substack>that's the thing I just linked
09:00:58  <jesusabdullah>nonono I'm not using the right words
09:01:16  <jesusabdullah>not implementing bash, just the part that takes a command + arguments and slices it the same way process.argv is
09:01:20  <substack>do you mean this? https://github.com/substack/node-shell-quote
09:01:23  <jesusabdullah>yes
09:01:25  <jesusabdullah>yes I do
09:01:54  <jesusabdullah>awesome
09:03:31  * antix_quit (Ping timeout: 264 seconds)
09:05:42  * antix_joined
09:13:08  <jesusabdullah>haha sick, "plugins" just get passed optimist-parsed shell-quote-parsed commands through telnet
09:15:17  * antix_quit (Ping timeout: 252 seconds)
09:17:00  <jesusabdullah>substack: https://gist.github.com/jesusabdullah/5425349
09:20:50  * antix_joined
09:29:55  * antix_quit (Ping timeout: 264 seconds)
09:32:32  * antix_joined
09:39:32  * no9joined
09:41:44  * antix_quit (Ping timeout: 255 seconds)
09:43:15  * jibayjoined
09:56:41  * antix_joined
10:03:46  * antix_quit (Ping timeout: 245 seconds)
10:11:34  * antix_joined
10:22:48  * antix_quit (Ping timeout: 256 seconds)
10:27:24  * no9quit (Quit: Leaving)
10:30:27  * antix_joined
10:41:23  * antix_quit (Ping timeout: 260 seconds)
10:48:56  * antix_joined
10:49:15  * dominictarrjoined
10:50:43  <substack>yay found the bug in slice-file
11:00:20  * antix_quit (Ping timeout: 252 seconds)
11:01:32  * nicholasfquit (Read error: Connection reset by peer)
11:02:01  * nicholasfjoined
11:08:26  * antix_joined
11:20:35  * antix_quit (Ping timeout: 260 seconds)
11:26:27  * jcrugzzjoined
11:28:21  * antix_joined
11:30:07  * antix_quit (Read error: Connection reset by peer)
11:31:07  * jcrugzzquit (Ping timeout: 264 seconds)
11:44:20  <dominictarr>ralphtheninja: ping?
11:48:12  * yorickjoined
12:05:16  <ralphtheninja>dominictarr: pong
12:05:51  <dominictarr>check this out github.com/dominictarr/pull-fs
12:06:00  <dominictarr>this is the start of the fsQuery thing
12:06:27  <dominictarr>look at how simple it is to like, print the module tree https://github.com/dominictarr/pull-fs/blob/master/examples/modules.js
12:08:31  <ralphtheninja>cool
12:09:00  <ralphtheninja>is the callback for depthFirst like a map callback?
12:09:19  <dominictarr>that is a function that returns a stream
12:09:56  <dominictarr>it's past a node, (in this case, a dirname) and returns a stream of the node's children.
12:12:54  <dominictarr>this is another useful one https://github.com/dominictarr/pull-fs/blob/master/examples/find-package-json.js#L4
12:14:58  <dominictarr>and this one implements node_modules style require in just 50 lines https://github.com/dominictarr/pull-fs/blob/master/require.js
12:16:49  <dominictarr>(contrast that with this… https://github.com/joyent/node/blob/master/lib/module.js)
12:20:20  <ralphtheninja>cool .. checking it out now .. need coffee first
12:28:36  <rvagg>dominictarr: will get to your comments on plugin injection tomorrow, too braindead right now, about to head off to bed
12:29:06  <dominictarr>sweet as
12:54:56  * jcrugzzjoined
13:01:16  * jcrugzzquit (Ping timeout: 245 seconds)
13:16:06  * tmcwjoined
13:20:48  * tmcwquit (Remote host closed the connection)
13:36:43  * fallsemojoined
13:37:59  * defunctzombie_zzchanged nick to defunctzombie
13:38:10  * fotoveritequit (Quit: fotoverite)
13:51:19  * kenperkinsjoined
14:08:23  * AvianFlujoined
14:21:33  * dguttmanjoined
14:28:26  * dguttmanquit (Quit: dguttman)
14:30:02  * fotoveritejoined
14:32:56  * thl0joined
14:34:05  * tmcwjoined
14:34:37  <thl0>Domenic_:
14:34:47  <thl0>is object freeze a strict violation?
14:35:29  * fallsemoquit (Quit: Leaving.)
14:36:09  * fallsemojoined
14:55:20  * tmcwquit (Remote host closed the connection)
14:57:19  * kenperkinsquit (Quit: Computer has gone to sleep.)
15:22:00  * tmcwjoined
15:31:24  * tmcwquit (Remote host closed the connection)
15:35:29  * kenperkinsjoined
15:40:53  * dominictarrpart
15:40:56  * spionjoined
15:43:07  * timoxleyjoined
15:45:05  <isaacs>mikeal!
15:45:37  <isaacs>jesusabdullah: the 0.10 version of stdin.on('data') is stdin.on('data')
15:46:27  * dguttmanjoined
15:58:35  * dguttmanquit (Quit: dguttman)
16:01:21  * dguttmanjoined
16:11:53  * pikpikquit (Changing host)
16:11:53  * pikpikjoined
16:11:53  * pikpikquit (Changing host)
16:11:53  * pikpikjoined
16:12:21  * mikolalysenkojoined
16:18:35  * mikolaly1enkojoined
16:19:24  * dguttmanquit (Quit: dguttman)
16:19:33  * mikolalysenkoquit (Ping timeout: 240 seconds)
16:21:21  * dguttmanjoined
16:22:08  * dguttmanquit (Client Quit)
16:24:05  * mikolaly1enkoquit (Quit: Reconnecting)
16:24:17  * mikolalysenkojoined
16:27:42  * fotoveritequit (Quit: fotoverite)
16:35:34  * mikolalysenkoquit (Ping timeout: 246 seconds)
16:43:33  * AvianFluquit (Remote host closed the connection)
16:44:08  * timoxleyquit (Quit: Computer has gone to sleep.)
16:59:59  * mikolalysenkojoined
17:02:08  * shamajoined
17:06:20  * st_lukejoined
17:06:21  <jesusabdullah>isaacs: what a relief!
17:10:35  * timoxleyjoined
17:11:45  * st_lukequit (Remote host closed the connection)
17:13:45  * thl0quit (Remote host closed the connection)
17:15:36  <jesusabdullah>https://github.com/bigcompany/know-your-http/issues/12 dafuq
17:18:15  * thl0joined
17:20:08  * evboguejoined
17:21:35  * thl0quit (Remote host closed the connection)
17:26:38  * defunctzombiechanged nick to defunctzombie_zz
17:36:38  * st_lukejoined
17:41:40  * evboguequit
17:56:51  * mikealquit (Quit: Leaving.)
17:57:25  * mikealjoined
17:58:59  * mikealquit (Client Quit)
18:02:55  * st_lukequit (Remote host closed the connection)
18:11:37  * ins0mniajoined
18:16:30  * fotoveritejoined
18:25:21  * mikealjoined
18:30:54  * defunctzombie_zzchanged nick to defunctzombie
18:38:39  * dominictarrjoined
18:42:31  * mikealquit (Quit: Leaving.)
18:49:13  * tilgovijoined
18:58:52  * mikealjoined
19:05:54  * shamaquit (Remote host closed the connection)
19:13:18  * Domenic__joined
19:16:15  <dominictarr>juliangruber: you there?
19:31:50  * jcrugzzjoined
19:36:48  * thl0joined
19:38:17  <defunctzombie>jesusabdullah: wow
19:40:04  <defunctzombie>jesusabdullah: what a tool
19:40:48  * defunctzombiechanged nick to defunctzombie_zz
19:41:22  <jesusabdullah>defunctzombie_zz: inorite
19:42:12  * nicholasfquit (Read error: Connection reset by peer)
19:42:24  * nicholasfjoined
19:42:42  * jcrugzzquit (Ping timeout: 264 seconds)
19:46:14  * nicholasfquit (Read error: Connection reset by peer)
19:46:46  * nicholasfjoined
19:48:25  * timoxleyquit (Quit: Computer has gone to sleep.)
19:49:55  * nicholasfquit (Read error: Connection reset by peer)
19:50:17  * nicholasfjoined
19:51:21  * mikealquit (Quit: Leaving.)
19:52:18  * nicholasfquit (Read error: Connection reset by peer)
19:52:49  * nicholasfjoined
20:00:15  * shamajoined
20:00:24  * nicholasfquit (Ping timeout: 276 seconds)
20:05:38  * shamaquit (Remote host closed the connection)
20:07:04  * mikealjoined
20:13:25  * mikolalysenkoquit (Ping timeout: 248 seconds)
20:29:15  * shamajoined
20:32:17  * no9joined
20:51:56  * dguttmanjoined
20:53:57  * no9quit (Ping timeout: 248 seconds)
20:55:55  * fotoveritequit (Quit: fotoverite)
20:58:33  * no9joined
21:06:55  * dguttmanquit (Quit: dguttman)
21:13:31  <thl0>awesome, substack's brfs and blobs coming together to inline ace editor web worker: https://github.com/thlorenz/scriptie-talkie/blob/master/examples/browser/ace/ace.js#L14656-L14661
21:13:56  <thl0>no more cross site issues and nice error annotations in scriptie-talkie soon :)
21:21:15  * thl0quit (Remote host closed the connection)
21:22:03  * thl0joined
21:28:06  * thl0quit (Remote host closed the connection)
21:28:41  * thl0joined
21:31:55  * fotoveritejoined
21:32:39  * fotoveritequit (Client Quit)
21:33:02  * fotoveritejoined
21:33:21  * thl0quit (Ping timeout: 276 seconds)
21:36:05  * fotoveritequit (Client Quit)
21:45:37  <substack>dominictarr: https://www.youtube.com/watch?v=CoxQLJkLq1c
21:48:22  <dominictarr>watching
21:48:48  <dominictarr>an electronic brain!
21:54:13  * Domenic__quit (Ping timeout: 240 seconds)
21:54:42  <dominictarr>if computers are "electronic brains" are we "electronic brain surgeons" or "electronic brain psychologists"
21:55:37  * mikolalysenkojoined
21:57:06  <dominictarr>substack: that set is probably sitting in a warehouse in mountain view somewhere
21:58:10  <substack>I hope so.
21:58:15  * Domenic__joined
22:00:36  <substack>I remember those intel 486 cpus
22:00:51  <substack>with a math co-processor and everything
22:00:57  <substack>it was fast enough to run windows 95
22:01:15  * fotoveritejoined
22:01:17  * st_lukejoined
22:02:05  <substack>gets really trippy at 16:10
22:04:25  <substack>10,000 lines of pascal
22:06:34  <dominictarr>damn, they should be using a spatial hash
22:06:47  <dominictarr>not an exaustive search
22:06:57  <substack>N is pretty small
22:08:27  <mikolalysenko>which thing?
22:08:31  <mikolalysenko>I think I missed the first part
22:09:14  <jesusabdullah>some vidya or other I think
22:09:23  <mikolalysenko>ah
22:09:35  <jesusabdullah>substack: went to civic hackathon, decided to just set up salesforce for client
22:09:38  <jesusabdullah>substack: THAT'S NOT HACKING
22:09:38  <dominictarr>okay okay okay
22:09:40  <dominictarr>https://www.youtube.com/watch?v=CoxQLJkLq1c
22:10:27  <mikolalysenko>got it
22:11:05  <mikolalysenko>was going to suggest if someone was using a spatial hash in javascript, that they might consider using this library instead:
22:11:07  <mikolalysenko>https://npmjs.org/package/n-body-pairs
22:11:12  <mikolalysenko>it is built on sorting, and probably much faster
22:11:22  <substack>boston it says at the end
22:12:05  <substack>mikolalysenko: you should send that information back to 1990 to the creators of this museum exhibit
22:13:20  <mikolalysenko>yeah
22:14:04  <mikolalysenko>I suppose it is too late for that, but I was hoping to inform those who would attempt similar things in the future
22:14:59  * jibayquit (Remote host closed the connection)
22:16:14  <dominictarr>mikolalysenko: how does it work? sort the list twice into x, and y order?
22:16:22  <mikolalysenko>no
22:16:29  <mikolalysenko>though static-range-query does something like
22:16:32  <mikolalysenko>*that
22:16:41  <mikolalysenko>but it currently has a bug in it that I am working on fixing
22:16:57  <mikolalysenko>what n-body-pairs does is chope the space up into boxes, then sorts the boxes
22:17:09  <mikolalysenko>each sphere is rounded into the boxes which it intersects
22:17:21  <dominictarr>oh, right!
22:17:24  <mikolalysenko>collisions are checked by just looking for duplicates
22:17:50  <mikolalysenko>static-range-query will be faster for doing large queries
22:17:53  <dominictarr>and then double checked, to see whether they actually collide
22:17:57  <mikolalysenko>yeah
22:18:37  <mikolalysenko>basically it ends up being faster than hashing due to superior cache performance
22:18:59  <mikolalysenko>and also because the indices for the objects are stored somewhat implicitly
22:19:19  <mikolalysenko>you could even make it dynamic if you used a b-tree, but I still haven't found a good implementation for js
22:19:33  <mikolalysenko>or a packed memory array...
22:19:51  <mikolalysenko>again, very difficult to implement without es 6 binary data types
22:20:02  <mikolalysenko>so the current version is basically a static algorithm
22:20:23  <mikolalysenko>but it should still work for physics things where you tick all the bodies anyway
22:20:43  <mikolalysenko>I also made a benchmark/demo to test it: https://github.com/mikolalysenko/n-body-bench
22:21:00  * no9quit (Quit: Leaving)
22:21:46  <mikolalysenko>it performs quite well compared to some other popular libraries
22:21:58  <mikolalysenko>though the score for the MXCIF quadtree is misleading
22:22:10  <mikolalysenko>it only seems fast because the library is broken and doesn't return all collisions
22:22:20  <mikolalysenko>I think it is handling boundary cells improperly...
22:25:25  * tilgoviquit (Remote host closed the connection)
22:31:06  * mikealquit (Quit: Leaving.)
22:35:36  * fotoveritequit (Quit: fotoverite)
22:41:34  <mbalho>mikolalysenko: do you have an active twitter account?
22:50:45  * fotoveritejoined
22:53:59  * st_lukequit (Remote host closed the connection)
23:03:13  * thl0joined
23:03:40  <mikolalysenko>mbalho: no
23:03:45  <mikolalysenko>I signed up for it once I think
23:03:51  <mikolalysenko>or at least I keep getting emails from them
23:11:04  <dominictarr>I saw you tweet a week or two ago
23:11:40  <mikolalysenko>really?
23:11:59  <mikolalysenko>I don't think I've even logged in in that much time...
23:12:10  * timoxleyjoined
23:12:13  <mikolalysenko>or maybe I have an impersonator on twitter...
23:13:32  <mikolalysenko>I found my old account: https://twitter.com/MikolaLysenko
23:13:41  <mikolalysenko>but it has not been used in a long time...
23:14:43  <mikolalysenko>gotta go
23:19:08  * mikolalysenkoquit (Ping timeout: 256 seconds)
23:20:15  * timoxleyquit (Quit: Computer has gone to sleep.)
23:20:28  * evboguejoined
23:29:29  * fotoveritequit (Quit: fotoverite)
23:35:19  * isaacs_mobilejoined
23:37:28  * fallsemoquit (Quit: Leaving.)
23:42:44  * kenperkinsquit (Quit: Computer has gone to sleep.)
23:43:52  * mikealjoined
23:44:04  <mikeal>rvagg: crazy bug! https://github.com/rvagg/node-levelup/issues/124
23:50:23  * fotoveritejoined
23:56:31  * yorickquit (Remote host closed the connection)
23:59:22  * dominictarrquit (Quit: dominictarr)