Most people are entirely unaware of how much data Facebook is collecting about them. Raising awareness about that is a noble goal, but it's not mutually exclusive with stopping Facebook from exploiting their naivety.
I tried to love Zig but the lack of destructors are killing me! They're such a useful tool for resource management, and apparently they weren't added in order to make all control flow "explicit" or something.
1. "Single return and out parameters" should have a special mention for Haskell, since Haskell doesn't even have multiple input parameters!
2. Python has assignment expressions now.
Overall, it's a pretty good list of shortcomings of C, but I disagree with several of the points: (a) special-casing subtraction lexing to be whitespace sensitive is silly, and (b) integer division is essential whenever working with arrays or modular arithmetic, and converting types explicitly, like Rust mandates, is definitely the way to go. Who knows if I'd want a float, double, rational or currency type to be the output, anyway?
I still don't understand - you can still have a standalone executable if you want, nothing's stopping you! Package managers just streamline the common case of "I just want to install some software on this computer and have it update automatically". Linux has all the freedom of Windows and more.
JavaScript is a god language. Changing Array.prototype is very much considered an antipattern, except in the case of shims, where it's really useful. JavaScript is reinventing itself, introducing a nice, traditional OOP facade with `class`, and making improvements to functional-ish programming with `let` (as opposed to `var`), arrow functions, and object and array destructuring. The DOM is still very much a "try to display something at all costs" mess that doesn't at all fail fast, but most of the things that you want to happen are indeed happening!
Linux is a headache for two reasons: (1) because it's basically packaging your app for half a dozen different app stores, so you need tools that make that easier for you, and (2) lots of frameworks have no, buggy or unwieldy Linux support, because Linux had such a small userbase. So you're right, it is more of a headache for the developer, but the end user has a much nicer experience (it can't be overstated how nice it is to be able to install almost anything with one command, and update everything with another). Of course, binaries can be downloaded off the Internet just like on Windows, and some apps, like Chrome, will even keep themselves up-to-date without a package manager, again like on Windows, but each app having its own messy, non-standardized updating scheme is something of an antipattern on Linux, even if it's par for the course on Windows.
Huh? Binaries downloaded off the Internet work just as fine on Linux as they do on Windows! Package managers just give you very convenient updating and a chain of trust to greatly reduce the risk of installing malware; and these are things people definitely want - see the App Store, the Play Store, Homebrew, Chocolatey, etc.
You pay for Windows, but Linux is free. Windows is filled with ads; Linux has none. Windows is slow; Linux is less slow. Windows tried to pull some weird tablet hybrid nonsense; Linux desktops are just desktops. Cinnamon, Mate and KDE took the very best parts of old Windows and made them better. Gnome and Pantheon ripped off macOS and they're also great. Every single one of them is more polished and more useable than Windows 10.
But seriously, who in their right mind would tolerate advertisements in software that they paid good money for?
Yes, for anyine who wants to do further research it's called Proton. Valve has tried several times in the past to make gaming on Linux more attractive, but this has by far been their most successful attempt.
OCaml is a very fun language in my experience. Apparently they were going to add ad-hoc polymorphism in the form of modular implicits, but I have no idea what happened to that.
If the business objectives lead to a design so bad that it hurts the business, surely the people who came up with these objectives didn't do a very good job?
But... Wire has both! With generics, you introduce complexity into the language that everyone has to understand, but that's obviously not true when it comes to having accounts that aren't tied to phone numbers!
What do you mean by "higher value"? Getting IE11 to work will net you an extra 2.85% of the market, but adding a very minor feature that's only usable by Safari users doesn't seem to be profitable at all.
To be fair, tab helps you discover commands about as well as a dictionary helps you discover words. I'm personally looking for something like apropos, but much more powerful.
I was expecting something much more sinister (that this man had a Fitbit and they used it to track his location). This is a much more positive use of the technology, but as a layman, my first concern is that this data can be easily forged.
I was under the assumption that that was called sibling call optimization, and TCO referred exclusively to recursive calls. Was that just an LLVM-ism, or did I also get that wrong?
Yet that compromise affects some people much more than others, which is the entire problem, and why some people go so far as to claim discrimination. I do agree that naps are an underutilized solution, but they don't really address the issue.