433 karma · joined October 10, 2012
- Explicit patent license specifies why / how it can be revoked.
- Without an explicit patent license, patent infringement case (by Facebook) against a party that uses Facebook's OSS would be become harder, because one may argue that such grant is implied by Facebook open sourcing the software.
"modulo" in this sense does make sense, because it's abstracting that part out and mapping it to a equivalence relation.
These people tend to exaggerate their funding prospective, saying things like "they backed out". Ultimately VCs don't owe anybody money and startups are not entitled with funding.
Investing is just like any other purchase, and as a VC if you believe that a company is not worthwhile to invest then you should be ready to say no no matter what stage the conversation is in.
Ironically the fact that the company couldn't raise another round / continue without finding is a sign that VCs did make a right choice.
That said, you can create raw and dereference raw pointers, which lets you to do the above.
I soon removed it afterwards after knowing what "knowing c++" implied.
That said, my biggest Rust-gripe has been writing recursive / self-referential data structures. Borrow system is just not very convenient for that and you end up restructing the code to be a bit more Rust-friendly.
If you have to turn off a crucial language feature to increase performance, I'm not sure whether a language is considered "scalable".
A lot of built-in constructs uses unsafe under the hood. Vector (Rust's dynamic arrays) does memory allocation / resizing under the hood for example, and there's no safe way to do it, unless some safer array allocation primitive is exposed.
Also things like mem::swap(x, y) cannot be implemented at all with safe rust. in order to perform swap, you need a temporary variable. That temporary variable would be uninitialized, which Rust does not allow.
Note that in c++ it invokes copy constructor - http://www.cplusplus.com/reference/algorithm/swap/ - but Rust's mem::swap works for types that does not implement the Copy trait (Rust's equivalent to copy constructor).
Same can be said about slice splitting functions, which is primarily used to work around Rust's borrow checker.
https://byorgey.wordpress.com/2009/01/12/abstraction-intuiti...
For algorithms "microservice" architecture is highly dubious. You may perform point-lookups (given X, categorize Y) but you may also perform a large-scale computation (given millions of X, categorize Y). In that case, moving _code_ around instead of data is much more valuable. Thus you get systems like SQL, Hadoop, Spark where code is shipped around instead of data.
That's the point. The branching factor of go is so high that with the current trend in hardware improvements it is impossible to play out every single solution.
It also doesn't prevent MITM unless both the client & server. Nothing stops you from presenting a fake public key pair between the communication
How doe TLS work then? Because public keys are signed by central authorities. Who do we know what to trust? Browsers and OSes have default list of certificate authorities to trust. How do we know that we can trust them? Technically they should be communicated outside the internet. If the version of Chrome you download is compromised with a rogue certificate authority (ex: SuperFish) then you're hosed.
It's turtles all the way. Unless keys are communicated securely somehow you cannot guarantee secure communication.