Threads. A multitasking kernel performs
delicate tasks involving concurrency and contention.
It takes years to get these things right.
Threading exports such problems
into user space where application programmers
can spend months
going after bugs arising from threading issues.
The following link goes to one of my favorite presentations.
At the time John Ousterhout presented it at Usenix, I was one of the
questioners in the audience arguing against his ideas.
Now, I think he was right:
Why Threads Are A Bad Idea (for most purposes) (pdf)
NFS. NFS is an attempt to do something at the wrong
layer. As a result, it turns small failures into large ones and
introduces single points of failure into an otherwise reliable network.
Here's a link that gives some specifics:
Use of NFS Considered Harmful
mod_perl. The biggest risk is
contamination of global state by unruly applications, especially when legacy
perl cgi is placed wholesale under a shiny new mod_perl server.
Also, Apache is getting quite bloated, and linking an entire Perl
interpreter into it is asking for a multitude of reliability
and security problems.
Use only when it is really needed and when scripts will be audited
for mod_perl safety. See for
example this online excerpt from the O'Reilly mod_perl book:
Coding with mod_perl in Mind
Here's a report of a 2-month bug hunt
Document Contains no data
OOP. For much of what I do, object-oriented programming
just gets in the way.
When beginning analysis and design of a system, it is too soon to talk about
instantiations, inheritance, virtual functions, and such. OO zealots I have
worked with seem to bring in the OO-speak way too early, bypassing the step,
after analysis, of choosing a procedural/object-oriented/functional approach
to fit the problem.
For Joe Armstrong's amusing diatribes, see
Why OO Sucks
Eppur si sugat
XML. Philip Wadler's presentation (with cascading T-shirts) at the Erlang
workshop in Pittsburgh
introduced to me the idea of XML as a poor reinvention of S-expressions.
For more, pro and con, despite the title, see the Wiki at the Portland
Pattern Repository for