Mochabot log - CommonJS IRC channel: #commonjs on irc.freenode.net

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 :