Earlier quoted context omitted.
Every single online multiplayer game that cares about latency reimplements a subset of HTTP over UDP.
>reimplements a subset of HTTP over UDP. TCP, although I like to imagine FPS games where shooting someone sends "DELETE /players/n00b HTTP/1.1" to the server.
What happens when you make a move in lichess.org?
151–160 of 162 posts
Re: What happens when you make a move in lichess.org?
#152Earlier quoted context omitted.
Every single online multiplayer game that cares about latency reimplements a subset of HTTP over UDP.
Huh, that's not what I would expect at all. If you are having custom network protocols anyway, why deal with all the overhead that even a subset of HTTP brings? You might as well make an entirely new protocol at that point.
Re: What happens when you make a move in lichess.org?
#153Earlier quoted context omitted.
Well, moderation is very hard. I guess in an ideal world people would be able to upvote/downvote based solely on the quality of the comment, and flag for moderation when they genuinely think a comment is unacceptable. In such a world, your polite "nah it sucks" would still be downvoted (because it's neither insightful nor pleasant for Lichess supporters, let's be honest) but it would not disappear; it would just appe…
When you silence people, you isolate them. Isolation does weird things to the mind, one of which distorts reflected appraisal, other parts where reflected appraisal is denied in communications are even more impactful. It induces a involuntary hypnotic states which varies in intensity by exposure. The tortured takes on mannerisms of the torturer, and when denied communication, or only distorted reflected apprsail long…
I do understand, and it is unfortunate that moderation gets mixed up with score. If you have a better solution, feel free to explain it! Because not moderating at all is a problem in its own.
Re: What happens when you make a move in lichess.org?
#154Earlier quoted context omitted.
Nope, finite number of pieces and finite number of viable moves to check on each. Not sure what you're thinking of, but the entire concept of complexity class only applies if there is some axis of scaling (n-size chess board?).
I think you might be misunderstanding: Yes the instance of chess is finite but the problem of computing moves is inherently in NP. The key is that just because a problem is in NP it does't mean that its difficult to solve the instances with small parameters. See the famous coloring, SAT, or any other equal NP problem...
Re: What happens when you make a move in lichess.org?
#155what happens to those websocket connections when the API is updated or redeployed?
Re: What happens when you make a move in lichess.org?
#156Earlier quoted context omitted.
I think the incompatibilities burned a lot of the good will. I'm very fluent in Scala 2, but I will avoid Scala if I can, mostly to stay away from purely functional programmers. > all the goodies of Rust Does it prevent me from using a non-thread-safe object in multiple threads? Or storing a given object which is no longer valid after the call ends? Does it have a unified error handling culture? In Scala some prefer…
Yeah, that's true. Scala 2 allowed a lot of weird things and sometimes even nudged people into the direction of overengineering and writing cryptic code. I'm not surprised a lot of people were burned. Basically, you needed a good and experienced developer from the start of a project for it to be a nice code base. > I'm very fluent in Scala 2, but I will avoid Scala if I can, mostly to stay away from purely functional…
He has very good taste. I wish more Scala people are like him.
> simply having immutability by default
Not everything is a pure data structure. I called a gRPC streaming callback with multiple threads in Scala (got garbled result in the receiver). You can say this is the fault of using the Java API, but the more Scala solution (fs2) involves serializing the access under the hood which is not cheap.
Recalling that my contention is with "all the goodies of Rust".
>> named destructuring
> Unless we are talking about two different things, yes it does.
I guess we are. I complained about this quite some time ago: https://news.ycombinator.com/item?id=31399737
Re: What happens when you make a move in lichess.org?
#157Earlier quoted context omitted.
I think you might be misunderstanding: Yes the instance of chess is finite but the problem of computing moves is inherently in NP. The key is that just because a problem is in NP it does't mean that its difficult to solve the instances with small parameters. See the famous coloring, SAT, or any other equal NP problem...
When we talk about what class a problem belongs in, we have to define the problem with respect to some scaling axis. For example, coloring with K=3 colors is NP-complete with respect to N = # nodes in the graph, but not with fixed N and scaling K. But I think it would actually be an interesting and non-trivial exercise to define a variant of chess with a scaling axis such that computing a list of valid moves for one…
Re: What happens when you make a move in lichess.org?
#158Earlier quoted context omitted.
When you silence people, you isolate them. Isolation does weird things to the mind, one of which distorts reflected appraisal, other parts where reflected appraisal is denied in communications are even more impactful. It induces a involuntary hypnotic states which varies in intensity by exposure. The tortured takes on mannerisms of the torturer, and when denied communication, or only distorted reflected apprsail long…
> When you silence people, you isolate them. I do understand, and it is unfortunate that moderation gets mixed up with score. If you have a better solution, feel free to explain it! Because not moderating at all is a problem in its own.
You only allow moderators to do the actual moderating. You don't allow upvotes or downvotes because they are used following a sybil attack structure (many sock-puppet accounts to one person) to silence or amplify messages.
You have a flag button (which they already have in place for HN), to report content that should be flagged for violating rules.
Those that report spurious (good) content get warned/punished for abusing the flag features. They may have the feature silently revoked (shadowbanned) for abuses, or banned for other activity suggesting the accounts are sockpuppets (i.e. going directly to an article when normal viewing requires first loading the index, then following a link with the associated metadata including the referrer to get to the page to make a report.
It really is that simple.
This moderates, and it limits bad actors, its still done in most online forums that are still around; because it works.
Re: What happens when you make a move in lichess.org?
#159Earlier quoted context omitted.
Yeah, that's true. Scala 2 allowed a lot of weird things and sometimes even nudged people into the direction of overengineering and writing cryptic code. I'm not surprised a lot of people were burned. Basically, you needed a good and experienced developer from the start of a project for it to be a nice code base. > I'm very fluent in Scala 2, but I will avoid Scala if I can, mostly to stay away from purely functional…
> whole [Li Haoyi]( http://www.lihaoyi.com/ ) ecosystem in Scala He has very good taste. I wish more Scala people are like him. > simply having immutability by default Not everything is a pure data structure. I called a gRPC streaming callback with multiple threads in Scala (got garbled result in the receiver). You can say this is the fault of using the Java API, but the more Scala solution (fs2) involves serializing…
Well yes, that's what I'm saying: in Scala you sometimes have to sacrifice performance. Though I don't think that serialization is generally required just because you use e.g. fs2 or ZIO for streaming.
> I guess we are. I complained about this quite some time ago: https://news.ycombinator.com/item?id=31399737
You are making a fair point. I'm also not happy with some of the decisions about pattern-matching.
You can resolve some of those issue by just using `import` locally though. So for example, if you have a case class X with many fields and you want to access many of them, you don't need to extract them all in pattern matching (and deal with _ for the stuff you don't need) but you can rather do `val myX = X(...); import myX._` and then just use the fields.
That is basically equivalent to doing `const {a, b, c} = myX` in typescript. You don't need to do `case X(a, b, c, _, _, ...)` in Scala here.
Not saying that this just solves all issues, but I think ergonomics of Scala in terms of pattern matching, destructuring and scoping/importing is generally/overall not worse than in Rust, at least not significantly so - that's why I think it's fair to say that Scala has the same "goodies" in this area. I did not mean to say that Scala is as good as or superior than Rust in all language features.
Re: What happens when you make a move in lichess.org?
#160Earlier quoted context omitted.
https://bleep.build is a very promising tool for building Scala projects. I like it more than I like cargo
Maybe, but the thing is, if you are a new Scala dev, you will 1.) be confused by the number of build tools. Sbt is still kind of standard but there is now also Mill and now Bleep (first time I even hear of it!). And some people will tell you to just use Maven or even Gradle. Well... And 2.) most people will go with sbt; and while it has improved a lot it is still comparably slow, has some annoying bugs and so on. Com…