--- Log opened Wed Jun 05 00:00:13 2013 00:09 < jesusabdullah> substack: how u CI lol 00:11 < substack> http://github.com/substack/cicada 00:11 < substack> testling-ci runs on this lib 00:12 < substack> with https://github.com/substack/github-post-receive set up to catch github web hooks and `git push` them at cicada 00:15 < jesusabdullah> neat 00:29 < jesusabdullah> I think I want parts of that but not the whole enchilada so to speak 00:29 < jesusabdullah> but I bet I can reuse a lot of the deps here 00:34 < substack> rvagg: maybe if I create a ren faire in my backyard steve foxx will show up out of nowhere to knock everything down 00:34 < substack> I can only hope. 01:06 < rvagg> as long as mimes don't show up too 01:36 < jesusabdullah> Yeah I tweeted laughter at substack what of it 02:45 < substack> mikeal: I have no routine at all and go out of my way not to have a routine 02:49 < substack> I wake up some time between 09:00 and 17:00 02:49 < substack> I might eat something right away or go several hours 02:56 < jcrugzz> substack: routine is dangerous 02:57 < jesusabdullah> routine is also healthy 02:57 < jesusabdullah> you should change up your routine definitely but having *some* routine is good 02:58 < jcrugzz> yea, makes the default things easier but yea too many people get caught in perpetual cycles 02:58 < jcrugzz> its terrible 02:59 < substack> I just get really sleepy all the time when I have a routine 03:00 < jesusabdullah> well it's not defaults necessarily that's good about it 03:01 < jcrugzz> yea defaults is ambiguous ha but i mean eating at certain intervals is usually positive 03:02 < jesusabdullah> right 03:53 < jesusabdullah> brb restarting serverbox D: 04:12 < mikolalysenko> I've got this itch to implement partial evaluation in js for js 05:56 < jesusabdullah> sup jlord 06:20 < substack> new quick start guide: http://browserling.com:9005/guide/quick_start 06:21 < substack> 7 more sections to go 06:21 < emilisto> substack: nice :) 06:22 < emilisto> btw, do you know if there's something like hyperstream, but that feeds the stream into an object? 06:22 < emilisto> otherwise I'm writing a module like it 06:31 < substack> emilisto: for json? 06:31 < substack> https://github.com/substack/node-gutter 06:32 < jesusabdullah> substack: I just deployed a wordpress site over ftp what is the world coming to 06:33 < emilisto> substack: sorta, but to populate a javascript object, and then run a method with the object as an argument once all its stream-values have gotten their data 06:33 < emilisto> basically a generalization of hyperstream, where instead of doing trumplet.select(), one can supply an arbitrary method to call with the stream data 06:37 < substack> emilisto: I'm not sure that maps well to what hyperstream does 06:37 < substack> hyperstream emits data as it receives it as text 06:37 < emilisto> hmm, okay 06:37 < substack> it doesn't buffer up the whole result into an object 06:37 < emilisto> https://gist.github.com/emilisto/c43a39cfbfc88645e502 06:37 < substack> what problem does your approach solve? 06:38 < emilisto> I'm thinking of using it like that 06:38 < emilisto> basically being able to feed streams into a template 06:39 < substack> ok so that is actually the same idea then 06:40 < emilisto> but I see how the buffer-it-all-up breaks the stream utility a bit 06:42 < emilisto> using gutter, maxogden's concat() and JSON.parse() would actually do it 06:42 < substack> you wouldn't need gutter or JSON.parse() 06:43 < jesusabdullah> looks good substizzy 06:43 < jesusabdullah> haha fuckin' wordpress man 06:43 < jesusabdullah> so much time has to be spent on figuring out how not to fuck up the database 06:44 < emilisto> substack: ah, cool, didn't know concat worked that way, thanks for the hint :) 07:00 < substack> emilisto: https://gist.github.com/substack/5712095 07:01 < substack> the trickiest part is getting the parameter indexes 07:01 < substack> the streaming stuff is pretty simple 07:07 < jesusabdullah> ugh, "runNpmTasks" makes me want to cry 07:07 < jesusabdullah> am I crazy? Something isn't right with grunt's api 07:07 < substack> haha 07:07 < substack> never used grunt myself 07:07 < substack> I just stick to package.json "scripts" and `npm run` 07:08 < jesusabdullah> yeah 07:08 < jesusabdullah> see what I'm thinking is 07:08 < substack> or a shell script or something simple like that 07:08 < jesusabdullah> if I do any more of these wordpress sites with Joe 07:08 < jesusabdullah> he runs windows 07:08 < jesusabdullah> uses dreameweaver 07:08 < jesusabdullah> and deploys via ftp 07:08 < jesusabdullah> php is new for him 07:09 < jesusabdullah> so like, I'm trying to think of the best possible way to introduce github and real tooling without overwhelming him 07:09 < substack> why doesn't he just use a hosted service instead? 07:09 < jesusabdullah> hosted service? 07:09 < jesusabdullah> you mean like a php paas? 07:09 < jesusabdullah> I was actually just scoping out openshift 07:09 < substack> like blogspot or wordpress.com hosted installs I thought? 07:09 < jesusabdullah> wordpress does yeah, but it's a locked down one 07:09 < jesusabdullah> this is a CUSTOM PHP SITE that JUST HAPPENS to run WORDPRESS 07:09 < jesusabdullah> hehe 07:10 < jesusabdullah> anyways 07:10 < emilisto> substack: thanks man! it's the pause and resume parts of the streams that I gotta learn better, so that's really helpful 07:10 < jesusabdullah> yeah, so 07:10 < jesusabdullah> Maybe what I really want for deployment is a php PaaS 07:10 < jesusabdullah> I bet someone out there's doing it reasonably well 07:10 < jesusabdullah> openshift maybe, I'll have to look 07:10 < jesusabdullah> but either way I need a make replacement 07:11 < jesusabdullah> you know what? I bet I actually "need" very little 07:12 < substack> jesusabdullah: maybe you need to not have the problem in the first place? 07:12 < emilisto> jesusabdullah: I was faced with the same dilemma the other week, trying to make life a little easier for someone using php as his tool of trade 07:12 < emilisto> I think we discovered that google app engine supports php nowadays 07:13 < emilisto> https://developers.google.com/appengine/docs/php/ 07:13 < jesusabdullah> substack: See the cool part is I get to hang out with a friend, teach him shit and get some money on the side 07:13 < jesusabdullah> cool emilisto 07:13 < jesusabdullah> substack: I gotta get him beefed up quite a bit before he's ready to start thinking in terms of a programmer, he's a web designer just doing wordpress stuff to expand his horizons a little 07:14 < jesusabdullah> substack: anyways hacking on mini-build-thing 07:14 < jjjohnny> jesusabdullah: https://page.ly/ 07:16 < jesusabdullah> jjjohnny: looks handy 07:16 < jjjohnny> hosting WP sites is a pain 07:16 < jesusabdullah> jjjohnny: you can still push your own files, resync the db itself, etc? 07:17 < gildean> jesusabdullah: there should be at least a few paas providers that you can use to run more custom php sites, like appfog for example 07:17 < jjjohnny> i dont know 07:17 < jjjohnny> Nowadays I thought you could do pretty much everything from within the WP CMS 07:18 < substack> I blog in markdown. 07:18 < jesusabdullah> gildean: yeah that was my thinking 07:18 < jesusabdullah> yeah and jjjohnny that seems like a reasonable approach as well, it just weirds me out 07:19 < jesusabdullah> I hate the idea of having to physically open something and do clicky-click to update my site XD 07:20 < jjjohnny> yeah 07:21 < jjjohnny> i made it through freelance web development cutting that BS and I aint going back 07:22 < jjjohnny> using wordpress is a not usually the right choice for regular freelance gigs in my exp 07:22 < jjjohnny> now there are many decent hosted site services more tuned to specific needs, can save you lots of time 07:23 < jjjohnny> we'd give people wordpress and they would never touch it 07:23 < jjjohnny> people clients 07:23 < jjjohnny> eventually I switched to rolling CMSs per client 07:24 < jjjohnny> then I bailed on that and moved to the place outside of oz where the shorties dance on yellow brick roads 07:24 < jesusabdullah> haha 07:27 < jjjohnny> my last "client" was my first node.js site to go live, a custom CMS with a tiny admin panel that is hidden but not secured behind any auth :\ 07:27 < jesusabdullah> so what do you do now jjjohnny? 07:28 < jjjohnny> magically I landed an ebay contract as soon as I got to Oakland 07:28 < jesusabdullah> wait, fuck this, I'll use node-tap 07:28 < jjjohnny> that ended 07:28 < jesusabdullah> this is gonna be awesome!! 07:29 < jesusabdullah> oh, no, that won't work cause, derp 07:29 < jjjohnny> CHIRPY DERPIES 07:29 < LOUDBOT> THAT DOESN'T EVEN MAKE SENSE 07:32 < jesusabdullah> I got this 07:47 < jesusabdullah> fuck 07:47 < jesusabdullah> of COURSE the hardest part by far is that you want to basically run bash commands 07:52 < jesusabdullah> okay, new plan 07:52 < jesusabdullah> set up my own windows dev environment, work at it from that angle 07:52 < jesusabdullah> I'll eventually be able to make it a one-click install XD 08:14 < guybrush_> anyone also ran into this error with watchify? -- Error: module "./buffer_ieee754" not found from "/usr/local/lib/node_modules/watchify/node_modules/browserify/node_modules/insert-module-globals/buffer.js" 08:17 < substack> woot https://gist.github.com/substack/5712384 08:17 < substack> I can totes build an ansi fft oscilloscope 08:17 < guybrush_> haha sweet 08:18 < substack> next stop, feeding baudio output into this 08:18 < substack> then real audio files 08:22 < jjjohnny> yay 08:23 < substack> mikola's thing is so much nicer than that other noise on npm 08:26 < jjjohnny> yes i am a fan 08:27 < jjjohnny> substack: the data is in the imaginary numbers array? 08:30 < substack> yes it seems so 08:30 < substack> since I tried a thing and that's where the amplitude data was 08:33 < emilisto> I think that's because the signal's real with amplitude 1, i.e. a coefficient 1 before all the sines - so you get a purely imaginary fft 08:38 < substack> I just want the frequency decomposition 08:39 < emilisto> right 08:56 < emilisto> https://gist.github.com/emilisto/5712587 08:56 < emilisto> fun to see the low frequency disappear when you increase the no. of floats 08:57 < substack> fancy 08:57 < substack> I'm writing a thing so I can convert s16 data from baudio into float64 typed arrays 08:58 < emilisto> what's s16 data? :) 08:58 < substack> signed 16 bit 08:59 < emilisto> ah 08:59 < substack> little endian usually 08:59 < substack> man soxformat 09:01 < emilisto> cool, gotta play around with baudio 09:04 < emilisto> have you tried it in the browser with the audio API? 09:09 < jesusabdullah> ahahaha 09:09 < jesusabdullah> I just wrote a gruntfile in coffeescript because I'm an asshole 09:10 < jesusabdullah> substack: https://gist.github.com/jesusabdullah/9135dde2b4581989e4a4 09:10 < jesusabdullah> oohoohoohoo 09:14 < substack> emilisto: the webaudio module on npm is a drop-in replacement for baudio 09:36 < jjjohnny> emilisto: whats the deal with function abs for determining amplitude? 09:45 < jjjohnny> updates to this Mac OS left git behind 09:45 < jjjohnny> the source code for git is on github 10:15 < missinglink> ahoy 10:15 < jesusabdullah> hey hey 10:16 < missinglink> so what's going in in 'ere then 10:19 < jesusabdullah> n2m 10:23 < missinglink> what'r you hacking/working on jesusabdullah? 10:33 * substack is poking at osillyscopes 10:46 < st_luke> trying to buy a bicycle in germany 10:46 < st_luke> I think I will live here longer term sometime 10:46 < substack> cool! 10:47 < substack> are you in berlin? 10:47 < emilisto_> jjjohnny: it calculates the magnitude of the complex number (real + i*imag), which give the amplitude for that frequency 10:48 < emilisto_> mornin dominictarr 10:48 < dominictarr> good morning 10:48 < dominictarr> the room I am staying in right now has very little natural light 10:48 < dominictarr> I just woke up 10:49 < dominictarr> 12:46 10:51 < substack> dominictarr: the next thing tacodb/leveldb needs is how to build a distributed partition-tolerant twitter with it 10:52 < dominictarr> right, so currently, I'm working on scuttlebutt style master master replication 10:52 < substack> NICE 10:52 < dominictarr> which is basicially what that would be 10:53 < substack> once that works I should be able to trivially drop it into the hyperspace example ui 10:53 < substack> using juliangruber's level-slice thing 10:54 < juliangruber> substack: might be able to continue working on it end of month 10:56 < dominictarr> excellent. now, I gotta find some breakfast! 12:07 < thl0> shoot, github now limited pagesize for their API to 100 12:08 < thl0> used to be 500 12:08 < thl0> is some module out there that aggregates all pages for me or does it need to be written? 12:24 * thl0 started writing github-all-pages 12:24 < substack> pagesize? 12:24 < thl0> max for github is 100 12:25 < thl0> so if I wanna get all your repos for instance I gotta get multiple pages 12:25 < thl0> substack: http://developer.github.com/v3/#pagination 12:26 < thl0> really annoying actually - requires multiple requests, which will each reduce the rate limit for the hour 12:26 < thl0> so mining github for information is quite a challenge :) 12:44 < substack> https://github.com/substack/sillyscope 12:44 < dominictarr> nice! 12:45 < dominictarr> thl0: so, I have this crazy idea for open data... 12:45 < dominictarr> lets call it "data liberation" 12:45 < dominictarr> basically, combine scraping, with peer-to-peer replication 12:46 < dominictarr> so, lets say, currently N people have built apps that must scrape, say, hackernews, and are limited to a rate R requests per hours 12:46 < dominictarr> so, if they each scrape independently then that is N*R requests to HN 12:47 < dominictarr> but, if they cooperate, and then replicate the data between themselves, that is R/N requests 12:48 < dominictarr> they will be able to stay way more up to date, AND it will not put undue strain on HN's servers 13:05 < dools> dominictarr: in effect what it would be is an open cache of urls 13:06 < dools> dominictarr: so in instead of doing file_get_contents($url); i would do file_get_contents('http://opencache.org/?url='.$url); 13:07 < dominictarr> yes, except that opencache.org could also be a service you have running locally 13:07 < dominictarr> if you are contributing to the scraping 13:07 < dools> right ... p2p caching. pretty interesting idea. in fact, you could literally just use bittorrent couldn't you? 13:08 < dools> a "url" is just a file right? it's some data 13:08 < dominictarr> hmm, possibly 13:09 < dominictarr> although, that may not be ideal 13:09 < dominictarr> since generally, most bits of data (such as, a single comment) are fairly small. 13:10 < dominictarr> bittorrent is designed for large files 13:10 < dools> yeah even a typical web page is small by bt standards 13:11 < dools> are you imagining, though, that say, i scrape HN and parse out a bunch of comments, that those *comments* become artefacts in the network? i would think a far simpler concept, and implementation (and in fact far more useful) would just be to provide entire pages, cached as of X minutes ago in a p2p network 13:11 < st_luke> substack: yes, it's pretty neat 13:11 < dools> in a sense, just allowing me to anonymously share my browser cache, but making it programatically available so that if i'm scraping a bunch of sites the data i download is shared with other scrapers 13:18 < dominictarr> dools: interesting point. 13:19 < dominictarr> why would just having the raw pages be more useful? 13:19 < dools> i'm just thinking of the way i scrape data normally ... 13:19 < dominictarr> sure, but what you really want is the data, not the html 13:20 < dools> dominictarr: like i'll go "okay i want to scrape X, so $data = file_get_contents($x); then foreach(parseLinks($data) as $link) scrapeSomehow($link); and then scrapeSomehow gets the thing i'm after (restaurant review text, movie ratings or whatever) 13:21 < dools> dominictarr: so what you'd need is a DSL that created some sort of semantics for the page, where i would say "i want movie ratings" and that you had somehow called it the same thing 13:22 < dools> dominictarr: seems like ... impossible :) it's essentially like in order to make what i scrape available to you i would have to parse and store it in a microformat or some kind of RDF that you would then be able to plug into ... when really just allowing me to xpath out the bits i want is far simpler 13:22 < dools> dominictarr: and the original goal is not to create a "semantic web" but just to allow me to scrape the shit out of sites without them rate limiting me 13:23 < dominictarr> right - but if we all depend on the same sites, and trust each other to replicate the data, 13:24 < dominictarr> then why not also share maintanence of the parsing scripts? 13:24 < dominictarr> otherwise, if the site schema changes, everyone has to update a their code, 13:24 < dominictarr> instead of whoever notices first, and then merge a patch from that person 13:29 < dominictarr> also, that doesn't mean that replicating the caches for each url isn't a good idea 13:30 < dools> right okay you could create a kind of parsing library for high profile and/or popular sites in addition to just having a base level of cache replication i guess 13:30 < dominictarr> hmm, though, in some cases, the data might balloon - like if you have pagination with prepends 13:30 < dools> it doesn't necessarily need replication though 13:31 < dominictarr> dools: yes, that would be up to the scrapers 13:31 < dools> all it means is that when i send a request for $url, the data can come from 8 different people near me 13:31 < dools> like BT 13:31 < dominictarr> dools: it's also an opportunity to get notifications on when a page you are interested in changes 13:31 < dools> i don't know if BT is the right protocol (i have no idea of the overhead) 13:32 < dominictarr> you have to share torrent flies, and they describe how to get the actual contents 13:32 < dools> okay so that sounds about right: 13:33 < dools> when i request a url, it's like a torrent file of the url, which describes how to get the data from that url. then it could compare timestamps to get the most recent versions, and anyone with an outdated version would receive the update pushed to them or something 13:33 < dools> s/data from that/data for that/ 13:34 < dominictarr> yes 13:34 < dools> so you'd still have a central server the same as you do with bt, but the data would be shared via p2p, and then overlaid on top of that basic p2p data sharing would be a series of packages designed to provide standard data formats for popular sites 13:34 < dools> pretty awesome! 13:34 < dools> 2 weeks 13:35 < dominictarr> I need a Dominic#fork method so that I have the bandwidth to work on all this stuff 13:35 < dominictarr> or some Mad Grad Students 13:44 < dools> haha 14:09 < dominictarr> thl0: I have another case where I might need to pass info to a prehook 14:09 < dominictarr> just thinking through it now 14:10 < dominictarr> for replication, when you save key->value, you also save node_id:timestamp->key 14:10 < dominictarr> but when you receive replicated data 14:11 < dominictarr> you want to save it with the node_id:timestamp that you received with it… not create a new ts. 14:11 < dominictarr> hmm, but if you can just iterate over the batch, that is good enough... 14:14 < dominictarr> dools: do you know this album http://www.youtube.com/watch?v=30Acy8Z9jkw 14:32 < dools> dominictarr: nah never heard of it .freaky deaky, might put it on while i work tomorrow 14:33 < dominictarr> you won't regret it 15:57 < jlord> sup jesusabdullah! 16:35 < isaacs> substack: your markdown website thingie should use https://github.com/substack/markdown-directory#example for configs 16:35 < isaacs> er... wait... wrong one 16:36 < isaacs> substack: this: https://github.com/visionmedia/mdconf 16:47 < kessler> 'ello :) 16:49 < dominictarr> houdy 16:54 < dominictarr> Raynos: does your continuable library have a method that transforms a node async function into a continuable returning function ? 16:55 < dominictarr> Raynos: many tiny files is more annoying than one large file 16:55 < dominictarr> need goldilocks file sizes! 16:58 < dominictarr> oh, I see you have maybe continueable 16:59 < dominictarr> but you need toContinuable 16:59 < dominictarr> better to implement all your functions as normal async (as standard) and then transform them to continuables 17:42 < Raynos> dominictarr: hi 17:42 < Raynos> dominictarr: there is maybeCallback in index.js 17:42 < Raynos> dominictarr: it takes an async function that take a cb and returns a function that returns a continuable 17:42 < dominictarr> hmm, I had a look at that 17:43 < Raynos> in fact since it's maybe it returns a function that EITHER returns continuable or takes a callback 17:43 < Raynos> assuming your last argument before the callback is not a function 17:43 < dominictarr> it takes a continuable 17:43 < dominictarr> not an async function 17:44 < Raynos> dominictarr: I use it here https://github.com/Colingo/continuable-mongo/blob/master/collection.js 17:44 < Raynos> dominictarr: oh wait your right. it does the inverse, takes a function that returns a continuable and makes it accept a callback 17:44 < Raynos> dominictarr: the inverse is trivial. callback -> continuable is Function.prototype.bind 17:44 < dominictarr> I'm about to make a pull request to add `to` which does Async -> MaybeContinuable 17:45 < dominictarr> hmm, good point 17:45 < dominictarr> anyway 17:45 < Raynos> dominictarr: https://gist.github.com/Raynos/5715758 17:45 < dominictarr> to(fs.readFile) (filename, 'utf-8') (cb) 17:46 < dominictarr> also, adding series and parallel 17:47 < Raynos> I'm not sure whether it needs series & parallel 17:48 < dominictarr> it does just because you'd assume it's there 17:48 < dominictarr> like, I have a bunch of continuables, and i want to get their values all at once 17:49 < Raynos> dominictarr: continuable-list 17:49 < Raynos> continuable-hash 17:50 < Raynos> https://github.com/Colingo/continuable-hash https://github.com/Colingo/continuable-list 17:50 < dominictarr> is that in the same order? 17:50 < dominictarr> Raynos: okay, cool 17:51 < dominictarr> I'm just gonna make a pr for continuable.to then 17:52 < Raynos> sweet 17:52 < Raynos> for series I would use multiple chain calls 17:53 < dominictarr> https://github.com/Raynos/continuable/pull/9 17:58 < dominictarr> Raynos: can you publish it? 17:58 < Raynos> dominictarr: fixing up publishing in a sec 17:58 < dominictarr> cool= 18:09 < Raynos> dominictarr: v1.1.5 18:09 < dominictarr> Raynos: so, I've immediately hit a situation that could use series 18:09 < Raynos> show me an example 18:09 < Raynos> I presume it could be rewritten using chain 18:11 < dominictarr> series([ 18:11 < dominictarr> list([ 18:11 < dominictarr> put(db1, 'foo', new Date()), 18:11 < dominictarr> put(db2, 'bar', new Date()) 18:11 < dominictarr> ]), 18:11 < dominictarr> list([replicate(m1, m2), replicate(m2, m1)]), 18:11 < dominictarr> list([all (db1), all(db2)]) 18:11 < dominictarr> ]) (function (err, all) { 18:11 < dominictarr> t.notOk(err) 18:11 < dominictarr> //assert that both databases are equal! 18:11 < dominictarr> t.deepEqual(all[0], all[1]) 18:11 < dominictarr> t.end() 18:11 < dominictarr> }) 18:12 < dominictarr> basically, I want an array of continuables, and -> one continuable, but by running each continuable until there is an error, or else, give me the last value 18:13 < Raynos> dominictarr: do you need all the results? 18:14 < dominictarr> no 18:14 < Raynos> just the last one ? 18:14 < dominictarr> only the last result, at should stop at any error 18:15 < Raynos> dominictarr: https://gist.github.com/Raynos/210f8dcc22d218a046b2 18:15 < Raynos> chain stops at errors 18:15 < dominictarr> that is much uglier 18:16 < Raynos> series might be nice syntactic sugar 18:16 < Raynos> the notion with chain is that you care about the result of the previous operation 18:16 < dominictarr> I can make a pull request, I've already implemented it 18:17 < Raynos> dominictarr: https://gist.github.com/Raynos/5715974 18:18 < Raynos> I would make series a seperate module tbh 18:18 < mikolalysenko> substack: I think I found a possible issue in lexical scope. it doesn't seem to handle labels properly 18:18 < dominictarr> it's only 15 lines 18:19 < Raynos> dominictarr: i'd still make it a seperate module 18:19 < Raynos> list, hash & cache are also only 15 lines 18:20 < dominictarr> well, it's your module. okay, I'll publish what I got. 18:26 < Raynos> dominictarr: I have a desire to keep the number of functions in continuable itself small as to reduce the learning / understanding overhead 18:27 < dominictarr> sure 18:28 < Raynos> its actually a difficult balance 18:28 < Raynos> im not sure which way of the balance is better 18:28 < Raynos> its nice to have utilities like pull-stream / underscore / etc has 18:30 < dominictarr> I think there is a point where it's easier to have it in a bundle 18:31 < dominictarr> understore goes too far 18:31 < dominictarr> underscore 18:43 < dominictarr> Raynos: continuable is definately the nicest async control flow thing 18:45 < dominictarr> Raynos: we need an ast transform that can drop the exports that you don't actually use from browserify 18:48 < substack> dominictarr: this is so non-trivial 18:48 < substack> well actually it's not 18:48 < substack> for a few simple cases 18:48 < dominictarr> yes, 18:49 < substack> the general problem of dead code removal is quite tricky 18:49 < dominictarr> yes, agree 18:49 < mikolalysenko> step 1: implement abstract interpretation for javascript. step 2: remove dead code. step 3: profit. 18:49 < dominictarr> it's the sort of thing that *someone* should write 18:50 < substack> weighing the utilitarian value of going to get coffee+food when I still don't have any way of getting more cash 18:50 < mikolalysenko> substack: did you check the patch I submitted for lexical-scope? it is kind of blocking a project I am working on 18:50 < substack> mikolalysenko: I'll take a look 18:50 < substack> mikolalysenko: also I'm using ndarray-fft in https://github.com/substack/sillyscope 18:50 < Raynos> dominictarr: what makes it nice? 18:51 < substack> I can only imagine what you're actually using lexical-scope for! 18:51 < dominictarr> it's terseness mainly 18:51 < mikolalysenko> partial evaluation! 18:51 < mikolalysenko> substack: I am writing a function specializer 18:51 < dominictarr> also, that it is based a conversion Type -> Type 18:51 < mikolalysenko> basically it automatically inlines closures for you 18:52 < mikolalysenko> kind of like bind, but actually improves performance 18:52 < substack> NICE 18:52 < dominictarr> so you can get very consistent apis. 18:52 < substack> mikolalysenko: published 18:53 < mikolalysenko> substack: sweet! also glad you like ndarray-fft, let me know if you have any issues with it! 18:56 < substack> problem: there's a cycle in the `npm install .` 18:57 < substack> isaacs: npm bug 18:57 < substack> isaacs: to duplicate, clone lexical-scope and `npm install .` 18:58 < substack> isaacs: npm gets crazy confused because lexical-scope is a dependency of insert-module-globals is a dependency of browserify is a devDependency of lexical-scope 18:59 < substack> anyhow I just pushed a fix to remove the cycle 19:00 < dominictarr> Raynos: prehaps the best adjective is "lispy" 19:00 < dominictarr> (for continuables) 19:01 < dominictarr> wow, actually... 19:01 < dominictarr> in bash 19:01 < dominictarr> cmd1; cmd2; cmd3; 19:01 < dominictarr> in series 19:02 < dominictarr> cmd1 & cmd2 & cmd3 19:02 < dominictarr> in parallel 19:02 < substack> just use bash! 19:02 < dominictarr> but can you do this in bash? 19:02 < dominictarr> { cmd1 & cmd2 }; cmd3 ? 19:03 < dominictarr> that should execute cmd1 and cmd2 in paralell, but not start cmd3 until 1 & 2 are both finished. 19:04 < substack> (sleep 1 & sleep 2); echo done 19:05 < dominictarr> that just waits for the last one 19:05 < dominictarr> because 19:05 < substack> nevermind, that only waits on the first 19:05 < dominictarr> would be nice if bash did work like this... 19:07 < dominictarr> As soon as I get my time machine fixed I'm gonna go and fix bash. 19:09 < substack> this works: 19:09 < substack> (sleep 2; echo second) & (sleep 1; echo first) & fg %%; fg %%; echo done 19:10 < substack> or appears to 19:13 < dominictarr> that is horrible 19:14 < dominictarr> need compile to bash lang... 19:14 < substack> it could be made into a function 19:14 < dominictarr> so then it's like run these two strings as commands... 19:15 < dominictarr> and then you have to wrestle with way bash escapes stuff 19:15 < substack> function par { $1 & $2 & fg %-1; fg %-2 } 19:15 < dominictarr> and like… how you'd think this should be possible 19:16 < dominictarr> echo 'bash don\'t escape as you\'d expect 19:16 < dominictarr> ' 19:21 < isaacs> substack: what's the git repo to clone? 19:29 < thl0> isaacs: you mean this one? https://github.com/pvorb/node-clone 19:29 < isaacs> thl0: ? 19:29 < thl0> git repo to clone 19:30 < isaacs> thl0: nono, i mean, what git repo did substack want me to clone to reproduce the bug he was referring to at 18:57 UTC 19:30 < isaacs> "18:57 < substack> isaacs: to duplicate, clone lexical-scope and `npm install .`" 19:30 < thl0> ah, never mind then ;) 19:30 < thl0> I had disconnected - kinda like coming late to a meeting - sorry 19:44 < mikolalysenko> substack: is there a good way using lexical scope to find the name of an identifier in the parse tree? 19:44 < mikolalysenko> ie suppose that I am at a node and I find an identifier, how do I figure out which lexical-scope identifier it corresponds to? 19:52 < Raynos> dominictarr: that makes sense. 22:59 < isaacs> substack: you still need a google glass? 22:59 < isaacs> substack: npm just got approved 22:59 < isaacs> substack: of course, it's not free or anything 23:00 < substack> I don't have money. 23:03 < mbalho> lol 23:03 < substack> plus I can't even buy anything online right now 23:09 < chapel> isaacs: can I buy one? 23:10 < isaacs> chapel: there are a few other people i've already promised dibs on it to, if substack were to not want it 23:10 < chapel> :P 23:11 < isaacs> substack: i guess you'd have to show up at the place with money, but i don't know how much it costs. 23:11 < chapel> I really couldn't afford one, but would love to try a pair out someday 23:11 < isaacs> substack: and they don't have red, so npmjs is feeling kinda meh about this. 23:12 < substack> if I was going to buy technology I should probably buy a new laptop instead 23:12 < substack> this laptop has been slowly failing for over a year 23:13 < isaacs> substack: you should try kickstartering for a laptop 23:14 < isaacs> substack: like, "Hey, module users! would you like substack to keep making modules? if you are one of the first 10 people to donate $100, he'll make a module that is a parody of your name, with a drawing of your face in the readme!" 23:14 < chapel> :P 23:14 < chapel> I might donate for that :) 23:15 < substack> if people want to give me money they can already do that 23:15 < isaacs> substack: nono, kickstarter makes them feel like they're a part of something, though 23:15 < isaacs> substack: it tricks us into feeling like it's a team activity 23:17 < substack> kickstarter feels really trashy 23:17 < isaacs> substack: yeah, it kinda makes sense for products that are tangible 23:17 < substack> I keep reading about produces that shouldn't exist being funded with it. 23:35 < Raynos> isaacs, substack: $100 for a parody of myself, where do I sign up? 23:36 < jesusabdullah> hahaha 23:36 < jesusabdullah> I'm not sure how to parody myself 23:36 < jesusabdullah> probably stop taking my meds XD 23:36 < chapel> hows it going jesusabdullah? 23:37 < jesusabdullah> not bad 23:37 < jesusabdullah> just had a phone chat with Eran 23:37 < jesusabdullah> might be flying down for a day or two 23:37 < jesusabdullah> sounds like 23:38 < chapel> cool 23:38 < chapel> bah, make sure you say I referred you! :P 23:38 < jesusabdullah> vaguely surprised eran hasn't pointed me to an issue on spumko 23:39 < chapel> maybe he feels you're vetted already 23:39 < chapel> you definitely have the experience, very easy to see on github 23:39 < jesusabdullah> naw, he straight told me that 23:39 < jesusabdullah> that he felt like I was g2g based on my github and nodejitsu's recommendation 23:39 < chapel> yeah 23:42 < jesusabdullah> dangit I lost kessler's email :( 23:44 < mikolalysenko> check it out: a basic partial evaluator for javascript in javascript! 23:44 < mikolalysenko> https://github.com/mikolalysenko/specialize 23:44 < mikolalysenko> it automatically inlines closures so you don't have to 23:45 < mikolalysenko> substack: you might get a kick out of this ^^^ 23:45 < mikolalysenko> probably has lots of bugs still though 23:46 < pkrumins> jesusabdullah: https://api.github.com/users/kessler/events/public? -> "email": "benkessler@gmail.com" 23:48 < jesusabdullah> pkrumins: different kessler! 23:48 < jesusabdullah> pkrumins: inorite? 23:49 < pkrumins> jesusabdullah: ahh idk 23:49 < jesusabdullah> yeah 23:49 < pkrumins> does he haz githubs? 23:49 < jesusabdullah> yanivk@something 23:49 < jesusabdullah> naw we were just talking yesterday and, uhh, I forgot to ask anything about him XD 23:49 < jesusabdullah> I got caught up in what we were talking about 23:50 < pkrumins> gotcha 23:50 < jesusabdullah> oh sick got it 23:51 < jesusabdullah> I realized that google could tell me immediately if it was a legit gmail account 23:51 < jesusabdullah> due to goog+ 23:57 < substack> sillyscope on a log₂ scale https://github.com/substack/sillyscope#example 23:58 < jesusabdullah> substack: that's pretty sick \m/ I dig it 23:59 < substack> mikolalysenko: neat! 23:59 < mikolalysenko> substack: probably has lots of bugs, but the basic idea works 23:59 < mikolalysenko> it optimistically tries to inline closures, but bails out if it isn't possible --- Log closed Thu Jun 06 00:00:20 2013