
All software sucks (2011) - tango24
http://harmful.cat-v.org/software/
======
simias
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.

~~~
Sir_Cmpwn
>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.

------
nerdponx
Anyone who has worked with CSV knows that it is anything but "less harmful"

Edit: I'd seen this page before, but never really appreciated the sheer
arrogance of it until now. It's troll bait.

~~~
MrEfficiency
Why is CSV bad?

I'm a huge fan of SQL, but curious what pitfalls CSV has.

~~~
thomasfedb
Not standardised. Fields that contain commas, newlines, or non-ASCII chars
kill puppies.

~~~
ainar-g
>Not standardised.

Technically there is RFC4180[1], but yeah, CSV has a lot of flavours. I
remember a story about how Excel couldn't correctly open a CSV file because it
had a header that had "ID" as the first field name, and Excel's file format
sniffing algorithm though that it's a different format.

[1] [https://tools.ietf.org/html/rfc4180](https://tools.ietf.org/html/rfc4180)

~~~
ChrisSD
Technically RFC4180 isn't actually a standard but perhaps the world would be
better if people could agree to treat it as such. However those living in
countries that use the comma as a decimal separator may disagree.

> This memo provides information for the Internet community. It does not
> specify an Internet standard of any kind.

~~~
_dps
As someone from one of those countries I've never understood this criticism of
CSV. JSON doesn't let you choose your own separator either but no one levels
this complaint at it. Defensively quoting values that may contain commas is
easy, and nearly always a negligible cost. This really seems like a total non-
issue to me and I've never understood how it has gained so much mindshare
among CSV critics.

~~~
CodesInChaos
The problem is Excel's horrible CSV implementation, and opening the file in
Excel is one of the main applications of CSV. The German version of Excel
expects semicolon separated CSV, where comma serves are decimal point and the
date format must also be German. I found no way to create a CSV file that
opens in Excel, regardless of locale. (And there are a million other problems
in Excel's CSV implementation)

------
ainar-g
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.

[1]
[https://groups.google.com/forum/#!topic/comp.os.plan9/xEb4wY...](https://groups.google.com/forum/#!topic/comp.os.plan9/xEb4wYzfaBc)

[2]
[http://quotes.cat-v.org/programming/](http://quotes.cat-v.org/programming/)

~~~
emaste
Al Viro's a long time Linux kernel developer with an interest in at least
filesystem and related code.

------
inetknght
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.

------
jdormit
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?

------
_sdegutis
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.

[1]
[https://lists.suckless.org/dev/1408/23366.html](https://lists.suckless.org/dev/1408/23366.html)

~~~
raffomania
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.

~~~
52-6F-62
You weren't exaggerating! I was curious and had to stop after a little while.

They don't sound like happy people.

------
AndrewSChapman
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?

~~~
giancarlostoro
D of all things...

------
beat
Bah. This is just smug, elitist taste-grumbling. There's no coherent argument.

I've written "Why software sucks" too, but I like to think I actually had a
point.

------
matthewmacleod
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.

------
nonsince
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).

------
merricksb
Last discussed in 2014:
[https://news.ycombinator.com/item?id=7613239](https://news.ycombinator.com/item?id=7613239)

------
vinceguidry
The only rationale given here is this:

> 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
The quotes are fun, but the actual list of "harmful" software is an exercise
in self-inflated oft-nostalgic opinion.

------
lmilcin
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.

~~~
krapp
>Are you kiddin' me? Have you ever tried creating any non-trivial web service
with ANSI C?

The sort of person who agrees with this list likely also believes the web
should do nothing but serve static HTML.

------
commanderjroc
I think everyone can agree that software sucks cause of X, Y, and Z.

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
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.

------
xroche
"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 ?

~~~
xamuel
C is a better alternative to C++ for many applications. If it weren't, it
wouldn't still be so widely used.

~~~
xroche
It's still used today because (1) of historical code and (2) the fact many
people are fluent with it (including me). But this is a terrible languages in
most cases.

~~~
xamuel
C is relatively simple, C++ is so complex practically no-one understands all
of it. Many C++ features are "OOP kool-aid" and do more harm than good (if
people would just realize you can pass around pointers to C struct's, which is
all the "object orientation" necessary for 99% of the software in the world)

~~~
self_awareness
You can do in C++ everything you can do in C. You don't need to use
C++-specific stuff.

Also, using your logic, C constructs are nothing more than just assembly with
more overhead. Why not just use assembly instead? Answering this question will
probably answer your question about OOP stuff.

~~~
xamuel
>You can do in C++ everything you can do in C.

By that logic, we should all use "omniglot", one language in which all the top
100 languages are first-class supported. What could possibly go wrong :D

~~~
pjmlp
I guess you mean UNCOL.

