00:00:00  * ircretaryquit (Remote host closed the connection)
00:00:07  * ircretaryjoined
00:00:24  <mikolalysenko>to this end, just exposing the capability to rebundle at run time seems like the minimally invasive solution
00:00:36  <mikolalysenko>since then you could build a worker api as a separate module without having to pick some syntax
00:01:00  <mikolalysenko>and that module could figure out how to handle node interoperability, transfers, streams, etc.
00:01:41  <mikolalysenko>that is the basic idea in chrisdickinson's bfy-worker, and I think it is pretty solid
00:02:16  <mikolalysenko>whenever you create a worker it reconstructs a bundle for that worker, creates a blob url and then loads the worker from the blob
00:02:43  <substack>it looks like I could just make a few tweaks to make workerify not need to bundle the entire thing
00:02:55  <mikolalysenko>hmm
00:03:04  <mikolalysenko>but you still might have problems with double bundling files...
00:03:08  <substack>the worker could deactivate the entry points but use the exposed require() logic
00:03:14  <mikolalysenko>also workerify has a lot of bugs...
00:03:15  <substack>as its fallback
00:04:37  <Raynos>have you guys seen https://github.com/padolsey/operative ?
00:04:43  <mikolalysenko>yeah, I think the idea of just taking the current list of modules and replacing the entry point is the way to go
00:04:52  <Raynos>wrap a function or object in it and it runs all the functions in a worker
00:05:18  <mikolalysenko>Raynos: yeah, that seems like kind of a bad idea...
00:05:27  <mikolalysenko>since it won't play nice with requires
00:05:27  <Raynos>why?
00:05:30  <Raynos>Sure
00:05:36  <Raynos>but dont do complex things
00:05:39  <Raynos>:D
00:05:44  <mikolalysenko>well, but sometimes you want to do complex things...
00:05:50  <Raynos>or inject dependencies
00:06:06  <mikolalysenko>that isn't possible right now though, because you can't get the source for the requires and add them to the worker
00:06:31  <Raynos>miko: https://gist.github.com/Raynos/b6d347dfba6dba14a3d5
00:07:01  <Raynos>that probably wont work
00:07:03  <Raynos>but if it could
00:07:05  <Raynos>that would be cool :p
00:07:28  <mikolalysenko>also it doesn't expose transferrable objects in any sane way
00:07:37  <mikolalysenko>which is absolutely critical for things like voxel.js
00:07:44  <mikolalysenko>where you would want to build all your meshes in a worker
00:07:55  <substack>mikolalysenko: I think it might actually be possible to do another trick, depending on if postMessage() sends its results back immediately or puts it in a queue
00:07:56  <mikolalysenko>turning a giant 2mb typedarray into a string is a terrible waste
00:07:57  * vitorpachecoquit (Quit: Saindo)
00:08:25  <mikolalysenko>substack: not sure what you are thinking here... what problem are you trying to solve?
00:08:36  <substack>mikolalysenko: the problem of not being able to require() in the worker
00:08:55  <mikolalysenko>ok, what are you thinking about doing?
00:09:07  <substack>experimenting with the timing of postMessage
00:09:17  <substack>if it's all on the same tick you can actually have a synchronous api
00:09:22  <mikolalysenko>hmm
00:09:26  <mikolalysenko>that would still be problematic
00:09:34  <mikolalysenko>how would you transfer a function to the worker?
00:09:57  <substack>yes that is tricky
00:10:01  <mikolalysenko>the basic semantics for postMessage are the same as json.stringify()
00:10:11  <mikolalysenko>with the added property that typedarrays get transferred
00:10:23  <mikolalysenko>which basically means they get moved from worker to the main thread and vice-versa
00:10:43  <mikolalysenko>this avoids stringifying them and speeds things up a lot
00:11:05  <mikolalysenko>but it also means you can't transfer functions or objects with prototypes
00:11:18  <substack>perhaps there is something really subtle that can be done with the module sources in browser-pack
00:11:34  <mikolalysenko>well, all you really need is a way to get a list of all the modules
00:11:36  * cianomaidinjoined
00:11:41  <mikolalysenko>if you have that you can build the worker source at run time
00:11:41  <substack>why only a list?
00:11:48  <mikolalysenko>err a list and their sources
00:11:53  <mikolalysenko>you can use the function(){} + ""
00:11:58  <mikolalysenko>to get the source of each module
00:12:22  <substack>only if browser-pack will let you do that
00:12:27  <mikolalysenko>right
00:12:34  * dominictarrquit (Quit: dominictarr)
00:12:34  <mikolalysenko>you need to get that list of all the modules and their sources
00:13:00  <mikolalysenko>if you have that data, then spinning up a worker is easy
00:13:03  <mikolalysenko>even with requires
00:13:08  * whit537joined
00:13:25  <mikolalysenko>since you just take the module list and repackage it into a new bundle with a modified entry point
00:13:41  <mikolalysenko>then create a fake worker script using a bloburl
00:14:05  <mikolalysenko>that is basically how bfy-worker does it, and I think it is minimally invasive
00:14:32  <substack>ok I will see if this can be minimally done in browser-pack
00:14:36  <mikolalysenko>ok
00:14:43  * thlorenzjoined
00:14:48  <mikolalysenko>fantastic, if you manage to get this to work it will be awesome
00:14:48  <substack>if it can, it'd be sweet to have a child_process.fork() or cluster.fork() polyfill for node
00:14:58  <mikolalysenko>yeah, I think it should be possible eventually
00:15:36  <mikolalysenko>as a way to expose the exported modules, one way might be to have a virtual module
00:15:51  <mikolalysenko>like you do: require("all-loaded-modules")
00:16:00  <mikolalysenko>and it gives you a list of all the currently loaded modules
00:16:31  <mikolalysenko>you could even check if that module was used, and if so have browser-pack make the necessary modifications
00:16:33  * mk30_joined
00:16:42  <substack>I think we can do something a bit more subtle
00:16:49  <mikolalysenko>ok
00:17:04  <mikolalysenko>the only data that needs to be exposed is the list of modules + sources
00:17:05  <substack>at any rate, it's so nice to have all these pieces properly split up
00:17:14  <mikolalysenko>yeah
00:17:15  <substack>this kind of thing would have been impossible in v <2
00:17:28  <mikolalysenko>well, there was a patch for v1 that would've worked too
00:17:39  <mikolalysenko>but yeah, I think v2 is overall still a big improvement
00:17:50  <mikolalysenko>https://github.com/substack/node-browserify/pull/284
00:18:27  * cianomaidinquit (Quit: cianomaidin)
00:18:29  <substack>a transform *could* capture all the module sources and rewrite require('all-loaded-modules')
00:18:34  <mikolalysenko>hmm
00:18:38  <substack>but that would inflate the size still
00:18:41  <mikolalysenko>yeah, but it would inflate size
00:18:43  <mikolalysenko>right
00:18:55  <mikolalysenko>that is how workerify basically does it, and that is also the main problem with workerify...
00:19:06  * thlorenzquit (Ping timeout: 256 seconds)
00:19:59  <substack>ok another problem
00:20:13  <substack>paths are statically resolved
00:20:21  <mikolalysenko>fine, expose that data too
00:20:21  <substack>so the canonical form is a hash of the file name
00:20:38  <mikolalysenko>the exposed data can be slightly hacky
00:20:57  <mikolalysenko>I've looked at browser-pack and I think it should work if you can get a hold of it
00:20:59  <substack>and then each file gets mappings of require('./some-local-thing.js') to './some-local-thing.js' => 'abc123'
00:21:15  <mikolalysenko>that should be no problem I think
00:21:23  <mikolalysenko>here is how I was thinking of loading workers:
00:21:49  <mikolalysenko>basically you'd use some syntax like: spawn(function() { require("something") })
00:22:11  <mikolalysenko>and then it would rebuild the bundle for that thing
00:22:56  <mikolalysenko>like just do: function spawn(f) { var src = f+''; //Load modules, set entry to f }
00:23:19  <mikolalysenko>though the local file resolution could be an issue...
00:23:26  <mikolalysenko>hmm
00:23:35  * spionjoined
00:23:54  <substack>ok that gives me an idea for a 100% transform approach
00:24:05  <mikolalysenko>without ballooning file size?
00:24:11  <substack>yes
00:24:16  <mikolalysenko>ok, I'd like to see it
00:24:58  <substack>basically
00:25:09  <substack>the transform could be told what the entrypoints are
00:25:41  <substack>then it could rewrite the entrypoints to have 1 entry for the usual code path and 1 entry for web workers
00:26:41  <mikolalysenko>ok, then how does it load the worker?
00:26:53  <substack>new Worker('bundle.js')
00:26:56  <mikolalysenko>hmm
00:27:02  <mikolalysenko>but then you need to know the filename of the bundle
00:27:05  <mikolalysenko>and where it is hosted
00:27:09  <substack>yes
00:27:24  <substack>aside from that issue, this approach would be very clean
00:27:27  <mikolalysenko>also depending on which script you load as a worker you'd have different entry points
00:27:42  <mikolalysenko>which means you'd have to do some hacking to have multiple worker scripts
00:28:04  <substack>it could also disable all the existing entry points in worker mode
00:28:18  <mikolalysenko>yeah, but what happens if you have two different worker scripts
00:28:21  <substack>oh hah I thought up a hack so it wouldn't need to know which files are the entry points
00:29:16  <substack>the transform could parse out Worker() and add a stub require()
00:29:20  <substack>so that the file gets loaded
00:29:34  <substack>if(0)require('./worker.js');
00:30:02  <mikolalysenko>yeah, but then you got to start the worker somehow
00:30:11  <mikolalysenko>the easiest way would probably be a blob url I think
00:30:36  <mikolalysenko>but to build that blob url you still need run time reflection
00:30:45  <substack>I can't see any way to have a blob url that doesn't increase bundle size
00:30:54  <mikolalysenko>no, you build the blob at run time
00:30:59  <substack>yes but
00:31:14  <substack>maybe if you could just fetch the entire source of the entire bundle
00:31:18  <mikolalysenko>yeah
00:31:20  <mikolalysenko>exactly
00:31:23  * soldairquit (Ping timeout: 250 seconds)
00:31:28  <substack>and not even worry about individual files
00:31:35  <mikolalysenko>that would work too
00:31:47  <substack>the require() cascade logic is already built-in
00:31:52  <mikolalysenko>yep
00:32:20  * mikealquit (Quit: Leaving.)
00:33:37  <mikolalysenko>basically it is a kind of quine problem
00:33:49  <mikolalysenko>you need to have some way to print the source code of the whole bundle out
00:34:06  <mikolalysenko>the standard solution for a quine though requires writing the source of the program twice
00:34:21  <mikolalysenko>for example, see wiki: http://en.wikipedia.org/wiki/Quine_(computing)
00:34:30  <mikolalysenko>but we can cheat using the function(){} + '' trick
00:34:40  * No9quit (Quit: Gone to join the choir invisibule)
00:34:42  <mikolalysenko>which means that we can write the source of the bundle only once and get the same results
00:42:20  * wolfeidaujoined
00:42:26  <substack>I've almost got something :D
00:42:37  <substack>haha this is so silly
00:49:55  <substack>mikolalysenko: https://gist.github.com/substack/6136692
00:50:51  * wolfeidauquit (Remote host closed the connection)
00:50:57  <substack>requires no transforms
00:51:04  <substack>requires no modifications to any modules
00:51:08  <mikolalysenko>yeah, I tried this but had problems
00:51:38  <mikolalysenko>it works fine from the entry point but if you require it as a submodule it breaks
00:51:48  <substack>as a submodule?
00:51:53  <mikolalysenko>yeah
00:52:01  <mikolalysenko>like if you do that from a submodule it doesn't work
00:52:01  <substack>oh I see
00:52:10  <substack>from some module that was require()d
00:52:13  <substack>because of the call stack
00:52:13  <mikolalysenko>yeah
00:52:15  <substack>not a problem
00:52:30  <mikolalysenko>even if the main thread has a "use strict" in it?
00:52:47  <substack>"use strict" is function scoped
00:52:48  <mikolalysenko>err the main module I mean
00:52:56  <mikolalysenko>it can still mess up the call stack though
00:53:01  <substack>anyways don't "use strict" then
00:53:03  <substack>ever
00:53:06  <mikolalysenko>umm
00:53:07  <substack>for anything
00:53:20  <mikolalysenko>ok....
00:53:32  <mikolalysenko>but what if someone does use strict anyway?
00:53:41  <substack>then they don't get nice things
00:53:44  <mikolalysenko>whatever the solution is it should still work
00:53:54  <substack>it hasn't been a problem because if somebody does "use strict"
00:53:59  <substack>in their entry file for example
00:54:06  <substack>that behavior is scoped to only their file
00:54:12  <mikolalysenko>it is part of javascript
00:54:18  <mikolalysenko>just like optional semicolons
00:54:25  <mikolalysenko>like it or not, it is there
00:54:38  <mikolalysenko>I also use strict all the time and find it catches errors in my code
00:54:41  <substack>but it's not actually a problem that exists
00:54:48  * wolfeidaujoined
00:54:54  <mikolalysenko>maybe I'm not as awesome a programmer, but I sometimes typo variables and use strict catches that stuff
00:54:59  <substack>and I never do "use strict" ever and I do all kinds of things that strict mode would complain about
00:55:11  <substack>but you are able to use my modules fine
00:55:17  <substack>because "use strict" is function scoped
00:55:24  <substack>so this is not even an issue
00:55:29  <mikolalysenko>ok. my point is that use strict will still mess up the call stack here
00:55:33  <substack>and I hate that people think that it is actually a problem
00:55:39  <mikolalysenko>also what if you do the require from a setTimeout then?
00:55:44  <mikolalysenko>it will still break
00:55:48  <mikolalysenko>or some async event
00:55:49  <substack>yep
00:56:13  <mikolalysenko>the whole point is that this is pretty fragile, even ignoring the whole use strict issue
00:57:47  <substack>so just don't do those things
00:57:50  <substack>only do things that won't break
00:57:54  <mikolalysenko>....
00:58:00  <mikolalysenko>this is not a great solution imo
00:58:45  <substack>I don't think it matters very much
00:58:46  <substack>because
00:59:02  <substack>you require('browserify-quine') once when your program fires up
00:59:05  <substack>and then you have all the source
00:59:14  <mikolalysenko>yeah, but what if you do it from a submodule
00:59:17  <substack>then you do the webworkery part later
00:59:19  <mikolalysenko>which is required several modules deep
00:59:32  <substack>you can traverse up the call stack for that
00:59:36  <substack>I can probably get that working
00:59:47  <mikolalysenko>but what if one of those bad things I described happens somewhere?
00:59:57  <mikolalysenko>in general you don't get to control how your module gets called
01:00:02  <mikolalysenko>that is part of the contract in being a module
01:00:15  <mikolalysenko>otherwise you are framework
01:01:05  <mikolalysenko>and those bad things aren't even outlandish
01:01:15  <mikolalysenko>for example, what if I load up the module in a dom-ready event?
01:01:59  <mikolalysenko>or what if some n00b puts a use strict in their code before calling a module that uses workers?
01:02:02  <substack>raise an error when the source can't be read
01:02:04  <mikolalysenko>then everything is going to crash and burn
01:02:11  <mikolalysenko>...
01:02:14  <substack>who cares
01:02:26  <mikolalysenko>umm, people who want to use workers modularly?
01:02:52  <substack>it's like any tool, it has instructions for use
01:02:57  <substack>if you don't use it correctly it won't work
01:04:17  <mikolalysenko>ok, but this has serious problems with optimizations
01:04:29  <mikolalysenko>using arguments.callee kills the possibility of tail call optimization for example
01:04:51  <mikolalysenko>it is ok if you do it from a single root module, but forcing everyone to do it could be bad for performance
01:05:24  <mikolalysenko>and I wouldn't be surprised if it had other bad side effects when used in v8
01:05:28  <substack>idle speculation
01:05:32  <substack>measure it!
01:05:41  <substack>and we can't measure it until we've got working code!
01:05:54  <mikolalysenko>ok, one sec
01:07:58  * dguttmanquit (Quit: dguttman)
01:14:27  * mikealjoined
01:14:48  <jjjohnny_>whats the way to get shortlink hashes?
01:14:49  <mikolalysenko>ok, I am having trouble thinking of a case where tail call optimization would matter here
01:15:08  * thlorenzjoined
01:16:22  <jjjohnny_>all the hashes i ever get are long. is there a short hash algorithm?
01:16:25  <mikolalysenko>but there is still the bigger issue with async calls and the fact that people still use strict
01:17:07  <substack>in node require() is sync but people don't go around putting require('modulename') in their server loops
01:17:20  <mikolalysenko>probably not
01:17:27  <mikolalysenko>but you still might want to require on an event
01:17:36  <mikolalysenko>for example to execute that script
01:17:37  <substack>not at all!
01:17:46  <substack>because require('browserify-quine') will return a string
01:17:48  <jjjohnny_>that woudl stupid!
01:17:50  <jjjohnny_>be
01:17:52  <jjjohnny_>like me
01:17:59  <substack>so you just var src = require('browserify-quine')
01:18:03  <substack>and then later you do something with `src`
01:18:08  <mikolalysenko>yeah, I got that part
01:18:23  <mikolalysenko>but the trick is that you need to have that browserify quine get required at the start
01:18:33  <substack>but people already require things at the start
01:18:38  <substack>so the convention is already there
01:18:40  <mikolalysenko>well, maybe
01:18:57  <substack>and the docs will make it very clear that the module will only work on the first tick
01:19:10  <substack>anyhow I don't think people who will need web workers will be particularly confused by this
01:19:29  <mikolalysenko>perhaps...
01:19:34  <jjjohnny_>i have a web worker module called work-slave
01:19:46  <mikolalysenko>but I think a bigger issue is that you might want to make modules that internally use workers
01:19:58  * thlorenzquit (Ping timeout: 256 seconds)
01:20:04  <mikolalysenko>for example, imagine a physics module for voxel.js
01:20:08  <jjjohnny_>http://npmjs.org/package/work-slave
01:20:18  <mikolalysenko>where the details of workers should be hidden internally
01:20:32  <mikolalysenko>it is reasonable that even novice users might require such a module
01:20:45  <mikolalysenko>but they should not be expected to know anything about workers to invoke such a script
01:21:09  <mikolalysenko>or in voxel.js it would make sense to use a worker to do meshing
01:21:29  <mikolalysenko>people who use voxel.js should not have to understand workers to run it
01:21:30  <substack>but you would require('worker') on the first tick anyways
01:21:39  <mikolalysenko>maybe
01:21:44  <substack>and if you don't, the module complains at you
01:21:47  <substack>and tells you how to fix it
01:22:07  <mikolalysenko>what if they use strict somewhere though?
01:22:28  <mikolalysenko>it looks bad if the script is telling them not to do that
01:23:59  <mikolalysenko>maybe you could have a flag or something called module-preload that forces it to execute before the bundle loads
01:24:12  <mikolalysenko>I wonder if that could be faked with a browserify transform...
01:24:42  <jjjohnny_>HOW DO THEY REQUIRE FORMULAE IN MATHS?
01:24:42  <LOUDBOT>I THINK MY LINODE LAGGED A BIT LOL
01:25:33  * kirbysayshijoined
01:39:13  * kevino80joined
01:39:14  * kevino80quit (Remote host closed the connection)
01:39:16  * maksimlinjoined
01:54:09  * mk30_quit (Ping timeout: 250 seconds)
01:55:42  * stagasjoined
02:01:09  * tmcwquit (Remote host closed the connection)
02:02:55  * ins0mniaquit (Ping timeout: 264 seconds)
02:04:10  * stagasquit (Ping timeout: 256 seconds)
02:15:35  * thlorenzjoined
02:16:49  * i_m_cajoined
02:19:55  * thlorenzquit (Ping timeout: 246 seconds)
02:21:14  * mikealquit (Quit: Leaving.)
02:24:28  * wolfeidauquit (Remote host closed the connection)
02:26:19  * i_m_caquit (Ping timeout: 264 seconds)
02:56:24  * mikealjoined
02:56:25  * wolfeidaujoined
03:00:26  * st_lukequit (Remote host closed the connection)
03:01:05  * i_m_cajoined
03:11:00  * st_lukejoined
03:16:00  * thlorenzjoined
03:20:52  * thlorenzquit (Ping timeout: 264 seconds)
03:26:49  * thlorenzjoined
03:26:54  * defunctzombiechanged nick to defunctzombie_zz
03:28:00  * whit537quit (Read error: Connection reset by peer)
03:28:01  * defunctzombie_zzchanged nick to defunctzombie
03:28:17  * whit537joined
03:30:32  * thlorenzquit (Remote host closed the connection)
03:41:00  * ricardobeatjoined
03:48:21  * mikealquit (Quit: Leaving.)
04:00:25  <substack>mikolalysenko: I have an idea for a really tiny thing we can do
04:00:38  <substack>in browser-pack just expose the 4th arg as the parent require definition
04:00:57  <substack>then pull it in with arguments[3]
04:16:12  * mikealjoined
04:16:24  * thlorenzjoined
04:16:54  <substack>only 2 extra bytes!
04:17:09  <substack>and then any file can do arguments[3]+'' to get the bundle source!
04:21:04  * thlorenzquit (Ping timeout: 256 seconds)
04:28:20  * whit537quit (Quit: whit537)
04:38:12  * ralphtheninjaquit (Ping timeout: 268 seconds)
04:51:06  * mikealquit (Quit: Leaving.)
04:52:38  * mikealjoined
04:55:04  * pikpikquit (Ping timeout: 256 seconds)
04:56:52  * ryanseddonquit (Ping timeout: 264 seconds)
04:57:00  * ehdquit (Ping timeout: 256 seconds)
04:57:09  * niftylettucequit (Ping timeout: 264 seconds)
04:57:11  * ecquit (Ping timeout: 264 seconds)
04:57:23  * gozalaquit (Ping timeout: 240 seconds)
05:14:28  * kirbysayshiquit (Quit: kirbysayshi)
05:14:30  * calvinfoquit (Quit: Leaving.)
05:16:26  * mikealquit (Quit: Leaving.)
05:16:50  * thlorenzjoined
05:21:15  * thlorenzquit (Ping timeout: 245 seconds)
05:21:36  * st_lukequit (Remote host closed the connection)
05:32:51  * kirbysayshijoined
05:43:23  * mikealjoined
05:48:13  * calvinfojoined
05:54:58  * kirbysayshiquit (Quit: kirbysayshi)
05:55:17  * calvinfoquit (Ping timeout: 248 seconds)
05:56:39  * AvianFluquit (Remote host closed the connection)
05:58:57  * shamaquit (Remote host closed the connection)
05:59:48  * mirkokieferjoined
06:00:55  * Kesslerjoined
06:10:26  * Domenic_quit (Ping timeout: 256 seconds)
06:11:17  * owenb__quit (Ping timeout: 248 seconds)
06:11:35  * sveisveiquit (Ping timeout: 264 seconds)
06:11:42  * Birdbonesquit (Ping timeout: 240 seconds)
06:13:01  * jcrugzzquit (Ping timeout: 246 seconds)
06:13:15  * Domenic_joined
06:15:33  * Raynosquit (Ping timeout: 245 seconds)
06:15:38  * tanepiperquit (Ping timeout: 268 seconds)
06:17:15  * thlorenzjoined
06:20:34  * Raynosjoined
06:21:25  * thlorenzquit (Ping timeout: 248 seconds)
06:23:20  * tanepiperjoined
06:45:40  * wolfeidauquit (Remote host closed the connection)
06:47:05  * Kesslerquit (Ping timeout: 245 seconds)
06:53:49  * ehdjoined
06:54:00  * ryanseddonjoined
06:54:16  * ecjoined
06:55:08  * gozalajoined
06:59:05  * niftylettucejoined
07:05:52  * timoxleyjoined
07:10:04  * frankblizzardjoined
07:11:15  * i_m_caquit (Ping timeout: 245 seconds)
07:13:20  * i_m_cajoined
07:17:41  * thlorenzjoined
07:22:05  * thlorenzquit (Ping timeout: 245 seconds)
07:25:19  * mikolalysenkoquit (Ping timeout: 268 seconds)
07:38:45  * i_m_caquit (Quit: Lost terminal)
07:54:42  * ryanseddonquit (Ping timeout: 256 seconds)
07:55:09  * ryanseddonjoined
08:01:57  * mirkokieferquit (Quit: mirkokiefer)
08:04:29  * jibayjoined
08:07:44  * owenb__joined
08:09:34  * sveisveijoined
08:18:03  * thlorenzjoined
08:22:05  * ecquit (Ping timeout: 245 seconds)
08:22:42  * thlorenzquit (Ping timeout: 256 seconds)
08:23:16  * ryanseddonquit (Ping timeout: 260 seconds)
08:23:44  * gozalaquit (Ping timeout: 260 seconds)
08:23:54  * niftylettucequit (Ping timeout: 268 seconds)
08:25:00  * Guest43223joined
08:30:41  * mikolalysenkojoined
08:35:37  * mikolalysenkoquit (Ping timeout: 268 seconds)
08:35:44  * defunctzombiechanged nick to defunctzombie_zz
08:46:01  * hughskjoined
08:59:55  * mirkokieferjoined
09:07:06  * mirkokieferquit (Quit: mirkokiefer)
09:17:01  * cianomaidinjoined
09:18:31  * thlorenzjoined
09:18:32  * dominictarrjoined
09:23:06  * thlorenzquit (Ping timeout: 268 seconds)
09:32:55  * frankblizzardquit (Ping timeout: 264 seconds)
09:34:20  <rowbit>/!\ ATTENTION: (default-local) paid account successfully upgraded /!\
09:34:20  <rowbit>/!\ ATTENTION: (default-local) vasilievf@... successfully signed up for developer browserling plan ($20). Cash money! /!\
09:42:07  * frankblizzardjoined
09:44:34  * nicholasfquit (Read error: Connection reset by peer)
09:45:03  * nicholasfjoined
09:49:10  * hughskquit (Quit: Leaving.)
09:53:45  * timoxleyquit (Remote host closed the connection)
09:56:49  * timoxleyjoined
10:05:24  * hughskjoined
10:06:27  * chapelquit (Ping timeout: 260 seconds)
10:09:11  * Raltquit (Quit: Bye)
10:09:42  * Raltjoined
10:12:13  * chapeljoined
10:17:59  * timoxleyquit (Ping timeout: 268 seconds)
10:18:52  * thlorenzjoined
10:20:20  * gozalajoined
10:20:20  * ryanseddonjoined
10:20:27  * ecjoined
10:21:22  * ins0mniajoined
10:22:57  * timoxleyjoined
10:23:20  * thlorenzquit (Ping timeout: 245 seconds)
10:26:02  * niftylettucejoined
10:27:28  * timoxleyquit (Ping timeout: 264 seconds)
10:28:04  * jibayquit (Remote host closed the connection)
10:32:04  * timoxleyjoined
10:36:56  * djcoinjoined
10:42:31  * hughskquit (Ping timeout: 264 seconds)
10:43:05  * hughskjoined
10:47:34  * fotoverite_joined
10:48:20  * fotoveritequit (Ping timeout: 245 seconds)
10:48:20  * fotoverite_changed nick to fotoverite
11:00:02  <rvagg>I'm trying to make my first testling badge, it seems to be stuck: https://ci.testling.com/rvagg/node-memdown
11:00:07  <rvagg>how long does it normally take?
11:02:53  * maksimlinquit (Quit: ChatZilla 0.9.90.1 [Firefox 22.0/20130627185035])
11:15:02  * stagasjoined
11:17:10  <rvagg>nmind, found a problem in my package.json
11:18:03  * fotoverite_joined
11:18:31  * fotoveritequit (Ping timeout: 264 seconds)
11:18:31  * fotoverite_changed nick to fotoverite
11:19:17  * thlorenzjoined
11:20:54  * thlorenz_joined
11:23:58  * thlorenzquit (Ping timeout: 268 seconds)
11:28:16  <pkrumins>rvagg: cool! i'll check osx, something is up with ios and safari 6
11:28:57  <rvagg>something is up with my stuff, doing an fs.readdir when it doesn't need to..
11:37:46  * AvianFlujoined
11:40:02  * jolissquit (Quit: joliss)
11:51:57  <ins0mnia>dominictarr: is there any way in mdm to define different wrappers for different streams?
11:52:07  <dominictarr>no
11:52:16  <dominictarr>because they are all inside one stream.
11:52:24  <ins0mnia>ah right
11:52:40  <dominictarr>what sort of things are you sending through?
11:52:51  <ins0mnia>I'm facing a small issue, I'm trying to transport binary-data as is
11:53:13  <ins0mnia>both dnode and mdm .write fail for me because they are a newline seperated JSON's
11:53:14  <dominictarr>what is the binary data?
11:53:23  <ins0mnia>so the conversion to buff fails
11:53:31  <ins0mnia>dominictarr: image and video data
11:53:45  <ins0mnia>dominictarr: which I'm trying to avoid converting to base64 using jsonb
11:53:57  <dominictarr>and are you sending any json objects?
11:54:41  <ins0mnia>not in this case, but it's probably I will need to send json objects as well
11:54:57  <ins0mnia>basically I want to convert whatever comes in to a buffer
11:55:03  <ins0mnia>and transport that
11:55:38  <dominictarr>so, this should work with mux-demux/msgpack
11:55:46  <ins0mnia>the line separated json is a special case, the conversion fails
11:55:54  <dominictarr>can you make a script to reproduce?
11:56:04  <ins0mnia>yeah but msgpack is not stable enough for the browser
11:56:05  <dominictarr>oh, you are sending dnode through it too?
11:56:10  <ins0mnia>well it is but it's slow
11:56:17  <dominictarr>what does "not stable enough" mean?
11:56:18  <ins0mnia>dominictarr: yup
11:56:46  <dominictarr>rpc-stream is a simpler, faster rpc thing
11:56:46  <ins0mnia>dominictarr: the warning in msgpack-stream means I can't use it in production..
11:56:57  <dominictarr>which warning?
11:57:23  <dominictarr>oh rigth
11:57:28  <ins0mnia>dominictarr: WARNING
11:57:29  <ins0mnia>"this module is not recommended parsing msgpack in js is much slower than spliting json into lines and parsing with JSON.parse, which is heavily optimised in all good js implementations"
11:57:38  <ins0mnia>dominictarr: it also doesn't pass IE9 :(
11:57:44  <dominictarr>so, that is because newline json is way faster
11:57:54  <ins0mnia>yes
11:58:09  <dominictarr>it's highly optimised in low levels of v8 etc
11:58:20  <ins0mnia>dominictarr: then again, if I just the thing as a buffer and unpack it that should be sufficient no?
11:58:33  <ins0mnia>convert the buffer back to a json object
11:58:41  <dominictarr>oh, that might be fast
11:58:54  <dominictarr>I don't know, you'd have to do a benchmark
11:58:59  <ins0mnia>dominictarr: so that's my thought, why not use buffers all the way
11:59:28  <ins0mnia>dominictarr: then I could use this for transporting stuff like image binary data as well without needing to use jsonb which converts it to base64
12:00:04  <dominictarr>on my todo list: rewrite mux-demux to work better with binary
12:00:21  <dominictarr>but I'm too busy
12:00:26  <ins0mnia>dominictarr: I have written a binarize-stream module
12:00:27  * hughsk1joined
12:00:29  <dominictarr>would probably be a weeks work
12:00:37  <ins0mnia>dominictarr: a wrapper, which is working fine with mdm
12:01:00  <ins0mnia>dominictarr: the two points of failure right now are dnode (can swap with rpc-stream)
12:01:06  <dominictarr>a wrapper for that stream?
12:01:16  <dominictarr>because mdm will still wrap that into whatever
12:01:23  * ralphtheninjajoined
12:01:33  <ins0mnia>dominictarr: yeah basically, pretty much similar to the msgpack-wrapper
12:02:02  <ins0mnia>dominictarr: except of that I'm using binarize, which pretty much takes any valid input and converts it to a buffer
12:02:14  <ins0mnia>dominictarr: a newline json is not a valid input in this case
12:02:41  <dominictarr>why not? that is just a string?
12:02:49  <dominictarr>msgpack could handle that
12:03:06  <dominictarr>it probably has the same problem that I'm warning about msgpack
12:03:20  * hughskquit (Ping timeout: 245 seconds)
12:03:34  * hughsk1part
12:03:37  <ins0mnia>dominictarr: yeah msgpack seems to be crazy flexible when it comes to this, seen it taking whatever you send to it
12:04:15  <dominictarr>so, you should fork msgpack stream and make a version that does binaryize, so you can compare them in a benchmark.
12:05:13  <ins0mnia>dominictarr: that's the thing I looked at binarize.js and it's pretty damn good, all it does is convert X input type to a buffer and that's all I need
12:05:27  <ins0mnia>dominictarr: so I was thinking to get that instead work with newline jsons
12:05:58  <ins0mnia>dominictarr: then we have buffer under the hood by still relying on mdm wrapper..
12:06:05  <ins0mnia>dominictarr: that's the "idea"...
12:06:31  * jibayjoined
12:08:07  <ins0mnia>dominictarr: mdm createStream would result in something like [ 'c9a2d4fa18f7dbf', 'new', { meta: 'dnode', opts: { writable: true, readable: true } } ] is that too is new line separated?
12:13:21  <dominictarr>so, are you gonna make a new wrapper for mdm that can binarize?
12:13:37  * whit537joined
12:15:24  <dominictarr>ins0mnia: what is the link to that binaryize thing?
12:16:48  <ins0mnia>dominictarr: https://github.com/agektmr/binarize.js
12:17:49  <dominictarr>this example doesn't make sense
12:17:49  <dominictarr>https://github.com/agektmr/binarize.js#how-do-you-use-binarizejs
12:18:01  <dominictarr>why does pack and unpack take a function?+
12:19:46  * thlorenzjoined
12:21:18  * yorickjoined
12:21:38  <dominictarr>ins0mnia: it seems to support strings
12:21:39  <dominictarr>https://github.com/agektmr/binarize.js/blob/master/test/spec/binarizeSpec.js
12:21:47  <dominictarr>(though the tests are pretty hard to read)
12:23:33  <dominictarr>hmm… it has serialize AND pack
12:23:50  <dominictarr>weird
12:23:52  <ins0mnia>dominictarr: sorry back
12:24:00  <ins0mnia>dominictarr: let's see
12:24:28  * thlorenzquit (Ping timeout: 264 seconds)
12:25:47  <ins0mnia>dominictarr: this file is hard to read, but I did something pretty simple which looks like this https://gist.github.com/1N50MN14/afe1b2b94fb5a8acae2a
12:26:03  <ins0mnia>sorry this is wrong hold on
12:26:16  <dominictarr>that won't work
12:26:22  <ins0mnia>dominictarr: updated
12:26:29  <dominictarr>you need to frame the messages
12:27:08  <ins0mnia>dominictarr: right
12:27:14  <dominictarr>look at how msgpack-stream works
12:27:23  <ins0mnia>dominictarr: gonna take a look at it now
12:28:10  <dominictarr>when you start pushing large amounts of data though, the os will group packets together
12:28:23  <dominictarr>hmm, oh it might work with websockets
12:28:31  <dominictarr>but not with tcp
12:29:11  <ins0mnia>dominictarr: ah I see what you did with msgpack-stream
12:29:26  <dominictarr>I basically copied that from creationix/smith
12:29:32  <ins0mnia>dominictarr: I can pretty much use the same thing with binarize
12:29:41  <dominictarr>yeah, that is what you should do.
12:30:04  <ins0mnia>dominictarr: ok I'm gonna give it a go :)
12:30:22  <ins0mnia>dominictarr: thanks dominic, will let you know how it works out
12:30:59  * ralphtheninjaquit (Quit: leaving)
12:59:03  * ricardobeatquit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…)
13:07:54  * fallsemojoined
13:08:13  * pikpikjoined
13:08:59  * pikpikquit (Changing host)
13:08:59  * pikpikjoined
13:08:59  * pikpikquit (Changing host)
13:08:59  * pikpikjoined
13:20:10  * thlorenzjoined
13:21:18  * hughskjoined
13:24:30  * thlorenzquit (Ping timeout: 256 seconds)
13:27:18  * fallsemoquit (Quit: Leaving.)
13:28:49  * thlorenz_quit (Remote host closed the connection)
13:38:22  * blingcoderjoined
13:41:13  * mcollinajoined
13:42:52  * AvianFluquit (Remote host closed the connection)
13:43:09  * thlorenzjoined
13:45:14  * jcrugzzjoined
13:50:23  * mcollinaquit (Read error: Connection reset by peer)
14:04:43  * Kesslerjoined
14:08:35  * ednapiranhajoined
14:09:20  * fallsemojoined
14:12:03  * nicholasfquit (Read error: Connection reset by peer)
14:12:08  * nicholas_joined
14:20:33  * thlorenz_joined
14:22:30  * meschquit (Ping timeout: 245 seconds)
14:23:19  * Domenic_quit (Ping timeout: 264 seconds)
14:24:30  * pikpikquit (Ping timeout: 264 seconds)
14:25:22  * thlorenz_quit (Ping timeout: 256 seconds)
14:29:06  * pikpikjoined
14:31:30  * AvianFlujoined
14:38:16  * Kesslerquit (Ping timeout: 264 seconds)
14:39:17  * mikealquit (Quit: Leaving.)
14:39:28  * Domenic_joined
14:46:00  * No9joined
14:51:26  * dguttmanjoined
14:53:00  * dguttmanquit (Client Quit)
15:07:53  * frankblizzardquit (Remote host closed the connection)
15:12:15  * mikealjoined
15:12:49  * dguttmanjoined
15:18:07  * cianomaidinpart
15:21:02  * thlorenz_joined
15:25:19  * thlorenz_quit (Ping timeout: 240 seconds)
15:25:27  * tmcwjoined
15:39:50  * mikealquit (Quit: Leaving.)
15:43:02  * timoxley_joined
15:43:07  * whit537quit (Read error: Connection reset by peer)
15:43:13  * whit537_joined
15:45:28  * whit537_changed nick to whit537
15:45:50  * timoxleyquit (Ping timeout: 256 seconds)
15:47:15  * kevino80joined
15:48:49  * mikolalysenkojoined
15:49:22  <mikolalysenko>substack: just saw your message, I'm excited if you are going to do what I think you are going to do
15:56:39  * timoxley_quit (Ping timeout: 240 seconds)
16:00:13  * timoxleyjoined
16:03:47  * mikealjoined
16:04:11  * shamajoined
16:16:23  * blingcoderquit (Remote host closed the connection)
16:18:53  * meschjoined
16:21:24  * thlorenz_joined
16:21:41  * mikealquit (Quit: Leaving.)
16:25:50  * thlorenz_quit (Ping timeout: 245 seconds)
16:28:28  * dominictarrquit (Quit: dominictarr)
16:37:45  * soldairjoined
16:40:24  * dguttmanquit (Quit: dguttman)
16:41:42  * dguttmanjoined
16:44:19  * kevino80quit (Remote host closed the connection)
16:44:45  <mikolalysenko>check out this latest ndarray trick: https://github.com/mikolalysenko/ndarray-string
16:47:33  <tmcw>mikolalysenko: interesting, could be useful for utfgrid
16:47:39  <mikolalysenko>yeah
16:47:55  <mikolalysenko>I was actually thinking of combining it with ndarray-sort and making a super short implementation of the burrows-wheeler transform
16:48:00  <mikolalysenko>https://en.wikipedia.org/wiki/Burrows%E2%80%93Wheeler_transform
16:50:44  * calvinfojoined
16:59:37  * mikealjoined
17:01:46  * kevino80joined
17:05:28  * evboguejoined
17:09:16  * AvianFluquit (Remote host closed the connection)
17:21:02  * st_lukejoined
17:21:48  * thlorenz_joined
17:24:31  <mikolalysenko>alright, I went and did it: https://github.com/mikolalysenko/burrows-wheeler/blob/master/bwt.js
17:25:30  <soldair>so clean
17:26:27  * thlorenz_quit (Ping timeout: 276 seconds)
17:27:29  <mikolalysenko>not counting the time required to write the readme and check my email, it only took about 10 minutes
17:28:10  <mikolalysenko>of course it isn't a very optimized implementation...
17:29:30  * thlorenzquit (Remote host closed the connection)
17:31:17  * timoxleyquit (Remote host closed the connection)
17:32:43  * defunctzombie_zzchanged nick to defunctzombie
17:34:00  * thlorenzjoined
17:34:59  * owenb__changed nick to owenb_
17:36:20  * mikolalysenkoquit (Ping timeout: 256 seconds)
17:38:01  * ednapiranhaquit (Remote host closed the connection)
17:39:37  * AvianFlujoined
17:41:28  * calvinfoquit (Quit: Leaving.)
17:45:27  * thlorenzquit (Remote host closed the connection)
17:46:51  * timoxleyjoined
17:48:33  * AvianFluquit (Ping timeout: 276 seconds)
17:50:00  * thlorenzjoined
17:56:21  * thlorenzquit (Remote host closed the connection)
17:58:42  * ricardobeatjoined
17:58:47  * kevino80quit (Remote host closed the connection)
18:06:44  * AvianFlujoined
18:07:25  * ednapiranhajoined
18:11:37  * dominictarrjoined
18:15:18  * calvinfojoined
18:15:33  * owenb_quit
18:15:39  * ricardobeatquit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…)
18:15:54  * owenb_joined
18:16:13  * ricardobeatjoined
18:21:47  * ricardobeatquit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…)
18:22:12  * thlorenzjoined
18:26:14  * thlorenzquit (Ping timeout: 240 seconds)
18:30:20  * ednapira_joined
18:32:12  * ralphtheninjajoined
18:34:03  * ednapiranhaquit (Ping timeout: 276 seconds)
18:36:40  * mirkokieferjoined
18:46:01  * thlorenzjoined
18:50:14  * thlorenzquit (Ping timeout: 240 seconds)
18:50:31  * thlorenzjoined
18:52:59  * thlorenzquit (Read error: Connection reset by peer)
18:53:32  * thlorenzjoined
18:55:22  * thlorenz_joined
18:55:22  * thlorenzquit (Read error: Connection reset by peer)
18:59:25  * thlorenz_quit (Ping timeout: 240 seconds)
19:02:15  * thlorenzjoined
19:04:10  * thlorenz_joined
19:04:10  * thlorenzquit (Read error: Connection reset by peer)
19:06:01  * thlorenzjoined
19:06:02  * thlorenz_quit (Read error: Connection reset by peer)
19:07:50  * thlorenz_joined
19:07:50  * thlorenzquit (Read error: Connection reset by peer)
19:08:51  * dsfadfjoined
19:08:51  * rannmannquit (Disconnected by services)
19:09:00  * thlorenz_quit (Read error: Connection reset by peer)
19:09:29  * Madars_joined
19:09:31  * thlorenzjoined
19:11:05  * mikolalysenkojoined
19:11:05  * thlorenzquit (Read error: Connection reset by peer)
19:11:16  * thlorenzjoined
19:12:38  * jcrugzz_joined
19:12:38  * thlorenzquit (Read error: Connection reset by peer)
19:12:57  * thlorenzjoined
19:13:21  * whit537_joined
19:14:34  * thlorenzquit (Read error: Connection reset by peer)
19:14:53  * thlorenzjoined
19:16:35  * thlorenz_joined
19:16:35  * thlorenzquit (Read error: Connection reset by peer)
19:18:07  * fallsemo1joined
19:18:08  * thlorenz_quit (Read error: Connection reset by peer)
19:18:22  * thlorenzjoined
19:20:15  * whit537quit (*.net *.split)
19:20:15  * fallsemoquit (*.net *.split)
19:20:15  * jcrugzzquit (*.net *.split)
19:20:15  * niftylettucequit (*.net *.split)
19:20:15  * Raltquit (*.net *.split)
19:20:16  * Guest43223quit (*.net *.split)
19:20:16  * spionquit (*.net *.split)
19:20:16  * owen1quit (*.net *.split)
19:20:16  * Madarsquit (*.net *.split)
19:20:17  * thlorenzquit (Write error: Connection reset by peer)
19:20:18  * thlorenz_joined
19:20:21  * whit537_changed nick to whit537
19:21:53  * thlorenzjoined
19:21:54  * thlorenz_quit (Read error: Connection reset by peer)
19:24:48  * mirkokieferquit (Quit: mirkokiefer)
19:26:16  * owen1joined
19:26:42  * thlorenzquit (Ping timeout: 276 seconds)
19:30:06  * Ikeymanjoined
19:36:19  * jcrugzz_changed nick to jcrugzz
19:37:12  * soldairquit (Quit: Page closed)
19:39:15  * dsfadfchanged nick to rannmann
19:39:15  * rannmannquit (Changing host)
19:39:15  * rannmannjoined
19:40:43  * Raltjoined
19:44:15  * jibayquit (Remote host closed the connection)
19:45:58  * Ikeymanquit (Quit: Ikeyman)
19:56:45  * ricardobeatjoined
20:02:52  * ricardobeatquit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…)
20:03:54  <defunctzombie>is github messing up for people?
20:05:38  * mirkokieferjoined
20:08:02  * st_lukequit (Remote host closed the connection)
20:08:30  <mbalho>protip https://status.github.com/
20:09:10  * timoxleyquit (Remote host closed the connection)
20:09:22  * st_lukejoined
20:10:33  <defunctzombie>mbalho: this was before they said they were having issues
20:10:45  <defunctzombie>mbalho: now that page says they know about the issue :)
20:11:07  * kevino80joined
20:12:14  * shama_joined
20:12:22  * shamaquit (Read error: Connection reset by peer)
20:14:27  * evboguequit (Ping timeout: 240 seconds)
20:16:00  * ricardobeatjoined
20:17:33  * mirkokieferquit (Quit: mirkokiefer)
20:23:44  * timoxleyjoined
20:26:43  * ricardobeatquit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…)
20:27:54  * whit537quit (Ping timeout: 240 seconds)
20:29:13  * ricardobeatjoined
20:30:25  * tilgovijoined
20:30:29  * mikolalysenkoquit (Ping timeout: 248 seconds)
20:31:52  * whit537joined
20:32:26  * st_lukequit (Remote host closed the connection)
20:38:47  * shama_changed nick to shama
20:46:36  * ednapira_quit (Remote host closed the connection)
20:46:48  * kevino80quit (Remote host closed the connection)
20:50:29  * thlorenzjoined
20:51:26  * jolissjoined
20:51:45  * jolissquit (Client Quit)
20:59:51  * mikolalysenkojoined
21:00:28  * tanepiperquit (Ping timeout: 264 seconds)
21:05:41  * tanepiperjoined
21:07:49  * st_lukejoined
21:08:17  * kevino80joined
21:14:06  <mikolalysenko>substack: did you figure out a solution to browserify + web workers yet?
21:18:30  * timoxleyquit (Ping timeout: 276 seconds)
21:18:37  * Guest43223joined
21:18:55  * niftylettucejoined
21:24:19  * mikeal1joined
21:24:59  * mikealquit (Read error: Connection reset by peer)
21:25:48  * kevino80quit (Remote host closed the connection)
21:28:15  <hughsk>mikolalysenko: +1. I might have a look at it at campjs next week if nobody else has had any luck :)
21:31:46  <st_luke>does anyone have a decent modular modal?
21:32:04  <st_luke>I don't want to have to build on for the 20th time in the past couple of years
21:34:10  * ricardobeatquit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…)
21:36:30  <jesusabdullah>I think I'm-a write a blog post about setting up a dev environment on osx
21:36:36  <jesusabdullah>it's "special"
21:36:40  <mikolalysenko>yeah...
21:37:05  <mikolalysenko>linux is a vastly superior operating system
21:37:15  <mikolalysenko>but with homebrew you can kind of get by
21:37:18  <mikeal1>linux is a mess
21:37:30  <jesusabdullah>People! PEOPLE!
21:37:31  <mikolalysenko>the key is to just avoid all the other package managers on os x because they are terribly maintained
21:37:37  <jesusabdullah>They're ALL terrible in their own special ways!
21:37:40  <jesusabdullah>WE can ALL be terrible
21:37:44  <mikolalysenko>yeah, I think we can agree on that
21:37:48  <mikolalysenko>and that windows is the worst
21:38:02  <jesusabdullah>except chocolatey might actually be better than homebrew
21:38:14  <jesusabdullah>but yeah other than that!
21:38:29  <jesusabdullah>in a few weeks I'll probs write the same article for windows
21:40:10  * ralphtheninjaquit (Quit: leaving)
21:40:16  <mikeal1>SmartOS is strange but strange for a bunch of reasons that it's smarter than you
21:40:17  <mikeal1>:)
21:41:19  <mikolalysenko>one of my friends ran beos back in undergrad...
21:41:24  <mikolalysenko>now that was a strange operating system
21:41:31  <mikeal1>i was a fan
21:41:36  <jesusabdullah>yeah except for that whole "enomem? fuck crashing I hope you like unresponsive programs!"
21:41:39  <mikeal1>the filesystem was way ahead of its time
21:41:39  <jesusabdullah>thing
22:02:35  * wolfeidaujoined
22:15:26  * tmcwquit (Remote host closed the connection)
22:16:11  <jesusabdullah>question: nvm or nave?
22:26:01  * thlorenzquit (Remote host closed the connection)
22:26:31  * thlorenzjoined
22:27:25  <jcrugzz>give
22:27:49  * thlorenzquit (Remote host closed the connection)
22:28:23  <jcrugzz>jesusabdullah: https://github.com/mmalecki/give
22:28:34  * thlorenzjoined
22:28:42  * AvianFluquit (Ping timeout: 276 seconds)
22:29:20  * thlorenzquit (Remote host closed the connection)
22:30:07  * thlorenzjoined
22:30:25  * ins0mniaquit (Ping timeout: 245 seconds)
22:30:34  * thlorenzquit (Remote host closed the connection)
22:31:38  <substack>mikolalysenko: oh yeah I have a good solution pretty much ready to go
22:32:04  <substack>I'll publish the new browser-pack with the very tiny changes
22:33:15  <mikolalysenko>substack: awesome!
22:35:21  * mikeal1quit (Quit: Leaving.)
22:38:35  <substack>5 extra bytes
22:38:52  <substack>oh wait 7
22:40:22  <substack>mikolalysenko: published in 0.10.0
22:40:26  <substack>now bumping the browserify dep
22:42:09  * mikolalysenkoquit (Ping timeout: 264 seconds)
22:52:22  * mikealjoined
23:06:44  * timoxleyjoined
23:08:41  * stagasquit (Read error: Connection reset by peer)
23:11:52  * fallsemo1quit (Quit: Leaving.)
23:14:31  * jcrugzz_joined
23:15:59  * jcrugzzquit (Ping timeout: 260 seconds)
23:16:40  * timoxleyquit (Ping timeout: 264 seconds)
23:18:29  * jcrugzzjoined
23:18:50  * jcrugzz_quit (Read error: Connection reset by peer)
23:23:29  * No9quit (Quit: Gone to join the choir invisibule)
23:23:59  * timoxleyjoined
23:25:43  <dominictarr>jjjohnny_: http://www.youtube.com/watch?v=lYDDG-OkoVo
23:26:07  * tmcwjoined
23:28:33  * ricardobeatjoined
23:28:38  * timoxleyquit (Ping timeout: 240 seconds)
23:30:35  * timoxleyjoined
23:31:06  * tmcwquit (Ping timeout: 276 seconds)
23:35:52  * timoxleyquit (Ping timeout: 264 seconds)
23:37:19  * timoxleyjoined
23:39:50  * ralphtheninjajoined
23:45:52  * ricardobeatquit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…)
23:57:29  <jesusabdullah>jjjohnny_: raging against the machine I see
23:57:29  * timoxleyquit (Ping timeout: 256 seconds)
23:59:17  * ricardobeatjoined