That last statement was very bold. Do you think there is a direct link between open-sourcing this library and increased telemetry? What about VSCode and increased telemetry?
I don't understand the desire for terse code, it makes things harder to read.
I also think Typescript makes the right tradeoffs, yes it may not have a Haskell-level type system, but in return, it has amazing integration with JS code and existing libraries, and no runtime.
As a side note, coming from someone whose previous exposure to type systems was Java and Kotlin, Typescript seems to have a pretty powerful type system. Yes, it may not have some/many Haskell-level features but I question whether those would have been necessary in the first place. At some point a more rigorous type system must stop generating value, otherwise we would all be using coq.
I think the larger issue is that shell scripts are intrinsically bad for writing readable code.
Consider the "cut" line in the shell script vs the "map" line in the JS script. The map line is easy to understand because it uses a chain of simple functions (map, split, array access, and lastly trim). The "cut" line has to cram all of this functionality into a few command line arguments instead of composing basic building blocks together.
I mean look at this: What does "only delimited" mean, what does "fields" mean, I might just be an illiterate boor but I don't remember what delimiter means off the top of my head (something like seperator, I assume).
cut --only-delimited --fields 2 --delimiter '|'
The JavaScript version is easier to read because it uses fundamental building blocks in the language that are
1. Super intuitive. (Split seems pretty easy to understand, especially when you know the input is a string, similarly everyone knows [1] means array access).
2. Widespread. You have probably encountered all of those JS functions before, I'd say the chance of encountering the "cut" utility is a bit less.
Summary: Shell just fundamentally sucks because it outsources a lot of functionality to various executables, each which have their own command line arguments. The ideal method is to use a programming language with consistent, composable, building blocks.
I am not a rust expert, but I assume the recent many programming languages have a keyword for function declaration is so that functions can be first class objects.
Sometimes I feel like I'm forced to take verbatim notes on my computer, even though I know that's bad for my learning.
Specifically, I'm reading a very detailed textbook on databases. I feel that if I don't take notes I will forget most of the content in the textbook because the textbook is so information dense, but at the same time, whenever I take notes they end up being word-for-word copies of the text because the textbook is already so concise/word-efficient.
Most of the time, I don't see an issue with non-native looking UIs. Oftentimes, non-native UIs look better.
VSCode and Atom both look great and they're non-native. I also think Slack looks pretty good too. Except for MacOS, native UI widgets generally seem to be pretty ugly.
Even Microsoft is embracing non-native UI for its own Microsoft Office platform.
This is definitely an overly ambitious project idea, but now that Google has Jetpack Compose and Apple has SwiftUI, and the web has React, I wonder if it would be possible to make a "meta-framework" that uses a single code-base to compile user written code into source code written in those 3 frameworks respectively.
Then you would get truly native, cross-platform development.
Now, the probability this would ever work is 1%, but it's something that has lingered in my mind anyway.
I feel like unusual language syntax isn't an issue, as long as the syntax is understandable/readable once the programmer learns the syntax.
It doesn't take too long to pick up and become comfortable with a new syntax in a programming language.
Imo, the reason some esoteric languages fail are not purely because their syntax is obscure but because even once you learn the syntax, it is still hard to understand the code (example: Brainfuck).
With Rust, once you learn the new syntax, you can understand Rust code with relatively little effort.
I feel like JSON is a decent format for storing human-readable configuration data.
The use of brackets means if something is broken, you'll know explicitly because your IDE will throw a fit. Formats that are white-space dependent can have subtle errors that aren't easily recognizable on first glance.
The 2 problems with JSON are multiline string support and comment support, but JSON5 solves both of those problems. Sure JSON5 isn't JSON, but YAML isn't JSON either. No matter what you're going to need a library to parse a config file, so why not stick to something based on a widely used data-storage format?
I don't know whether Article 11/13 are good or bad (although at first glance they seem to be bad), but I don't think this attitude of "forcing freedom" onto others is good.
The entire attitude that I should "regain [my] freedom" seems condescending. I don't want to use a P2P alternative to YouTube or Reddit, because 99% of the content is on Reddit/YouTube.
I'm well aware that YouTube collects and sells my personal data, I just don't care.
The idea that legislation is good because it forcefully restricts my choices (indirectly, by harming YouTube), thus preventing me from harming myself seems to be a form of unneeded parenting/hand-holding/babying that I'm not a fan of.
It seems like Bash has tons of footguns and unintuitive syntax. Is this just because the language grew organically?