2009-12-17:
[12:40am] <ashb> deanlandolt> you mean something like http://www.opensource.org/licenses/alphabetical but in a scrabable form?[12:41am] <deanlandolt> sure, but in a json form, and not necessarily just open source licenses (though, that's about all that would make sense)[12:43am] <deanlandolt> and not all hosted on osi's site, just a flat json map between some license key (LGPL) and the authoritative url (http://www.gnu.org/licenses/lgpl.html)[12:43am] <ashb> hmmm the mongodb api is kinda fruity[12:43am] <ashb> hmmm true[12:44am] <deanlandolt> there needs to be a foundation dedicated strictly to collecting and maintaining authoritative data...it'd be pretty damn useful[12:44am] <ashb> wikipedia [12:44am] <deanlandolt> heh[12:45am] <deanlandolt> that's kinda related -- it'd be nice if there were a place where specific "experts" could bless a given version of a wikipedia page as accurate[12:45am] <deanlandolt> but that'd be a whole other project[12:46am] <ashb> it also invovles a trust problem[12:46am] <deanlandolt> certainly...but...[12:46am] <deanlandolt> it'd be nice if we could have an /authority/ of these experts...[12:46am] <deanlandolt> so that anyone could roll their own reputation system, but when referring to said /expert/ (or anything else for that matter) it'd be easy to aggregate and disambiguate whom is who[12:47am] <ashb> let me know how that goes for oyu [12:47am] <deanlandolt> heh[12:47am] <deanlandolt> it shouldn't be hard...i'm kinda surprised the goog hasn't stepped up to the plate[12:50am] <ashb> hmmm a Cursor class or a Query class...[12:51am] <deanlandolt> what's a Query? just a range?[12:51am] <deanlandolt> sounds like websimpledb[12:51am] <ashb> db.foo.find({age> { $gt> 21 } }) -> returns a cursor/query[12:51am] <ashb> on which you can do http://api.mongodb.org/cplusplus/1.3.0/classmongo_1_1_query.html#a41da3e56f224074f96871f112d46e5d[12:52am] <deanlandolt> ah[12:52am] <ashb> the C++ api calls it a Query, the JS shell calls it a cursor[12:52am] <deanlandolt> ugh[12:52am] <ashb> or the docs do rather. i think[12:52am] <ashb> both \o/[12:52am] <MisterN> ashb> does your module mimic the shell or the c++ api?[12:52am] <ashb> "To set the hint for a particular query, call the hint() function on the cursor before accessing any data"[12:53am] <ashb> MisterN> right now the C++ api[12:53am] <ashb> the shell can then be implemented on top of that[12:53am] <MisterN> deanlandolt> why "ugh"?[12:53am] <deanlandolt> ashb> what about the indexeddb api? [12:53am] <ashb> deanlandolt> the what?[12:54am] <deanlandolt> MisterN> because of inconsistent terminology in the docs[12:54am] <deanlandolt> ashb> websimpledb (by its new name)[12:54am] <deanlandolt> is your mongo driver in c++ or js?[12:54am] <ashb> c++[12:54am] <deanlandolt> d'oh[12:54am] <deanlandolt> oh well[12:54am] <ashb> i dont have the facilities to do raw sockets in JS yet [12:55am] <ashb> and it was easier to create thin shims around the C++ driver than bind sockets [12:55am] <deanlandolt> damn...that woulda been pretty awesome [12:55am] <ashb> deanlandolt> there is a wrapping of the Java API tho[12:55am] <MisterN> deanlandolt> you CAN use flusspferd [12:55am] <deanlandolt> MisterN> i know [12:55am] <deanlandolt> i was more worried about having a generally useful js driver[12:56am] <deanlandolt> then i could wrap the indexeddb api around it[12:56am] <ashb> ah[12:56am] <MisterN> deanlandolt> you could adapt ashb's module for v8 maybe[12:56am] <MisterN> of course not for rhino[12:57am] <deanlandolt> yeah...i'm not too worried about rhino specifically...doesn't mongo have an http api?[12:57am] <ashb> nope[12:58am] <deanlandolt> ugh...hmm, i thought i remembered seeing that[12:58am] <ashb> it might, but not in core. its native Wire API is binary[12:59am] <deanlandolt> fair enough[01:20am] <ashb> hmmm still cant decide betwwne Query and Cursor[01:20am] <ashb> PITA[01:21am] <ashb> deanlandolt> websimpledb uses Cursor[01:21am] <ashb> http://www.mongodb.org/display/DOCS/Querying [01:21am] <ashb> ah and that calls them cursors. Cursor it is[01:21am] <deanlandolt> yep[01:22am] <deanlandolt> that's why i was asking...i was thinking query was something like KeyRange[01:22am] <ashb> which happliy is also what we called it for oure SQLite3> http://flusspferd.org/docs/js/bundled%20modules/sqlite3/sqlite3/cursor.html[01:22am] <deanlandolt> i just it just depends on how it acts[01:22am] <deanlandolt> if it's an incrementable pointer to an entry in a set, it's a cursor[01:23am] <deanlandolt> if it's the set, it's a Query (to my mind)...or a KeyRange in websimpledb[01:23am] <ashb> it is, but for confusion it *also* has operations like .sort() and a few more[01:23am] <deanlandolt> heh...lovely[01:23am] <ashb> (is a cursor)[01:23am] <ashb> yeah[01:23am] <deanlandolt> so it's a querycursor[01:23am] <ashb> indeed[01:23am] <deanlandolt> awesome[01:24am] <ashb> eh. Cursor and it can just be slightly confusing[01:25am] <ashb> kriskowal> how does dep order matter?[01:25am] <ashb> you dont store the md5 of the packages you depend on do you?[01:25am] <ashb> just name+version?[01:26am] <ashb> hmmm also. what do we do if two people want to have a package called 'template' ?[01:27am] <ashb> (istr beafore we had a concept of somehwo combiningi with an authoritative url or some such?)[01:30am] <ashb> deanlandolt> i.d prefer 2.0.0a1 or some variation there on (2.0.0~1, 2.0.0pre1 etc)[01:31am] <deanlandolt> ashb> sure, but then we're back to trying to specify all that crap [01:31am] <[k2] is now known as [k2]|afk.[01:31am] <deanlandolt> tag it that way, fine...but it kinda blows up semver[01:31am] <ashb> are we? we could juse say 'anything which doesn't match sem ver form is a developer beta/release'[01:32am] <ashb> and you sort it by splitting on . and then comparing chunks, numerically first if possible, otherwise ascibetically[01:32am] <ashb> if it even matters, which it doesn't[01:32am] <ashb> (at least not to package.json format. it kinda does to a package site if it wants to show the versions in some order)[01:33am] <ashb> so yeah 'anything that is not valid semvar is beta release' works for me[01:38am] <kriskowal> ashb dependency order does matter for narwhal. it's not meaningful, but without it there are consistency issues.[01:38am] <colinclark_ is now known as colinclark.[01:39am] <ashb> kriskowal> at a package level?[01:39am] <ashb> hold on. how do you even install packages if there is a cycle?[01:39am] <ashb> oh, i guess if we dont run unit tests when installing its not an issue[01:40am] <kriskowal> having a consistent dependency order makes the path deterministic. if they were non-deterministic, there would be scary bugs. also, i should qualify that consistency of the path order is more important with our style of module identifier resolution; it might not be the case for yours[01:40am] <kriskowal> we do install in phases. all downloads -> all installs -> all tests.[01:40am] <ashb> yeah that makes sense[01:40am] <kriskowal> we don't do tests yet, but that wouldn't be a problem.[01:40am] <ashb> build up transative list of deps, put them in the sea, then run tests?[01:41am] <kriskowal> yeah[01:41am] <ashb> i really think running tests at install is a godo idea[01:41am] <kriskowal> down the line we'd like for the entire installation process to be transactional[01:41am] <kriskowal> and resumable[01:42am] <kriskowal> which would be really simple if the install process creates a temporary sea[01:43am] <ashb> interesting idea[01:44am] <ashb> kriskowal> thoughts on my idea to list external binaries/deps?[01:44am] <ashb> no one else seemed to pick up on it[01:45am] <ashb> oh - one other idea. a group of dependancies, i.e. i Need One of these modules to function[01:45am] <ashb> (and the first one in the list is recommened if you dont already have one of the others)[01:47am] <kriskowal> i haven't needed anything like that yet, so i don't have much to say about it. i imagine it might be important for built packages, but i haven't trod there yet.[01:48am] <ashb> its something i've wanted frequently in perl[01:48am] <ashb> i'll suggest it[01:48am] <ashb> (oh that was to the first one, not the second)[04:00am] <kriszyp_afk is now known as kriszyp.[05:18am] <Dantman> *sigh* Things feel like they've been deteriorating[05:49am] <Dantman> Shit, voltaire hit it's disk space limit again[05:54am] <Dantman> Backups still aren't being purged correctly[05:56am] <Dantman> Oh well, eventually mu will replace voltaire[05:59am] <Dantman> Agh, crap... that wasn't the issue[06:27am] <[k2]|afk is now known as [k2].[07:52am] <Dantman> Wiki is getting cluttered for my taste. I'm using another wiki or organize a series of recommendations for real proper low-level interfaces between native functionality and JS.[09:39am] <ryah_away is now known as ryah.[10:16am] <JoePeck_ is now known as JoePeck.[4:02pm] <ashb> hmmm does anyone still use the tests from http://code.google.com/p/interoperablejs/[4:09pm] <ashb> tlrobinson> ^^[4:20pm] <ryah is now known as ryah_away.[4:48pm] <colinclark_ is now known as colinclark.[7:04pm] <zilenCe1 is now known as cpojer.[8:00pm] <joshthecoder_ is now known as joshthecoder.[11:41pm] <the_undefined> kriszyp> hey[11:41pm] <kriszyp> hey[11:41pm] <the_undefined> you around to talk node Promises/Defereds?[11:41pm] <kriszyp> I just responded to you on ml[11:41pm] <kriszyp> just 3 seconds ago [11:42pm] <kriszyp> but yes, be glad to chat[11:42pm] <the_undefined> google hasn't updated yet[11:42pm] <kriszyp> although you might want to take a look at the ml first[11:42pm] <the_undefined> I did read your response on the main Deferered thread[11:42pm] <the_undefined> but you're referring to the "Module issues" one?[11:43pm] <kriszyp> no, I responded on the "Replace Promises with Deferreds" (my second email on it)[11:43pm] <kriszyp> message #45[11:43pm] <kriszyp> http://groups.google.com/group/nodejs/msg/4b1910faf3bbd162 [11:44pm] <the_undefined> ah[11:44pm] <the_undefined> let me read that[11:44pm] <the_undefined> will ping you[11:44pm] <kriszyp> cool[11:45pm] <kriszyp> I guess I didn't make any real arguments about the spelling/naming issue ("addCallback/addErrback" vs "then")... hard to make technical arguments about names [11:46pm] <kriszyp> doSomething().then(doSomethingElse) just reads nicely to me, but "reads nicely" is pretty subjective, I'll admit[11:48pm] <the_undefined> kriszyp> let not discuss that for now, it's largely taste. If we can agree on the technical parts of the implementation I'm willing to make compromises on the naming[11:48pm] <kriszyp> yeah, thats what I was thinking too...[11:48pm] <the_undefined> let me start with security[11:48pm] <kriszyp> k[11:49pm] <the_undefined> the fact that promises can be altered is not a security issue for me, if you don't want that - make sure you create a new promise that you pass to untrusted conumers[11:49pm] <the_undefined> * consumers[11:50pm] <the_undefined> I think the use cases where the consumer of the promise is not to be trusted are largely outnumbered by those where that isn't the case[11:50pm] <the_undefined> Of course, I only care about the server side - this may be something more relevant on the client side?[11:51pm] <kriszyp> sure, I agree, although the security issue just tends to highlight the awkwardness of imperative/mutating mechanisms[11:52pm] <the_undefined> to me its function composition so I don't find it awkward[11:52pm] <kriszyp> what really convinced me was when I realized the whole fiasco with forgetting to return values in deferreds causing problems could have been wholely avoided with functional promises[11:52pm] <the_undefined> but if you look at it from a different angle it might be[11:52pm] <the_undefined> well, I think the "undefined" exception is pretty much acceptable[11:53pm] <kriszyp> so what is the benefit to mutating promises?[11:53pm] <the_undefined> see with regular functions you can only have exactly 1 place that gets the return value as well[11:53pm] <the_undefined> kriszyp> I think the key benefit is to be able to quickly compose new functions out of one ore more blocking/non-blocking functions[11:53pm] <kriszyp> based on my experience with undefined thing, it seems that users actually fundamentally expect promises to have an immutable single final result[11:53pm] <kriszyp> (whether or not that consciously realize that or not)[11:54pm] <the_undefined> I guess that depends[11:54pm] <kriszyp> hmm, maybe you could show me what you can do with mutating promises that you can't do with functional promises[11:54pm] <the_undefined> we have that with our current promise implementation in node[11:54pm] <kriszyp> maybe I am missing something[11:54pm] <the_undefined> but I find it somewhat frustrating because I keep creating promises over and over when composing multiple non-blocking functions together[11:55pm] <the_undefined> let me try[11:55pm] <kriszyp> ok, thanks, sometimes js is a lot clearer than english[11:57pm] <the_undefined> kriszyp> https://gist.github.com/b8ba94855c732d8ff38e[11:57pm] <kriszyp> that could should behave exactly the same with functional promises[11:57pm] <kriszyp> that code shoud....[11:58pm] <kriszyp> that code should....[11:58pm] <the_undefined> kriszyp> https://gist.github.com/44765338a347898ed286[11:59pm] <the_undefined> with functional promises, I always have to explicity propagate the errback event when composing a promise based on another one[11:59pm] <kriszyp> I don't think I understand the second block[11:59pm] <kriszyp> it doesn't look like it does anything[11:59pm] <the_undefined> oh wait[11:59pm] <the_undefined> let me fix[11:59pm] <the_undefined> sry[11:59pm] <kriszyp> the first gist would be how you would do it with functional promises[11:59pm] <the_undefined> kriszyp> https://gist.github.com/44765338a347898ed286[11:59pm] <the_undefined> try now
Logs by date :