I think everybody who's spent any time in the industry will agree with the feeling to some level. That being said the "harfmul stuff" table is a prime example in flamewar-bait, I seriously hope nobody will take it at face value. CVS better than SVN? Anything from plan9 instead of stuff people actually use? Good luck getting 9p to work reliably faster than NFS... Oh and you should use ed instead of vim, tcc instead of gcc and awk intead of ruby.
If this table is not meant as pure bait then I think it's actually harmful on its own, an experienced dev will be able to pick the right tool for the right job on their own. On the other hand a beginner will be tempted to cargo cult it to seem hardcore without understanding the tradeoffs.
Sometimes it's simpler to reuse a complex solution than write your own simple code from scratch. It's easier and simpler to use C++'s std::map than implement a red-black tree from scratch in C.
>Good luck getting 9p to work reliably faster than NFS
Fast != good. A slower system which works more reliably and elegantly is often (usually) a better choice.
>awk intead of ruby
I agree with this, though it's expressed poorly. For use-cases within the intersection of awk and ruby, use awk. For use-cases without, you probably shouldn't use ruby anyway.
>It's easier and simpler to use C++'s std::map than implement a red-black tree from scratch in C.
Easier, yes, simpler, no. When you use C++ you get all of the baggage that comes with it, increasing your complexity hugely.
> That being said the "harfmul stuff" table is a prime example in flamewar-bait
Agreed. Especially with the GPL and LGPL, etc being "harmful". That seems like they're trying to evoke an emotional response.
Sure, if there's different software I should use instead of $popular_X , I'm all ears. But be aware, there's context switching costs from going to one to another. And some software, even being worse, has better support by the community.
Im going to flag this article, for your complaints. It's not constructive, and spawns flame-y yelling.
>Good luck getting 9p to work reliably faster than NFS...
Could you elaborate on that? From what I've heard (in my echo chamber), NFS is "complex, slow, and unreliable" while 9P2000 is "simple, fast, and reliable".
Uriel, the creator of this page, has committed suicide in 2012[1]. As far as I know, the website hasn't seen that much support since then. We could only guess, what he would've added to the list today.
My favourite page is the one with programming quotes[2]. I don't know, who that Al Viro is, but he is quite a savage.
I'm known to my coworkers to complain about things I dislike and that I dislike almost everything.
This page lists things even I like.
It doesn't even go on to explain why the things are better or worse. Well, it sort've does, if you look for the bad things on the left side. But then he goes into FUD from decades ago that's particularly not relevant to today (in C++ specifically, probably also true for other bad things).
I'm all for ranting about terrible software but at least make sure it's accurate and versioned/dated.
So this is a list of "harmful things" and "less harmful alternatives", with no explanation given as to how each tech has been classified. To take a random example, why is man less harmful than info?
Fun little story, I used to be sympathetic to the all software sucks movement and attitude. Then I tried to port `st` (simple terminal) to Mac OS X by separating its core from its X11-dependent code and pulling the globals into a single struct, so that I could wrap it with NSView. When I tried to ask the `st` community if they wanted my changes[1], they replied that these changes were unnecessary, that coupling the core with X11 was perfectly fine, and especially that there's no reason to port it to such an awful non-free OS as Apple's. I now prefer to take a constructive and positive approach to software development, instead of just having a negative or cynical attitude.
I can't believe how rude the comments in this thread were.
I generally agree that we have too much complexity in software, but I also feel that often people take the "minimal" software notion to an extreme level of elitism, excluding and attacking people for reasons not related to the original goal to make better software.
It progresses toward constructiveness near the end of the thread though, FWIW, so it's worth reading through if you want sort-of-closure I guess.
My only disagreement is with the one person who said that the other people in the group were strongly-opinionated and that it was "healthy". No. Some of the messages in this thread are deeply insulting personal attacks and simply inappropriate to ever submit anywhere.
That you managed to stay focused is impressive. I fear I would have spent _way_ too long on, shall we say, an "appropriate" reply. Actually I might've just up and left, heh.
I appreciate the TIL regarding a community to call out and avoid. Yes, people like the ones found in this thread are everywhere, but to paraphrase something I said on a similar subject recently (https://news.ycombinator.com/item?id=17730570, see parent comments for context), I have no inclination to field the signal/noise ratio to engage communities where such people are majority vocal. With such people, it seems you have two options - argue against their views and suffer the continuous backlash; or implicitly agree by not arguing, and risk the potential expectation to behave contrary to your personal standards as a result. Alternatively, one simply avoids them, or calls them out.
HN's moderation does a reasonably good job of eliminating such contention. As time goes by I continue to find new ways to appreciate the carefully-curated status quo here. It's certainly not perfect (particularly the automated post-killing system, which kills a small but noteworthy number of good posts) but at least I never have to drown in distraction and meta basically ever, and I have showdead on so I can read the dead comments (and, most importantly, read with the expectation that they might be inflammatory so there's less surprise), so it's pretty good.
I use dwm, st and slock myself so I'm definitely grateful for the suckless people but it's true that their arrogant attitude is often silly, unwarranted and counterproductive. I also find that they often mistake terseness for elegance and simplicity, while their code is decent it's far from the best C code I've ever encountered (apparently tests and comments are not part of the philosophy). Their fetishization of C is also ridiculous, they actually advise using C instead of a shell script to set the dvm status bar because it's more minimalistic that way. Since you'll probably want to read a bunch of /proc and /sys entries and/or call third party programs I don't really see why anybody would think C is more appropriate than /bin/sh.
But hey, I'll still take that over "what's wrong with Electron apps anyway?".
Just do what I do: fork their code and never even consider contributing anything back since you'll probably get shut down anyway.
Listing FreeBSD, D, Java, C++, and SQL databases as "harmful stuff", and suggesting "hierarchical file systems" and "textual interfaces" as not harmful. What the actual hell?
I’m sure we’ve all seen the various famous examples of this kind of opinion and attitude floating around the Internet over time, but I’m not sure what value they really have. They’re mostly unhelpful aphorisms that don’t really offer any context or argument.
The “less harmful alternatives” are simpler only in a surface-level way. Go is “simpler” than Python in that the language has less features, but that leads to more complex code since there is less possibility to abstract things away. It is also a very hard language to write reliable code in, and reliability seems to be the stated goal of this whole thing. Python is hard to write reliable code in too, but Go is not a good alternative in this aspect.
Also, many of these alternatives make no compromise for practicality. GCC sucks, we can all agree, but without it our code would be slow and buggy (TCC doesn’t support ASan or other such debugging tools AFAIK).
> At the moment a detailed rationale is not provided for most of this, so figuring out why some things are considered more or less harmful than others is left as an exercise for the reader. Here is a hint: complexity is the bane of all software, simplicity is the most important quality. See also: Worse is Better by Richard Gabriel.
This is, well, just another way for people to turn their opinions into objective fact. The lumping of C++, D, Python and Ruby all together betrays either a lack of sincerity, or over-opinionation to the point of myopia.
The page links to Zed's rant about how Rails is a ghetto, while he makes some great points about the economics of that ecosystem, I'm left with no salient reasons why I shouldn't choose Rails for a project. Sure, if I want to do what he tried to do in that space, I have no reason to not expect I'll have the same kind of experience he did. The Rails community might be a ghetto, but my project doesn't have to be.
Read between the lines and you see Zed does have respect for Ruby and the Zen of the language. To see it linked on cat-v, to my mind looking for real reasons why people should and shouldn't do things, well, the essay clashes pretty hard with the seeming ideology that "complexity is the bane of all software." Zed was perfectly fine with Rails and all its complexity, he just hated the community and ecosystem. Cat-V is linking to his essay not because they actually agree with him, but because they are enamored with his style.
The whole site reads like a bunch of neckbeards blowing off steam.
Not sure who prepared this list but obviously this is extremely subjective.
C is less harmful alternative to Java? Are you kiddin' me? Have you ever tried creating any non-trivial web service with ANSI C?
For almost every example on the list I could bring examples showing situation where exactly opposite is true.
The old rule of thumb is, any definitive and unsubstantiated statements about superiority of any technology over any other technology should not be trusted.
Years ago, I was complaining to a co-worker about a terrible codebase. He looked at me and said, "ok, when was the last time you looked at a program and thought, 'wow, this is really good code'?" That simple statement changed the way I view software quality forever.
"Less harmful alternatives" seems in many cases to be "Exotic technologies hardly used by anyone, simply unusable in any serious environment". In some cases, comically wrong: C as a better alternative to C++ ? Did I totally miss the obvious satirical nature of the page ?
[+] [-] simias|7 years ago|reply
If this table is not meant as pure bait then I think it's actually harmful on its own, an experienced dev will be able to pick the right tool for the right job on their own. On the other hand a beginner will be tempted to cargo cult it to seem hardcore without understanding the tradeoffs.
Sometimes it's simpler to reuse a complex solution than write your own simple code from scratch. It's easier and simpler to use C++'s std::map than implement a red-black tree from scratch in C.
[+] [-] Sir_Cmpwn|7 years ago|reply
Fast != good. A slower system which works more reliably and elegantly is often (usually) a better choice.
>awk intead of ruby
I agree with this, though it's expressed poorly. For use-cases within the intersection of awk and ruby, use awk. For use-cases without, you probably shouldn't use ruby anyway.
>It's easier and simpler to use C++'s std::map than implement a red-black tree from scratch in C.
Easier, yes, simpler, no. When you use C++ you get all of the baggage that comes with it, increasing your complexity hugely.
[+] [-] crankylinuxuser|7 years ago|reply
Agreed. Especially with the GPL and LGPL, etc being "harmful". That seems like they're trying to evoke an emotional response.
Sure, if there's different software I should use instead of $popular_X , I'm all ears. But be aware, there's context switching costs from going to one to another. And some software, even being worse, has better support by the community.
Im going to flag this article, for your complaints. It's not constructive, and spawns flame-y yelling.
[+] [-] ainar-g|7 years ago|reply
Could you elaborate on that? From what I've heard (in my echo chamber), NFS is "complex, slow, and unreliable" while 9P2000 is "simple, fast, and reliable".
[+] [-] nerdponx|7 years ago|reply
Edit: I'd seen this page before, but never really appreciated the sheer arrogance of it until now. It's troll bait.
[+] [-] hrktb|7 years ago|reply
I was amazed when we tried to find something to base a spec on, to help clients to read our CSV files.
[+] [-] MrEfficiency|7 years ago|reply
I'm a huge fan of SQL, but curious what pitfalls CSV has.
[+] [-] ainar-g|7 years ago|reply
My favourite page is the one with programming quotes[2]. I don't know, who that Al Viro is, but he is quite a savage.
[1] https://groups.google.com/forum/#!topic/comp.os.plan9/xEb4wY...
[2] http://quotes.cat-v.org/programming/
[+] [-] emaste|7 years ago|reply
[+] [-] inetknght|7 years ago|reply
This page lists things even I like.
It doesn't even go on to explain why the things are better or worse. Well, it sort've does, if you look for the bad things on the left side. But then he goes into FUD from decades ago that's particularly not relevant to today (in C++ specifically, probably also true for other bad things).
I'm all for ranting about terrible software but at least make sure it's accurate and versioned/dated.
[+] [-] jdormit|7 years ago|reply
[+] [-] _sdegutis|7 years ago|reply
[1] https://lists.suckless.org/dev/1408/23366.html
[+] [-] raffomania|7 years ago|reply
[+] [-] exikyut|7 years ago|reply
It progresses toward constructiveness near the end of the thread though, FWIW, so it's worth reading through if you want sort-of-closure I guess.
My only disagreement is with the one person who said that the other people in the group were strongly-opinionated and that it was "healthy". No. Some of the messages in this thread are deeply insulting personal attacks and simply inappropriate to ever submit anywhere.
That you managed to stay focused is impressive. I fear I would have spent _way_ too long on, shall we say, an "appropriate" reply. Actually I might've just up and left, heh.
I appreciate the TIL regarding a community to call out and avoid. Yes, people like the ones found in this thread are everywhere, but to paraphrase something I said on a similar subject recently (https://news.ycombinator.com/item?id=17730570, see parent comments for context), I have no inclination to field the signal/noise ratio to engage communities where such people are majority vocal. With such people, it seems you have two options - argue against their views and suffer the continuous backlash; or implicitly agree by not arguing, and risk the potential expectation to behave contrary to your personal standards as a result. Alternatively, one simply avoids them, or calls them out.
HN's moderation does a reasonably good job of eliminating such contention. As time goes by I continue to find new ways to appreciate the carefully-curated status quo here. It's certainly not perfect (particularly the automated post-killing system, which kills a small but noteworthy number of good posts) but at least I never have to drown in distraction and meta basically ever, and I have showdead on so I can read the dead comments (and, most importantly, read with the expectation that they might be inflammatory so there's less surprise), so it's pretty good.
[+] [-] simias|7 years ago|reply
But hey, I'll still take that over "what's wrong with Electron apps anyway?".
Just do what I do: fork their code and never even consider contributing anything back since you'll probably get shut down anyway.
[+] [-] Sir_Cmpwn|7 years ago|reply
[+] [-] barbs|7 years ago|reply
[+] [-] trampi|7 years ago|reply
[+] [-] Raphael_Amiard|7 years ago|reply
[+] [-] AndrewSChapman|7 years ago|reply
[+] [-] giancarlostoro|7 years ago|reply
[+] [-] Sir_Cmpwn|7 years ago|reply
[+] [-] beat|7 years ago|reply
I've written "Why software sucks" too, but I like to think I actually had a point.
[+] [-] matthewmacleod|7 years ago|reply
[+] [-] nonsince|7 years ago|reply
Also, many of these alternatives make no compromise for practicality. GCC sucks, we can all agree, but without it our code would be slow and buggy (TCC doesn’t support ASan or other such debugging tools AFAIK).
[+] [-] merricksb|7 years ago|reply
[+] [-] vinceguidry|7 years ago|reply
> At the moment a detailed rationale is not provided for most of this, so figuring out why some things are considered more or less harmful than others is left as an exercise for the reader. Here is a hint: complexity is the bane of all software, simplicity is the most important quality. See also: Worse is Better by Richard Gabriel.
This is, well, just another way for people to turn their opinions into objective fact. The lumping of C++, D, Python and Ruby all together betrays either a lack of sincerity, or over-opinionation to the point of myopia.
The page links to Zed's rant about how Rails is a ghetto, while he makes some great points about the economics of that ecosystem, I'm left with no salient reasons why I shouldn't choose Rails for a project. Sure, if I want to do what he tried to do in that space, I have no reason to not expect I'll have the same kind of experience he did. The Rails community might be a ghetto, but my project doesn't have to be.
Read between the lines and you see Zed does have respect for Ruby and the Zen of the language. To see it linked on cat-v, to my mind looking for real reasons why people should and shouldn't do things, well, the essay clashes pretty hard with the seeming ideology that "complexity is the bane of all software." Zed was perfectly fine with Rails and all its complexity, he just hated the community and ecosystem. Cat-V is linking to his essay not because they actually agree with him, but because they are enamored with his style.
The whole site reads like a bunch of neckbeards blowing off steam.
[+] [-] thomasfedb|7 years ago|reply
[+] [-] lmilcin|7 years ago|reply
C is less harmful alternative to Java? Are you kiddin' me? Have you ever tried creating any non-trivial web service with ANSI C?
For almost every example on the list I could bring examples showing situation where exactly opposite is true.
The old rule of thumb is, any definitive and unsubstantiated statements about superiority of any technology over any other technology should not be trusted.
[+] [-] krapp|7 years ago|reply
The sort of person who agrees with this list likely also believes the web should do nothing but serve static HTML.
[+] [-] commanderjroc|7 years ago|reply
But, when I see a list like this. Its quite obvious that this is coming from a mindset of the average user should not be using software at all.
Imagine if you will, your grandma always calling you up because she got lost in the textual interface. Yeah that would get old fast.
Also how would one look at cat pictures through a textual interface?
[+] [-] commandlinefan|7 years ago|reply
[+] [-] draw_down|7 years ago|reply
[deleted]
[+] [-] xroche|7 years ago|reply
[+] [-] xamuel|7 years ago|reply
[+] [-] MrEfficiency|7 years ago|reply
Embedded systems should be made 'simple' and C++ is the opposite of that.
But I agree with your comment. I found the alternatives equally as harmful, especially as they have a smaller community.