--- Log opened Tue Dec 11 00:00:54 2012 01:33 < jjjjohnnny> neo-muturism 02:07 < jez0990__> jjjjohnnny: neo-mutualism? 03:27 < isaacs> substack: http://typicalprogrammer.com/?p=8 03:28 < defunctzombie> https://github.com/shtylman/shtylman.github.com/blob/master/_posts/2012-12-10-npm-bundles-and-solutions.md 03:28 < defunctzombie> anyone that has a minute I would appreciate some feedback 03:28 < defunctzombie> haven't published the post yet 03:28 < defunctzombie> (that is why the syntax parts looks weird) 03:29 < defunctzombie> isaacs: you might be interested since it is about npm :) 03:30 < defunctzombie> and in a positive way ;) 03:30 < fotoverite> defunct you feel like hacking at a cafe tomorrow? 03:33 < defunctzombie> fotoverite: depends which cafe ;) 03:38 < substack> defunctzombie: read it 03:38 < substack> starting to agree that browserify should have a mechanism for handling shims 03:38 < defunctzombie> :) 03:39 < defunctzombie> did it make sense? 03:39 < defunctzombie> I felt like I may have put too many disjoint concepts in there 03:39 < defunctzombie> with the whole different npm dependencies thing 03:39 < defunctzombie> that could be a small post of itself 03:40 < defunctzombie> substack: browserify is the inspiration for script, the only reason script exists is because I wanted to explore the idea of shims and a smaller "require" portion on the client 03:41 < defunctzombie> when I first heard about browserify, I immediately thought.. this.. this makes sense.. this *must* exist 03:41 < defunctzombie> this must be used 03:42 < defunctzombie> the cool thing about shims is that if packages provide them, then a module like engine.io (or sock.js I think too) could be at a point where they don't need to provide any to work on the client 03:42 < defunctzombie> since they just use lower level shims from xmlhttprequest and such 03:43 < fotoverite> probably les tomorrow have an rb meet up I need to go to later in the day. 03:43 < defunctzombie> k 03:43 < fotoverite> I agree that npm makes it easier in the browser then people think 03:47 < fotoverite> And we need to talk more about using npm/ender/WTF so that we can just plug and play. 03:47 < fotoverite> I def think you need to make it more clear and concise what exactly you want to happen and how you want it to happen. 03:47 < defunctzombie> you don't need ender or wtf 03:47 < fotoverite> Focus on engine.io and how shims work 03:48 < rvagg> YOU NEED ENDER 03:48 < LOUDBOT> OSHI-- THAT IS DEFINITELY CHAOTIC EVIL 03:48 < defunctzombie> hahaha 03:48 < defunctzombie> k 03:48 < fotoverite> Try to cut around 1/3 to 1/4 03:48 < fotoverite> sort and sweet. But it's well written 03:50 < fotoverite> Let the tools do the work!! That's your main argument. 03:51 < defunctzombie> among others, but yet 03:53 < Raynos> oh hi 03:54 < Raynos> defunctzombie: your shims idea can be done at run time in the code 03:54 < ik> LOUDBOT: radar love 03:54 < LOUDBOT> ik: I CAME HERE TO LEARN HOW TO FLY AN AEROPLANE! 03:54 < ik> LOUDBOT: whosaid 03:54 < LOUDBOT> Juffo-Wup in #mefi on slashnet 03:54 < Raynos> defunctzombie: https://github.com/Raynos/clientmongo/blob/master/index.js 04:05 < defunctzombie> Raynos: no it cannot 04:05 < defunctzombie> because the bundler doesn't know which file to bring in 04:05 < defunctzombie> also, doing it at runtime is worse, now I have to consider these two different code paths 04:05 < defunctzombie> when they areally are not different paths 04:05 < defunctzombie> the underlying api is the same 04:06 < defunctzombie> doing it at runtime like you have there is a hack because browserify ignores your + " server" thing 04:06 < defunctzombie> but that is unclean 04:06 < defunctzombie> and makes no sense when I look at that code 04:07 < defunctzombie> package.json sims allow for your code to look normal and provide the information out of band 04:10 < Raynos> They are two different code paths 04:10 < Raynos> Your low level library 04:10 < Raynos> that does a split of implementation 04:10 < Raynos> has two implementations 04:10 < Raynos> require("fs") does na internal split 04:11 < Raynos> and either returns nodes implemenation on top of libuv file bindings 04:11 < Raynos> or a browser implementation on top of HTML5 file system 04:17 < defunctzombie> my point is that the file you have there cannot be used in a browser as is 04:17 < defunctzombie> whatever tool you use to make it browser ready will need to bring in the dependencies 04:17 < defunctzombie> in this case the valid dependencies are lib/server and lib/client 04:18 < defunctzombie> which I am guessing both provide the same api 04:18 < defunctzombie> Raynos: https://github.com/shtylman/superagent/blob/master/package.json#L39 04:19 < defunctzombie> https://github.com/shtylman/superagent/blob/master/index.js 04:19 < defunctzombie> this is the same effect except with shims 04:19 < defunctzombie> and no abuse of the "lib" + "server" syntax being ignored 04:20 < defunctzombie> and also not leaving your code to have to do things like if (window === undefined) 04:20 < defunctzombie> or other random checks to determine if client or server 04:20 < defunctzombie> which is already known 04:21 < defunctzombie> in either case, clientmongo is a simple example, engine.io code had some more interested use cases 04:56 < Raynos> defunctzombie: it can be used in the browser as is. 04:57 < Raynos> you just need better tooling 04:57 < Raynos> I prefer the run time switch 04:57 < Raynos> its the exact same thing you do 04:57 < Raynos> to support node 0.4, 0.6 and 0.8 04:57 < Raynos> its the exact same thing you do 04:57 < Raynos> to support IE6, IE7 and IE8 04:57 < Raynos> Its run time feature detection 04:57 < Raynos> Now admittedly doing if (window) is stupid because its not feature detection but is browser sniffing 04:58 < defunctzombie> the tooling is not the problem, you are using a quirk of your tool actually 04:59 < defunctzombie> I can easily write a tool that will handle that + sign 04:59 < defunctzombie> since both parts of the expression are string literals 04:59 < defunctzombie> a better tool would actually detect that and try to then load in that require as well 05:01 < defunctzombie> instead of coding to a quirk, just be explicit about the behavior by specifying the desired result in the package.json file since that is where the pakcage is described in the first place 05:02 < defunctzombie> if the tool you were using used the shim field in package.json you would have just done that 05:02 < defunctzombie> you used the + because that was a quirk/limitation of the tool to get some side behavior (there is nothing wrong with that btw) 05:03 < Raynos> defunctzombie: specificying it in the package.json doesnt scale 05:03 < defunctzombie> I am just trying to explain what I believe to be a cleaner, more explicit way to do it 05:03 < Raynos> you going to specificy what shim to use for rhino? 05:03 < Raynos> your going to specify what shim to use windows8 ? 05:03 < defunctzombie> again this argument about all these environments 05:03 < defunctzombie> it doesn't exist 05:03 < defunctzombie> no 05:03 < defunctzombie> the shims are for client side (browser targets) 05:03 < defunctzombie> the shim field scales just fine 05:03 < defunctzombie> these made up arguments about other environments is non existent 05:04 < Raynos> But this is jsut bikeshedding 05:04 < Raynos> the point is 05:04 < defunctzombie> no one is using them 05:04 < Raynos> you have low level libraries 05:04 < Raynos> that abstract host environments 05:04 < defunctzombie> there is node js and there is browser 05:04 < Raynos> and the rest of your code is clean 05:04 < Raynos> and it works in all environments 05:04 < defunctzombie> yes.. and in your case hte code is not clean 05:04 < Raynos> I use browserify: field for this 05:04 < defunctzombie> shim is an extension of that concept 05:04 < Raynos> oh the code that wraps host environments is never clean 05:04 < defunctzombie> that provides more flexibility 05:05 < Raynos> shim should just provide an alternative index.js 05:05 < Raynos> thats all you need 05:05 < defunctzombie> look at the engine.io example 05:05 < defunctzombie> no 05:05 < defunctzombie> that is not all you need 05:05 < defunctzombie> engine.io example 05:05 < defunctzombie> very little is shimmed 05:05 < defunctzombie> the rest of the code is re-used 05:05 < Raynos> i actually fixed engine.io 05:05 < Raynos> so it can be used with browserify 05:05 < defunctzombie> yea 05:05 < defunctzombie> the fi is bad 05:05 < defunctzombie> (require)(foo) 05:06 < defunctzombie> is a very very bad way to do it 05:06 < defunctzombie> again.. a quirk of the tool, but not a good way to do it since looking at that I know nothing about wtf is going on 05:06 < Raynos> not really 05:06 < defunctzombie> yes really 05:06 < Raynos> shim in the package.json is the exact same 05:06 < Raynos> you ahve to read the fucking package.json 05:06 < Raynos> to figure out 05:06 < Raynos> at least (require)(foo) is in the code 05:06 < Raynos> and you can see its a fork in the code 05:06 < defunctzombie> no it isn't 05:06 < defunctzombie> require)(foo) 05:06 < defunctzombie> means I have to have learned some random information somewhere 05:07 < defunctzombie> that is not even documented 05:07 < Raynos> same with shim 05:07 < Raynos> your just bikeshedding 05:07 < defunctzombie> no it isn't 05:07 < defunctzombie> anyhow 05:07 < defunctzombie> in one case you are describing the package 05:07 < defunctzombie> in anothre you are reshaping the language 05:08 < Raynos> not reshaping the language 05:08 < Raynos> simply putting hints in the tools 05:08 < Raynos> because the tools dont auto figure it out 05:08 < Raynos> you put hints in the package 05:08 < Raynos> I put hints in the code 05:08 < defunctzombie> the hint not in the tool here 05:08 < Raynos> sure the browiseryf hack 05:08 < defunctzombie> yes.. but this is silly 05:08 < Raynos> should be well documented 05:08 < defunctzombie> because (require)(foo) 05:08 < defunctzombie> is valid js 05:09 < defunctzombie> what you are talking about is metadata 05:09 < defunctzombie> not code 05:09 < defunctzombie> and that should be in package.json 05:09 < Raynos> but thats irrelevant 05:10 < Raynos> (require)(foo) never gets executed on the client 05:10 < Raynos> if (1 === 0) process.exit(42) 05:10 < Raynos> doesnt kill your app 05:10 < defunctzombie> ? 05:10 < defunctzombie> (require)(foo) is valid js 05:10 < defunctzombie> why wouldn't it be executed 05:10 < defunctzombie> is should be executed 05:10 < defunctzombie> in my code it is executed 05:11 < Raynos> its not 05:11 < Raynos> because thats the server path 05:11 < Raynos> its only executed on the server 05:11 < Raynos> not in the browser 05:11 < defunctzombie> it isn't 05:11 < Raynos> because its 05:11 < defunctzombie> that is my point 05:11 < defunctzombie> it is not the server path 05:11 < defunctzombie> it is js in your codebase 05:11 < Raynos> it is 05:11 < Raynos> oh cmon. 05:11 < defunctzombie> that you would expect to be as is 05:11 < Raynos> there is an IE8 path 05:11 < Raynos> and theres a chrome path 05:11 < defunctzombie> ? 05:11 < Raynos> in IE8 you use localstorage 05:11 < Raynos> in chrome you use indexeddb 05:12 < Raynos> its a split, a fork. 05:12 < defunctzombie> so 05:12 < Raynos> so the indexeddb code 05:12 < Raynos> will crash in IE8 05:12 < Raynos> just like the nodejs code will crash in IE8 05:12 < Raynos> it should not be executed 05:12 < defunctzombie> look, I mean... honestly. to me this is one of those things that either makes sense or you doesn't and you can continue to do it your way 05:12 < defunctzombie> to me (require)(foo) 05:12 < defunctzombie> is total bs 05:12 < Raynos> (require)(code) is a compiler hint 05:12 < Raynos> that's all it is 05:13 < Raynos> its a hint to tell browserify 05:13 < Raynos> dont bundle it 05:13 < Raynos> its like a C pragma 05:13 < Raynos> to tell the compiler "actually I know better, do this instead" 05:13 < Raynos> I agree its a shit API 05:13 < Raynos> but who gives a fuck 05:13 < defunctzombie> preprocessor is satan 05:13 < Raynos> im not going to rewrite browserify 05:13 < defunctzombie> Raynos: I give a fuck 05:13 < Raynos> if you do 05:13 < Raynos> and its better 05:13 < defunctzombie> because I like to make things better 05:13 < Raynos> then let me know 05:13 < defunctzombie> and I like to propose what I think are better ways going forward 05:14 < defunctzombie> you are using (require)(foo) not because you like it but because that was there 05:14 < defunctzombie> I did make something I like better 05:14 < Raynos> the problem is 05:14 < defunctzombie> my post was not vaporware ;) 05:14 < defunctzombie> I use what I made 05:14 < Raynos> is your tool better then browserify 05:14 < defunctzombie> the first iterations didn't have these things 05:14 < Raynos> does it have the same test coverage 05:14 < Raynos> is it faster 05:14 < defunctzombie> for my needs it is better 05:14 < Raynos> does it compile to somethign smaller 05:14 < defunctzombie> yes 05:15 < Raynos> how do I swap it out in production 05:15 < defunctzombie> however you want 05:15 < Raynos> how do I trust you to not break my code :D 05:15 < defunctzombie> I dunno how you do it in production 05:15 < defunctzombie> how do you trust anyone? 05:15 < Raynos> i trust substack by sheer chance 05:15 < defunctzombie> look.. it is a module I am working on to solve some use cases I have 05:15 < Raynos> and by knowing a great deal about the browserify internals 05:15 < defunctzombie> but when those internals change? 05:15 < Raynos> But sriously 05:15 < Raynos> link. 05:16 < defunctzombie> link to what? 05:16 < defunctzombie> I use it through my middleware 05:16 < Raynos> to your compiler 05:16 < defunctzombie> https://github.com/shtylman/node-script 05:16 < defunctzombie> that is the tool 05:17 < defunctzombie> if you like browserify I would stick with that honestly 05:17 < defunctzombie> my goal is not to replace browserify, I would be using browserify if it did the things i needed :) 05:17 < defunctzombie> and maybe one day it will 05:17 < Raynos> no manual build step is bullshit 05:17 < defunctzombie> ? 05:17 < defunctzombie> there is a cli 05:18 < defunctzombie> for your manual build step if you want 05:18 < defunctzombie> personally I think manual build step is bs, so ;) 05:18 < defunctzombie> I have a computer 05:18 < defunctzombie> if I wanted manual work 05:18 < defunctzombie> I wouldn't have a computer 05:18 < Raynos> the problem with doing it dynamically 05:18 < Raynos> is that its too slow 05:18 < Raynos> doesn't scale 05:18 < defunctzombie> it scales 05:18 < defunctzombie> it is fast 05:18 < Raynos> the best you can do is do it on a watch 05:18 < defunctzombie> and I don't have any of those problems 05:19 < Raynos> either your one isnt as slow as browserify 05:19 < Raynos> or your not using enough code 05:19 < defunctzombie> I have plenty of code and it works fine 05:19 < defunctzombie> maybe you have more code.. I dunno 05:19 < defunctzombie> honestly it hasn't been a problem 05:19 < defunctzombie> so I can't speak about it as if it is a problem for me 05:20 < Raynos> maybe ill give it a try some itme 05:20 < defunctzombie> I am the only one that uses it 05:20 < defunctzombie> (most likely) 05:20 < defunctzombie> I am not trying to convince you to use it ;) 05:21 < Raynos> oh but I want an alternative to browserify 05:21 < Raynos> browserify sucks 05:21 < Raynos> its too slow 05:21 < Raynos> too complex 05:21 < Raynos> doesnt have all the features 05:21 < defunctzombie> james is making it better 05:21 < Raynos> by removing features 05:21 < defunctzombie> heh 05:21 < Raynos> and telling people to unix pipes whatever they want :P 05:21 < defunctzombie> well, the idea is that the core can be simpler 05:21 < defunctzombie> what features do you want? 05:22 < defunctzombie> everyone has their list of features 05:22 < defunctzombie> the question is does it need to be integral to the tool or something bolted on :/ 05:23 < st_luke> Yo substack 05:27 < substack> hoy 05:31 < Raynos> defunctzombie: performance. That's the only feature I want 05:31 < Raynos> MORE PERFORMANS 05:31 < LOUDBOT> I RECORDED QUAKE LIVE SO I COULD TIMESHIFT IT FOR MY PARENTS 05:31 < Raynos> PER FORE MANS 05:31 < LOUDBOT> I THOUGHT IT WAS CHARLIE SHEEN 05:32 < defunctzombie> Raynos: performance needs more clarification :) and usually depends on your use case 05:32 < Raynos> less size 05:33 < Raynos> faster compilation 05:33 < guybrush> raynos browserify is too slow? 05:33 < Raynos> client side caching 05:33 < guybrush> wtf where do you need it being so fast 05:33 < defunctzombie> client side caching is not a browserify issue 05:33 < Raynos> also sharing dependencies across multiple bundles 05:33 < defunctzombie> you can do that 05:33 < defunctzombie> yes, sharing deps is important.. that is another thing I needed script to do 05:33 < guybrush> you have so much code? 05:33 < Raynos> guybrush: the part where I hit ctrl + S and my browser refreshes with the new code instantly 05:33 < defunctzombie> but some of the other things I think is outside the scope of the bundler 05:33 < Raynos> INSTANTLY 05:34 < Raynos> client side caching is outside of teh scope of the bundler 05:34 < guybrush> i dont know, but the google-thing sounded cool 05:34 < defunctzombie> Raynos: if you have middleware then it works instaly 05:34 < guybrush> the google code server experiment whatever thing 05:34 < defunctzombie> and will load on demand 05:34 < Raynos> ... 05:34 < Raynos> loading on demand requires a server 05:34 < Raynos> it can work 05:34 < Raynos> but it requires speed 05:34 < Raynos> everything requires speed 05:34 < defunctzombie> works for me 05:34 < defunctzombie> maybe I have better computers ;) 05:34 < Raynos> last time I tried it 05:34 < Raynos> browserify took 3s 05:35 < defunctzombie> for what amount of code? 05:35 < guybrush> wow :D 05:35 < Raynos> I do have 2MB of uncompressed JS 05:35 < Raynos> < WRITES REAL APPS 05:35 < LOUDBOT> LOCK UP THE BABIES, DJ CRUNCHER IN THE HOUSE! 05:35 < defunctzombie> more code doesn't make a real app ;P 05:35 < defunctzombie> maybe you write too much code ;) 05:36 < Raynos> $ npm ls | wc -l 05:36 < Raynos> 338 05:36 < guybrush> that must be like 3dstudiomax in the browser 05:36 < Raynos> REAL MEN HAVE OVER 300 DEPENDENCIES 05:36 < LOUDBOT> ANDROIDS DREAM OF CUPCAKES AND DONUTS AND ECLAIRS 05:36 < defunctzombie> um 05:36 < defunctzombie> that probably included sub dependencies 05:36 < defunctzombie> and is all that being bundled up? 05:36 < Raynos> $ npm ls | wc -l 05:36 < Raynos> 386 05:36 < Raynos> Oh wow 05:36 < Raynos> that other one has 386 >_< 05:37 < guybrush> haha 05:37 < Raynos> thats just stupid 05:37 < defunctzombie> Raynos: also, yes, script is faster because I use a different version of node-detective 05:37 < guybrush> Raynos: you are rolling your production with git or npm? :D 05:37 < Raynos> git 05:37 < Raynos> npm is way too slow 05:37 < Raynos> for production 05:38 < defunctzombie> one of the things it doesn't do is the (require)(foo) stuff, which allows it to be faster since it removes range changes in esprima 05:38 < Raynos> REWRITE ALL THE TOOLS. DONT BREAK API. JUST INCREASE SPEED 05:38 < defunctzombie> ? 05:38 < LOUDBOT> #IGETSOMADWHEN THAT BITCH DOESN'T REMEMBER TO COOK THAT DAMNED ROAST BEFORE I GET HOME 05:38 < defunctzombie> npm is too slow? 05:38 < defunctzombie> wtf... 05:38 < Raynos> npm install takes like 2 minutes 05:38 < defunctzombie> why do you need it to be faster 05:38 < Raynos> and crashes half the time 05:38 < defunctzombie> maybe you need less deps ;) 05:38 < substack> more deps 05:38 < defunctzombie> or realize that a large project will just time time to install 05:39 < guybrush> every function should be a dep haha 05:39 < Raynos> substack: $ npm ls | wc -l 386 05:39 < defunctzombie> if you install all the time maybe clone the npm repo 05:39 < Raynos> Surely that's wrong right? 05:39 < defunctzombie> and install locally 05:39 < defunctzombie> people have been doing this with debian repos for ages 05:39 < Raynos> guybrush: +1 05:39 < defunctzombie> anyhow.. if npm is slow.. see how you can make it faster ;) 05:40 < defunctzombie> again, I don't have a problem with its speed so can't help there :D 05:40 < Raynos> the thing is 05:40 < Raynos> I dont feel like fixing all these problems 05:40 < Raynos> I write too much code. 05:40 < defunctzombie> if you don't fix your problems 05:40 < defunctzombie> then either they are not serious enough 05:40 < Raynos> I need to inspire other people 05:40 < Raynos> to fix my problems 05:40 < Raynos> this is optimum 05:40 < guybrush> good thinking 05:40 < defunctzombie> or you don't care about them 05:41 < Raynos> I have too much to do ._. 05:41 < Raynos> I have to give a talk on thursday about leveldb & p2p 05:41 < Raynos> and I havn't finished the demos 05:41 < guybrush> Raynos: did you try to go the component route? 05:41 < defunctzombie> NO 05:41 < guybrush> like write a stupid component.json in every pkg 05:41 < guybrush> haha 05:42 < defunctzombie> jesus christ 05:42 < defunctzombie> as if we couldn't think of a way to make this even more confusing 05:42 < guybrush> omg WHY not just use package.json, we could all just be happy and agree on that :D 05:42 < defunctzombie> fucking rpm vs deb all over again 05:43 < Raynos> guybrush: I will puke. 05:44 < Raynos> TJ is excellent 05:44 < Raynos> at writing things that are just good enough 05:44 < Raynos> and getting everyone to waste their time using tools that are basically not good enough 05:45 < defunctzombie> don't be a hater ;) 05:45 < guybrush> Raynos hates just everything but streams 05:45 < guybrush> esp middlewares 05:45 < Raynos> Not true! 05:45 < Raynos> I hate streams too 05:45 < Raynos> Fucking hate streams. 05:45 < Raynos> Far too complex 05:46 < Raynos> if theres anywhere you will find it a bug with streams 05:46 < Raynos> I garantuee its in mux demux! 05:54 < guybrush> https://github.com/google/module-server looks cool 05:56 < Raynos> yeah but it feels overkill :D 05:58 < guybrush> well i think bfy just is the best solution right now 05:58 < guybrush> as soon as there is need for multiple bundles just deal with it and load the extra code 05:59 < Raynos> well I am loading multiple bundles 05:59 < Raynos> it just runs into the npm dedup problem 06:00 < guybrush> crazy 06:00 < Raynos> which sucks 06:00 < guybrush> if its really a hard problem for you, its time for you to step in and fix it :ppp 06:02 < Raynos> No! 06:02 < Raynos> I want to write less code 06:02 < Raynos> nore more 06:05 < guybrush> they should solve the problem in node-core!! 06:05 < guybrush> it just doesnt fit the userland haha 06:11 < Raynos> they should solve all problems in node-core!! 06:12 < Raynos> node-core should just require("hoarders") 06:12 < guybrush> haha 06:34 < substack> ok so mocha is giving me invalid tap output >_< 06:35 < substack> the tap reporter doesn't behave the same in the browser as the server 06:36 < ik> guess it's time to switch to C# 06:36 < substack> I GUESS SO 06:36 < LOUDBOT> BY WHICH I MEAN A GLASS OF WINE 06:36 < substack> ik: I actually really hate mocha and prefer tiny things that just print strings to stdout 07:12 < defunctzombie> substack: I prefer for my code to test itself 07:12 < defunctzombie> and yearn for the singularity 07:12 < defunctzombie> which will allow suck marvels 07:13 * substack likes unclever tests 07:14 < ik> nerp 09:32 < juliangruber> substack: do you understand why someone would write something like mocha? 10:41 < guybrush> substack: i dont like that tape doesnt display linenumbers 10:41 < guybrush> or do i miss something? 10:43 < juliangruber> guybrush: do you do t.equal(1, 2, 'my super helpful message') ? 10:45 < guybrush> yes 10:45 < guybrush> somehow i really like just using async and assert :D 10:47 < guybrush> i like mocha because its easy to just drop mocha and use mocha-test-files with anything else 10:48 < guybrush> just require the file and iterate through the export 10:48 < guybrush> that is, when you write exports-style 10:49 < juliangruber> guybrush: that's nice with mocha, it just works as you'd expect it to. therefore it's not "correct" 10:49 < guybrush> i dont understand that :p 10:50 < guybrush> i have javascript files with module.exports = {foo:function(){},bar:{blub:function(){}}}, thats how i like to write test-files, or even module.exports = function(){} 10:51 < guybrush> others may prefer not exporting but just executing the test-functions 10:51 < juliangruber> oh 10:51 < guybrush> but with the way i like to do it, i can easily implement things like keywords and stuff 10:51 < juliangruber> I don't doo that 10:51 < juliangruber> do 10:51 < guybrush> grep meta-information and things 10:52 < guybrush> but usually i just run mocha since it just works with that style 10:52 < juliangruber> I guess I never needed that much flexibility and meta info for tests 10:53 < guybrush> really i just like that its possible (and fits my mind and stuff) 10:54 < guybrush> in the end all that matters is to have tests at all :p 10:54 < juliangruber> yup :) 17:44 < ik> hi 19:24 < dominictarr> st_luke, ping? 20:11 < st_luke> dominictarr: pong 20:11 < dominictarr> st_luke, hey whats up? how are you enjoying funemployment? 20:12 < st_luke> dominictarr: not quite yet, I'm still doing a little bit of lingering at the company cause I want to get some of the new people squared away 20:14 < st_luke> how long are you in town? I've got an extra cell phone you're free to borrow for as long as you need if you want to be on the grid 20:18 < dominictarr> st_luke, ah good 20:19 < dominictarr> I'm in town until the 26th! 20:19 < dominictarr> a phone would be handy. I have a feeling that new york is gonna be a phone town. 20:21 < dominictarr> okay, going to meet paolo, bbiab. 20:21 < st_luke> dominictarr: cool man, I'll be around 20:44 < defunctzombie> st_luke: want to go to that dessert place tonight? 21:20 < st_luke> defunctzombie: probably not tonight, I drank a bit too much last night and am still feeling a bit ill from it 21:20 < fotoverite> was that way last week not fun. 21:21 < st_luke> yeah I guess this is why I don't usually drink 21:23 * substack investigates why mocha's tap output is completely broken in the browser 21:24 < substack> slaskis, defunctzombie: I'm considering putting a "harness" field in the testling field in package.json that will handle all the harness issues when set to "mocha" 21:25 < substack> once I get this stuff working in the first place that is 21:25 < slaskis> substack: haha, sounds great 21:27 < substack> then the next big part will be running server components as part of a browser test 21:27 < substack> I want this for repos like dnode and shoe 21:29 < pkrumins> substack: did you hear back about the other invoice? 21:30 < pkrumins> if not let me know and i'll contact the people 21:33 < substack> not yet 21:33 < substack> give them a bit more 21:33 < pkrumins> alright! 21:33 * substack getting mocha tests running on testling-ci 21:34 < substack> it's pretty close except that mocha isn't giving valid tap in browser mode 21:34 < pkrumins> that is amazing 21:34 < slaskis> is it different tap output compared to the server? 21:35 < substack> yes 21:35 < substack> here's an example: 21:35 < substack> https://gist.github.com/4262317 21:36 < slaskis> oh 21:36 < substack> for the same test file 21:36 < slaskis> so it's the string formatter of console.log that doesnt work in the browser 21:36 < substack> aha! 21:36 < substack> that would explain it 21:36 < slaskis> :) 21:37 < slaskis> i've had similar issues 21:37 < substack> except that it also reports a failing test 21:37 < substack> for some reason 21:37 < substack> I'll shim out the formatter part though 21:37 < slaskis> %d for one thing doesn't even work with 0 in chrome which is dumb 21:37 < substack> crazy 21:37 < slaskis> it formats it as an empty string 21:38 < slaskis> wait, gist has changed a lot 21:38 < slaskis> since like, hours ago 21:38 < substack> yes 21:39 < substack> they just rolled out big changes 21:40 < slaskis> cool 21:55 < Raynos> http://www.meetup.com/East-Bay-HTML5/events/91451482/ 21:55 < Raynos> substack: Your comign to that right? 21:55 < substack> yep 22:01 < isaacs> mbalho: http://imgur.com/y779M 22:01 < fotoverite> O god. 22:02 < fotoverite> I don't know that's better or worse then http://trotify.com/ 22:08 < substack> slaskis: I've got the mocha example working locally now 22:09 < substack> thanks for noticing the %[ds] thing! 22:09 < slaskis> substack: cool! 22:09 < slaskis> let me know if you want me to try it out 22:09 < slaskis> np 22:09 < substack> great! 22:12 < substack> rolling this out pretty soon 22:12 < substack> pkrumins is on it right now in fact 22:13 < ik> \o/ 22:14 < ik> | that guy! 22:14 < ik> / \ 22:14 < pkrumins> it's running! 22:15 < st_luke> 930 modules until 20000 22:15 < st_luke> I mean 929 22:15 < fotoverite> Woot, need to run my states and regenerate my graphs 22:20 < substack> http://ci.testling.com/substack/mocha-testling-ci-example !!! 22:20 < slaskis> woohoo! 22:20 < slaskis> are those ie errors expected? 22:20 < substack> well I guess mocha just doesn't work in ie yet 22:21 < substack> the other browsers are fine 22:21 < slaskis> ooh 22:22 < substack> ok so the next thing I'll do is add the "harness": "mocha" field I talked about earlier 22:22 < substack> defunctzombie: it works now! http://ci.testling.com/substack/mocha-testling-ci-example https://github.com/substack/mocha-testling-ci-example 22:28 < slaskis> it might be should.js that's not supported in ie. i think it uses some es5 stuff. what if you'd use expect.js? (also common w. mocha) 22:28 < slaskis> or a plain assert 22:30 < defunctzombie> substack: nice! so all that is needed is "harness": "mocha" and no other files? 22:31 < substack> yes once I write that part 22:31 < substack> slaskis: trying with plain asserts 22:32 < substack> it works :D 22:32 < slaskis> fun! 22:33 < substack> http://ci.testling.com/substack/mocha-testling-ci-example 22:34 < slaskis> magic :) 22:34 < pkrumins> sweet 22:34 < defunctzombie> \o/ 22:34 < slaskis> your output page sure does not like long project names :P 22:35 < defunctzombie> substack: let me know when you think it is reasonable and I will throw my int and num packages on there :) 22:35 < substack> slaskis: yep I'll fix that in a bit 22:35 < substack> defunctzombie: sweet 22:36 < defunctzombie> I use those browser side quite a bit so I will be happy to be a guinea pig 22:36 < substack> this approach seems really solid so far 22:37 < defunctzombie> k 22:55 < CoverSlide> http://i.minus.com/ijCBM2h1of0vE.gif 22:58 < dominictarr> fotoverite, you know the ace? paolo is recommending it 22:59 < hij1nx> yep ace hotel might be nice for drinks right now 22:59 < hij1nx> less crazy during the weekday +has drinks/internet 23:00 < hij1nx> http://www.acehotel.com/newyork/dining 23:03 < mbalho> isaacs: that is meant for me 23:09 < isaacs> mbalho: almost 23:09 < isaacs> it'd be better if it was a cat 23:09 < isaacs> mbalho: but yes, i think they had you in mind. 23:45 < jjjjohnnny> High Frequency Trading Bots acting like scalpers http://www.zerohedge.com/news/2012-12-11/guest-post-five-minute-example-hft-shenanigans 23:50 < Raynos> substack: https://github.com/airportyh/testem/pull/124 tape's output is different from tap for `.stack` property. How should tap consumers handle these edgecases cleanly? 23:51 < substack> tap consumers should be really really lenient about accepting so-called malformed input 23:55 < dominictarr> "differently formed" would be more PC 23:55 < dominictarr> or "schema challenged" 23:56 < Raynos> isaacs, substack: tape / tap has a Test.prototype.throws thats not back compat with assert.throws. 23:56 < Raynos> This is >:( 23:56 * substack just copied tap 23:57 < substack> Raynos: you should write tap-assert 23:57 < substack> exactly the node assert api but it outputs tap 23:57 < Raynos> that would be good 23:57 < Raynos> way lighter then tape 23:57 < Raynos> and tape can use it 23:57 < Raynos> but not now! :P --- Log closed Wed Dec 12 00:00:01 2012