Edited to say I'm a Basho employee and did a lot of the development work on CRDTs in Riak. Also, Hi!
You can use any CRDT implementation you want from the client. You can roll your own, or you can use riak_dt, or some other library. Indeed using a 3rd party CRDT library with Riak should be trivial, since conflicts are exposed to the user. Though there aren't many out there (yet?)
Writing your own Ad Hoc merge logic is somewhat more complex. Shapiro et al describe it as "complex, and error prone" in their CRDT paper. Google's F1 paper says:
"We also have a lot of experience with eventual consistency systems at Google. In all such systems, we find developers spend a significant fraction of their time building extremely complex and error-prone mechanisms to cope with eventual consistency"
and
"Designing applications to cope with concurrency anomalies in their data is very error-prone, time- consuming, and ultimately not worth the performance gains."
Building CRDTs into Riak is an attempt to mitigate this.
I don't think CRDTs built in to Riak will "save the world" but hopefully, for a portion of application developers, or potential developers, on Riak, built in CRDTs will make data modelling easier. It will, I hope, allow these developers to focus on their application, and not conflict resolution, when working with Riak.
Built in CRDTs are a step towards maturity for EC systems, I'm pretty excited about this work and think it opens up a lot of possibilities.
If you find making a general purpose, reusable library of state based CRDTs trivial, please send Basho a CV.
Only last-write-wins registers use last-write-wins to resolve conflicts. Maps and Sets and Flags use an Add-Wins/Observed-Remove semantic based on fine grained causality tracking methods borrowed from dotted version vectors, counters are vectors of actor->count pairs. None of these types use temporal time at all.
For something like a single string register inside a Map (which is the register you refer to) a simple LWW seemed adequate. Maybe in future we can add some more complex type here, maybe with causal history + timestamp arbitration (like Riak's allow_mult=false.)
Saying that, I signed up anyway (to add to the feature list :D)
I really like it. It needs traction to make it useful but it is fun and could be sociable. The idea is trivial, but that is nice: everyone loves top 10s.
First Hacker News project listed here that I have clicked around and enjoyed for ages. Really nicely executed. With a lot of play it may well become very useful for making snap decisions.
Would like to sign up without linking an existing account, don't want to sully my social network if you do something untoward. Trust is earned.
> So I said, narrow the focus. Your "use case" should be, there's a 22 year old college student living in the dorms. How will this software get him laid?
My bottom line is that, as a publicly, tax funded organisation this is a total waste of time (and money). Other, open source frameworks are, at the very least, good enough.
Hiding some individuals ego trip behind the stated good of "inclusivity" is weak and unconvincing. The glow framework bespeaks egos run rampant and an IT department with a budget beyond its remit.
I worked for a consultancy that produced video on demand to rival iPlayer for a 10th of the budget in a quarter of the time. I've worked at government funded orgs too, and even though the consultancy was greedy, grasping, rapacious, dishonest and generally incompetent at least they had to contend with genuine market forces.
The BBC reeks of cronyism, old boyism and general too cool for schoolism. I'm glad they open sourced it but what use is it to anyone?
I feel not unlike a Red Top reader caught in some issue related rant but that bottom line is rearing up at me like a moon from the smug wasters at the beebs IT dept. In the words of "Annoyed" of Froom, "Why oh why oh why, BBC, did you waste the licence fee on this half-baked, ill conceived, masturbatory effort when you could of used JQuery and knocked out your code in 1/10th of the time? (And then made a nice episode of Caedfell)?"
(You may have to have be a UK citizen, raised on main stream TV in the last 30 years to understand the Points Of View reference)
Firstly, don't feel bad because you feel this way. It is pretty typical for a bright kid to feel this way, often. The thing that is getting you down is the over-analysis and introspection not the relationships.
Relationships with people are hugely rewarding and enjoyable but you can't depend on them for happiness (or anything). See people as the oases in your life. Depend on yourself for what you need and enjoy people as you find them.
Over analysis and introspection are just a habit of mind. They are not always productive but have their place, especially at certain times (just broken up, just done something shocking, had a profound experience, failed in some way) but prolonged bouts can be destructive.
All the advice so far seems to point to finding something else to occupy your mind. Do that and you will find people with different interests a welcome distraction. Of course whatever you find to occupy your time other will do too, so there is your social circle.
It seems trite but you need to do stuff. I don't want to make you feel worse but if you spend all your time self absorbed then people will never have the same interests as you and yo won't be that interesting so won't meet life's 'truly interesting' people ( people like me ;) )
>I can't take a cut of the pot or ante as that will convert me into a gambling site, of the type that are illegal in the US.
Ah. I wasn't aware of the legal implications in the US.
>What about letting people replenish their balances, for a fee, e.g. pay $5, get $1000 in play money?
That sounds good and quite normal too. Probably both ideas together will net you most returns: Pay a monthly sub and get free transfer in of funds but if you just want to play now and again then pay to transfer in playing money. And still have play for free if no money involved? Or is there no point to that do you think? Maybe an initial freebie?
Hi Joel, Don't want to sound like a stalker or sound too fulsome so don't get the wrong idea but I follow you in twitter and read your posts on the erlang list and find you inspirational.
My opinion on this is:-
1. Forget the subs. Let people play for fun for free and if they want to bet take a cut of the ante or pot or something (IE you only make money when people spend money and even then only make a little). Make it very, very easy to bet (Paypal, google checkout easy). But let people play for Kudos too.
2. Also let people play on Facebook. Do Facebook Connect (or other social networks) so peeps joining your site can bring all their friends (their whole social graph). Make it so people can play away from your site basically (iPhone etc)
3. Bring in non-players IE have tutorials, novice tables, private game rooms stuff like that. There is a huge untapped market of women who love to gamble (witness the power of Bingo in the UK) if it is fun and social.
Personally I'd back you whatever as your drive and commitment are evident. Whether you follow my advice or not I expect you to succeed with this or another idea and if I had a few 10s of thousands of pounds I'd be in like Flynn. Sorry if that embarrasses you.
http://rimuhosting.com now have a datacentre presence in the UK (London). I find them very useful but best of all they have very, very good support. They are NZ based.
You can use any CRDT implementation you want from the client. You can roll your own, or you can use riak_dt, or some other library. Indeed using a 3rd party CRDT library with Riak should be trivial, since conflicts are exposed to the user. Though there aren't many out there (yet?)
Writing your own Ad Hoc merge logic is somewhat more complex. Shapiro et al describe it as "complex, and error prone" in their CRDT paper. Google's F1 paper says:
"We also have a lot of experience with eventual consistency systems at Google. In all such systems, we find developers spend a significant fraction of their time building extremely complex and error-prone mechanisms to cope with eventual consistency"
and
"Designing applications to cope with concurrency anomalies in their data is very error-prone, time- consuming, and ultimately not worth the performance gains."
Building CRDTs into Riak is an attempt to mitigate this.
I don't think CRDTs built in to Riak will "save the world" but hopefully, for a portion of application developers, or potential developers, on Riak, built in CRDTs will make data modelling easier. It will, I hope, allow these developers to focus on their application, and not conflict resolution, when working with Riak.
Built in CRDTs are a step towards maturity for EC systems, I'm pretty excited about this work and think it opens up a lot of possibilities.
If you find making a general purpose, reusable library of state based CRDTs trivial, please send Basho a CV.