Matrix does not require a centralized identity server (which exists only for optionally discovering users on Matrix based on their email/phone numbers).
The linked gist is loudly complaining (amongst other things) that Riot's default config points at a centralised one by default.
We've already fixed this (https://github.com/vector-im/riot-web/issues/10553) by simply removing the concept of default identity servers entirely and instead prompting the user to select on demand whichever one they want to use, if they actually try to look up a user based on email/phone. It should be released in Riot 1.4 (on Web, and equivalent ones on mobile etc) in the coming weeks.
Yeah that's true, if you wanted a private server a la mattermost/riot/slack, it wouldn't be ideal. However, I feel it's a decent tradeoff at present for what it's aiming for.
As a Jakarta resident I can confirm that the bus transit system (TransJakarta) have massively helped mobility amongst the populace. With a flat fare of 2 cents you can get from one end of the city to the other; it's an amazing system.
Doujin works are made with the awareness that they are parodies of the original work. It does not alter the body of the original work in any way and, as the term itself means, self-published. It is made without any direct affilation in regards to the original work.
It's a combination of two existing characters, the rei as in meirei/命令 (order, command) and wa as in heiwa/平和 (peace, harmony). No new characters need to be reserved.
Huh, according to Jim Breen's dictionary (http://nihongo.monash.edu/cgi-bin/wwwjdic) 'good, fortunate' is '礼' (rei). '令' (rei) is listed as 'command, decree'. The official character that is being used is '令'.
Is there some rule or convention that explains why 令 means 'good, fortunate' here? Is it due to the usage in the 7th century poetry that is referenced in the article?
Even though there's an explanation, I've seen a bunch of negative reaction to the name from Japanese people online because of the association with "command", also linking it to the current prime minister and his relatively militaristic politics.
If we have to trace back even further, it can date back to the ancient Chinese classic, the Classic of Poetry, where it is being used as good/respectful:
If you can break it into appropriate jobs that can handle interruptions, you should use interruptible instances to save money. And you really need to be able to handle that anyway in case an instance fails midway.
It means both the sender and the receiver of the message, if coerced, can without coordination have a degree plausible deniability for the contents of the message.
For example, I send you the message "CIA" encrypted using this scheme. Theoretically, it should be impossible for any third party to prove that I send "CIA", because I can give up a different decryption key that decodes the ciphertext to, say, "NSA". Similarly, on the receiving end, you can give up a different decryption key that decodes the ciphertext to, say, "FBI".
This scheme also means it is impossible for a third party to discover who is giving up the 'truth' in such scenarios (for example if I told the truth and decrypted the ciphertext into "CIA", while you lied and decrypted the ciphertext into "FBI", the third party has no way to know which one is correct, or if either of them are fake).
Can you make sure the 'alternate' decoded version of the messages will actually decode into something legible? Is there some way to explicitly craft the alternate decoded message, or is it random?
Two duress codes--one for you, and one for your counterparty. Thus, the bi- in bi-deniable.
Mono-deniable gives a duress code only to the sender, or only to the recipient.
The paper claims an additional category of bi-deniability, such that your duress code and your counterparty's duress code produce different plaintexts, rather than the same plaintext. It is unclear from the abstract whether it is possible to have a bi-deniable scheme without this property (which does not also require prior coordination between parties).
This must've been quite an old article, because lo and behold, nearly every single complaint on that page is being addressed with gusto by the Go community! Proposals on generics and error handling is well underway, and his complaints regarding GOPATH and the go get has been solved with Go modules.
EDIT: As I expected, the linked page is written on Feb 2018[1], things indeed have changed a lot since then.
Sorry, but the language existed for how long? I remember hearing about the same complaints about generics and error handling years ago - and they got answers back then with about the same level of arrogant dismissal like the quote about syntax highlighting in the article.
It's good if the community is at least starting to listen now, but I don't think that is sufficient evidence that the language is good.
There is no discussion if the language is good, it's already quite convincingly proven it's good. The question was if generics would make the language even better. Some people think that's a no brainer, others are not so sure, and the latter group included the core maintainers.
People use the language because it is good, I think at this point one can state that as objective fact. Once people use it, they'll complain when something is not as nice as it could be, like the error handling, and like the generics.
I wonder if in 2000 people felt the way about Java 1.3 people feel about Go now. Java had a similar rise to prevalence, and it also lacked some features we now consider crucial, such as generics. I personally would never want to go back to Java 1.3. I feel I'd much rather code in Go instead, even if it lacks generics. But I still think it's worth considering if Go would turn out to become Java, if it now embraces generics.
The language is crap. Just because people are using it does not mean it is good. Take a look at javascript. Same deal. You did not state any "fact"s why Go is good. Maybe it is good compared to Cobol or Fortran, but not compared to pretty much everything else.
Oh come on. People are forced to use Javascript, I don't think it would even exist today if it wasn't the only crossbrowser language.
Almost no one is forced to use Go, and yet people flock to it. I don't feel I need to state the things that make Go good because it's already been done a thousand times, and everyone in this thread already knows why it is good.
Have you ever built something in Go? I'm almost as productive in Go as I am in Ruby, and that was within a week of learning it. It's crazy good for a language that lacks so much expression.
People are not forced to use Javascript since there are a dozen of great LangName->Js infrastructures.
People are not forced to use PHP or other badly designed languages as well.
I wouldn't call Go a bad language due to the subjectivity of the term, I would rather call it ad-hoc language, which is basically a DSL sufficient for some domain, but not very suitable for a general engineering.
Go is a compiled PHP, its rather weak type system and oversimplified nature are suitable and sufficient for webdev for the economical reason. Building something complex in Go is possible but painful, Go doesn't help here but rather impedes making you write your own dynamic type system and other facilities to compensate the language's deficiencies.
To be fair, I feel like go's simplicity makes it easy to get small things up and running, but the pain comes when your project starts getting large. That's when additional abstractions are missed.
It's interesting, I feel like it's the opposite and Go excels at large projects. Compared to other languages, Go doesn't let you use as many abstractions, so writing code takes longer, but it is much more straightforward to read.
I work at a >1000 person company that codes mostly in Scala, and some in Go, and would prefer to read unknown Go code any day. With
the Scala I run into things like implicit parameters and 7 layer of inheritance, but the Go code is straightforward.
Go is somewhat of a lowest common denominator language. You could out perform it with a small team of strong developers, but when once your project gets to a certain size, it's unlikely all of the developers will be strong.
I think it's philosophically interesting. The Go approach to needing a more powerful language is to assume that you actually want to write a custom code generator for your project's needs. And it's not pretty to do so(the "go generate" thing makes quite a wart in its attempt to ease this process), but it works, and you can move on with your project. Most newer languages get tied in knots trying to generalize that same task and have a kind of configurability meltdown where everyone does it differently, so while it can be shared and reused in theory, none of it is actually compatible. I think it's akin to criticism of OOP in that in a lot of cases, "you wanted a banana but you got a banana plantation, three tractors, and twenty employees".
And Go is just a little bit closer to the sweet spot than C was, since a greater proportion of Go code seems to successfully avoid extensive preprocessing.
On the other hand, it might be a bit too restrictive for prototyping to have these power limits. I definitely have an easier time feeling my way through an unknown data modelling problem if I can start slinging things together dynamically.
That is an interesting point, and even if that is true, it still means adding generics would be a detriment.
I do wonder if that's an inherent property of languages with a more expressive type system. Many would blame it on OOP, but I think Haskell also suffers from it. Haskell that is written without using typeclasses is much more readable than Haskell that's written more plainly, at least to me.
It might be a unique property to Go, which other language is strongly typed yet with such a basic typesystem, lacking inheritance or even generics?
I will echo this too. I think Go has helped usher in the sensible concept BDD and of microservices to the forefront and the do one thing do it well approach. Versus monolithic applications instead you have a lot of digestible standalone services comprising the overall application and Go excels in this.
> I don't think Go should be used for larger projects. Apparently though the community disagrees because they're really adding generics.
Go is actually specifically built for large projects: the project was started because C++ has severe problems when used at the scale of Google.
The basic design of Go was intended to engineer out the issues that Google developers saw when using C++ at scale for long periods, such as circular references and problems with combining exceptions with concurrency.
What makes Go distinctive is that the team concluded that complexity inherantly does not scale, and designed for simplicity. Which enables Go to scale down in a way, even though it was originally intended as a "systems language".
>> Almost no one is forced to use Go, and yet people flock to it.
Well, at some point people "flocked" to javascript, and they weren't forced to. So it's a good language, then? Or sub javascript for java, or your favourite bashable language.
I will assume you're referring to Node. The browser explains why many coders know Javascript well; the fact that many coders know Javascript well explains the popularity of Node --without our having to resort to the hypothesis that Javascript is a good language.
But there wasn't anything stopping early browsers from using a different scripting language. They stuck with javascript. Was that because it was a good language?
And what about Java, for example? And why don't people "flock" to LISP, say, or Haskell? Are those "bad" languages, now? And what about software, like windows- is windows widely used because it's a great operating system?
Adoption is a rotten bad measure of quality. Not just in programming languages- in everything.
agreed. after i learned common lisp and smalltalk, i realized that since there has hardly been any innovation in programming since the first languages half a century ago.
Plot twist: people never "flocked" to Javascript. People use Node for example because the company they are working for thought that it would be nice, efficient and less costly to have one language for the whole platform. They mostly learned their lesson since then and moved on to real languages which can be used on the backend.
> There is no discussion if the language is good, it's already quite convincingly proven it's good.
I'm sorry, you can't prove a language is good or bad. You can prove it's popular, widely discussed, used by several individuals and organizations, is actively developed, but "good" and "bad" are inherently subjective terms and there's no way to prove it unless there happens to be a universally accepted definition of what constitutes a good or bad programming language.
> a universally accepted definition of what constitutes a good or bad programming language.
Implicitly many people, rightfully in my opinion, conflate the utility of a programming language with that language being good. If many people are able to solve real problems with a language, that language is good, the end.
Good does not equal perfect, there is no perfect in the real world of engineering.
On the other hand, many people conflate the popularity of a programming language with it being backed by a big corporation.
There actually are a few measurable metrics of programming languages, but even when we discuss such a simple factor as execution speed that you'd expect to be universally accepted as positive, there will be people arguing that developer time is more expensive and savings made here are more important than the gains on execution speed. There is simply no way two programmers are going to agree in classifying a number of languages as good or bad.
So in the world you're describing, pretty much all languages are "good," and none are "perfect." Not very interesting so far. What are the adjectives that fall in the middle, the ones that some languages deserve and others don't?
One might also wonder how long it took Java to respond to user complaints, and I would suspect Go core team has been much faster addressing these issues and responding to developers.
Are you really arguing that the language is not “good”? Sure, there are things not to like about it, but the widespread adoption of Go as a systems programming language is evidence alone that it is a “good” language.
Good is such an ambiguous term that I’m not sure it’s even worth using. For one person, only esoteric languages like Haskell are “good”, for another person, Python or Javascript are “good” enough.
Judging by most responses form the Go team and/or the community around the language, it would seem that none of the issues listed in the article are actually valid. I.e. this is the _correct_ way to handle errors, sum types bring nothing, etc.
Of course, things have changed since, but what does that say about the previously strongly held opinions of the team?
> Judging by most responses form the Go team and/or the community around the language, it would seem that none of the issues listed in the article are actually valid
Generics have been considered for years by the core maintainers. See Ian Lance Taylor's proposals. So you're either lying or not informed enough to be so assertive.
> This must've been quite an old article, because lo and behold, nearly every single complaint on that page is being addressed with gusto by the Go community!
Thank God, finally a proper "Getting Started" guide for Go Modules. The official docs and wiki page always felt so obtuse and unhelpful about how to actually use the feature, while dep at least offers the obvious "dep init then dep ensure and you'll be fine" solution.
Also, to take full benefit of the QoS you need to configure the Kubelet with "--cpu-manager-policy static"[0].
[0]: https://kubernetes.io/blog/2018/07/24/feature-highlight-cpu-...