Recent submissions

Comment · 12 years ago
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.

Comment · 12 years ago
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.)

Comment · 16 years ago
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.

Comment · 16 years ago
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.

Comment · 16 years ago
From http://www.jwz.org/doc/groupware.html

> 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?

Comment · 16 years ago
William S. Burroughs
Comment · 16 years ago
Comment · 16 years ago
> there are only 24 hours in a day

Per person.

Trade on your name? You are an A+ player. You must be turning work away. Take on more work than you can handle and farm it out to A-/B+ players.

Consultants don't scale but consultancies can benefit from scale to some small degree.

Comment · 16 years ago
1. Reading on the toilet 2. Getting rid of the TV 3. Exercise 4. Sleep 5. Org mode
Comment · 16 years ago
Ordered, thanks.
Comment · 16 years ago
That order is really very helpful, thank you. That order plus the Khan academy is what I am going to base my study on for now.
Comment · 16 years ago
Big Trak, Lego Mindstorms, any programmable robot type toy.
Comment · 16 years ago
The lack of picture is the only thing that stopped me trying it.

Live from the official Hacker News API

A modern reader for Hacker News · SvelteKit + Skeleton