Hacker Newsnew | past | comments | ask | show | jobs | submit | Footkerchief's commentslogin

"Fine your coworkers." Looks true:

https://www.theguardian.com/world/2008/mar/19/japan


Exactly. Use a fancy expressive structure if you want, but don't try to abstract away the mapping between that and the general-purpose code that it relies on. "Each domain has its own rules"? How would I even know where to look for those?


TLDR: you can put tablets of mosquito-killing bacteria in buckets.


It's probably better for Wikipedia's quality if editors remain unsung, rather than it being status-conferring.


Yes, these comments are necessary pushback against the habit of these disciplines to push interventions that don't work because their evidentiary standards are bad.


You still use constraints even if you put all your business logic in stored procedures.


When did clickbait headlines become acceptable here?


What does “clickbait headline” mean to you?


Surprised to see no discussion of other data structures like dicts/maps, or arrays of arbitrary type. Hopefully they'd be a straightforward extension. IME, apps need collaborative data structures more often than they need pure collaborative text editing.

The motivating examples (update validation, partial loading, higher-level operations) are interesting, but I don't see a strong case that the reason Yjs etc. lack these features is the underlying CRDT implementation, as opposed to these features being intrinsically difficult to build.


> Surprised to see no discussion of other data structures like dicts/maps, or arrays of arbitrary type. Hopefully they'd be a straightforward extension. IME, apps need collaborative data structures more often than they need pure collaborative text editing.

Totally agree. I guess an array of "atomic" objects, where the properties of the objects can't be changed can be done just by replacing the string with your own type. Changes inside of the object is probably trickier, but maybe it's just about efficiently storing/traversing the tree?

I've also always thoguth it should be possible to create something where the consumer of the helper library (per OP terminology) can hook in their own lightweight "semantic model" logic, to prevent/manage invalid states. A todo item can't both have isDone: true and state: inProgress at the same time. Similar to rich text formatting semantics mentioned in the linked article.


CRDTs essentially work by deterministically picking one side when a conflict arises. The issue is that in general this does not guarantee the lack of data loss nor data being valid (you can resolve the conflict between two pieces of valid data and get invalid data as a result).

Imagine if every git merge conflict you got was resolved automatically by picking one side. Most of the time it would do the wrong thing, sometimes even leading to code that fails to compile. Imagine then you were not there ready to fix the issue, it would lead to even more chaotic results!

This is why CRDTs are not more widespread, because they only fix the problem you think you have, not the problem you actually have, which is to fix conflicts in a way that preserves data, its validity and meaning.

And arguably they make this issue even worse because they restrict the ways you can solve these conflicts to only those that can be replicated deterministically.


> This is why CRDTs are not more widespread, because they only fix the problem you think you have, not the problem you actually have, which is to fix conflicts in a way that preserves data, its validity and meaning.

I’ve been saying this for years, but there’s no reason you couldn’t make a crdt which emitted conflict ranges like git does. CRDTs have strictly more information than git when merging branches. It should be pretty easy to make a crdt which has a “merge and emit conflicts” mode for merging branches. It’s just nobody has implemented it yet.

(At this point I’ve been saying this for about 5 years. Maybe I need to finally code this up if only to demonstrate it)



Reading the docs, it looks like that only works for object keys that have been concurrently set to different values. Not text documents.


> I’ve been saying this for years, but there’s no reason you couldn’t make a crdt which emitted conflict ranges like git does.

I don't get your point. The C in CRDT stands for "conflict-free". Why would a CRDT have conflict ranges?


Because automatic merging isn’t always perfect. Especially when merging long lived changes to code in git, sometimes you need manual intervention to figure out the result. And we need to manually intervene sometimes.


That might be an improvement over git, but not automatically fixing the conflicts will be a dealbreaker for most people.

Fundamentally people want something that automatically fixes conflicts, and do so the way they expect it to, but this just doesn't exist yet.


Horseshoe theory addresses this.


I need to give a name to my theory which posits that horseshoe theory is a bullshit right-wing talking point, no different from the classic villain trope "We are not so different, you and I", where one side admits to being awful but uses false analogies to try and paint the other with the same brush, and the other rejects both the comparison and the conclusion.

The underlying goal of horseshoe theory is not to create a meaningful comparison between two positions, but an underhanded attempt to demoralise those on the left, and to swing undecided centrists by convincing them that the left isn't really offering the progress that it claims. I think it's also used as a shield by people who are right-leaning but don't want to admit it out loud.

...unless you can find a single good example of a notable left-wing proponent suggesting that horseshoe theory is valid, actually.


This and 1000 times this. It is so absurd: of course it seems ad hoc plausible to treat roughly similar things as if they were the same. However: never do this in this forum, since this is a community is looking a lot into all kinds details, so you will get called out.

But somehow – SOMEHOW – the same people that ask for nuance in everything act as if it would be even remotely plausible that the two most polar opposites of political theory would be basically the same for all important intents and purposes if thought to an end.

It is simply mind-blowing. People looking at something, seeing it is complex, stopping their thinking and just somehow feeling their way to the most empty assessment ever: "probably the same consequencesif you think it to the end". Without even having begun to think their way through it!

But I get it: thinking is nice as long as it is a purely intellectual endeavor but not if any personal moral responsibility is concerned. You might be morally obligated to draw consequences in your behavior – Heaven Forbid!


2.5 m (8 ft 2 in) in diameter:

https://en.m.wikipedia.org/wiki/M-V


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: