Pearls of wisdom
This blog always had more unfinished drafts than posts, but recently it's getting ridiculous. I do have a couple of drafts I
seriously intend to finish (usually the drafts which don't make it to posthood during the first 4 hours or so go to the eternal
drafthood land.) Until I'm able to think this stuff out to the point where I can share the results of my thinking, I figured I
could share the far less scarce resource of Wisdom with ya.
***
Since I've violated the Golden Rule of Helping Friends with their PC Problems and attempted to help a friend with his PC
problem, expectedly wiping out his hard drive in vain, I had many opportunities to explain the Programmer Paradox: how can a
programmer fail to make a computer do as he wishes? While the difficulty of debugging a program without the source proved hard
to explain to laymen, I think I've found a metaphor that does a good job. A programmer is to the blue screen of death what Mikhail Kalashnikov is to a loaded AK-47: just as helpless a victim as any other mortal, except for having a profound
understanding of the mechanisms of his execution.
***
I would like to get some statistics on file encryption. For example, of all the files on the planet, X% are encrypted. Of all
those files, Y% will never be read by someone due to encryption. Of all those files, Z% will never be read by malicious
intruders. If I could lay my hands on the value of just one of these unknowns, I'd pick Z, because at least 100-Z% of the files
will never be read by their owners. I would bet on Z lying somewhere between 0 and 1.
***
One of the key traits of good code is the ease at which it can be modified. One of the key traits of bad code is the high
cost of modifying it. So good code is likely to deteriorate until it's bad enough to become hard to change, and bad code is
likely to stay bad. In short, code has a strong tendency to end up bad.
This can sound worthlessly pessimistic, similarly, for example, to "It is easier to break a leg than it is to cure it,
therefore, most legs end up broken." However, I think it's more analogous to aging β the accumulation of changes in an organism,
observably causing most animals to end up dead. Similarly, code that is used will be changed, code that is changed will degrade,
and code that degrades beyond a certain point will die.
***
Health tends to be simpler than disease. For example, everybody can brush their teeth but few people can treat cavities.
Similarly, it's not very hard to maintain a sane development environment, but pretty hard to deal with the tide of bugs and of
long-living branches resulting from a failure to do so. However, I'm generally optimistic about the chances of such cavities to
be treated, and as usual, the optimism is based on the pain they cause β a strong incentive to seek and reward treatment.
***
There's this evolution vs Intelligent Design debate. Well, I don't know about life on Earth, but I sure have hard time
believing in Intelligent Design in software. Code has to repeatedly survive exposure to users upon whom its fate depends. Yes,
"users" can be a set containing just the author, but only if it's honest-to-God USAGE, that is, the author has to pay a price
when the program is hard to use β like not getting important things done properly. Show me a program that someone finds useful
and that wasn't subject to such evolutionary pressure, but rather was Intelligently Designed as useful.
I think that my intense hatred of the word "design" has to do with its prominent place in the speech of software
creationists. These people are likely to constantly complain about not having enough resources to do The Right Thing in the ugly
real world. They are also likely to give you software that you hate enough to wish to kill them, and be articulate enough to
convince you that the problem is at your end, and fail to notice how this latter ability quadruples your desire to slash their
body into square millimeter pieces.
***
I'll conclude with an off-topic request: if you know a good text advocating a collectivistic or other kind of heterodox
approach to economics, I'd be very grateful for a reference. By "advocacy", I mean a text for laymen expressing support for a
certain set of policies (as opposed to merely criticizing the effects of existing policies) β like Milton Friedman's "Capitalism
and Freedom", for example.
About the code getting worse until it becomes bad thing, isn't that a
bit like the second law of thermodynamics? Taking order and turning it
to chaos is free, but increasing order in the system requires energy. If
you consider the set of all possible changes as the union the set of
"good" changes and the set of "bad" changes, the good changes are a tiny
fraction of the bad ones; there are so many ways to screw up and only a
few ways to do it right.
Perhaps another way of looking at it is the following: if we assume a
programmer has, say, probability p = 0.9 of selecting a good design for
each individual change, 0.9^n -> 0 as n->Inf.
Of course, not every change must be a good one in order for the end
result to be a good one. If I'm driving to my friend's house and make a
wrong turn, that doesn't mean I don't get there. That equation only
works for choices which don't wipe out earlier choices.
As regards a text for laymen advocating a particular set of heterodox
economic policies, the real problem is there being so many to choose
from. Just about any "-ism" has an accompanying manifesto, and often a
text setting out its proposals in detail. Are you looking for *any* of
them, or something within a particular range? E.g. do you want someone
advocating communism? (And if so, which kind of communism?) Or
left-anarchism? Or mutualism? Or moderate/reformist socialism?
Classic works advocating decentralized collectivism (i.e. neither
capitalism nor communism) are Peter Kropotkin's "The Conquest of Bread"
(2nd half; 1st half mostly attacks other economic systems) and "Fields,
Factories and Workshops". Both are a bit dated, though, being 1890s,
especially since they get pretty specific with some of their proposals
for e.g. how farming would take place and how factories would
operate.
"A Future for Socialism" by John E. Roemer (1994) is a modern
exposition of market socialism, though apart from the politics oddly not
all that heterodoxβ it's basically a fusion of socialist goals with
orthodox neoclassical economic theory.
"Reintroducing Macroeconomics: A Critical Approach" by Steven Cohen
(2007) is a decent textbook-like survey of heterodox economics, though
it doesn't really advocate any specific one.
And there's always "The Communist Manifesto".
Oh, yeah, there's always "The Communist Manifesto", and I think it's
a useful thing to have read, however, I'm looking for something less
homicidal or at least masquerading as such in terms of attitude, and
something that still hasn't proved as moronic as the abolition of
private property in terms of policy.
What interests me in this context is advocacy of an approach with a
different view of the optimal role of government than the view of the
neoclassical theory. Thanks for your pointers.
Regarding the driving metaphor β to me it's more like driving in the
midst of swamps, with most wrong turns bringing your vehicle deeper into
a swamp, thus reducing the chance for correcting your path or otherwise
proceeding.
RE: heterodox economics.
I don't know the answer, but the major left/heterdox blogger
economists appear to have collectivised at:
http://econospeak.blogspot.com/
They will have the answer. Also, you might find this discussion very
interesting:
http://tpmcafe.talkingpointsmemo.com/tpmcafe-book-club/2007/05/27-week/
Starts at the bottom.
Try "against capitalism", by David Schweickart. As the title
suggests, a good part is devoted to attacking capiatlism, but he argues
that a better alternative exists, based on the experiences of the
Mondragon region in spain, Tito's Yugoslavia, and Japan.
The main ideas were: businesses should be cooperatives, investment
should be a democratic and distributed process (a local investment bank
gets money from gov't, allocates funds to cooperatives), and
cooperatives pay a tax proportional to the capital invested in them.
He proceeded to write "After Capitalism", which I haven't read, where
he updates and elaborates his proposal.
A belated follow-up on this, but for "an approach with a different
view of the optimal role of government than the view of the neoclassical
theory", one reason it's hard to find a good statement, I think, is that
to some extent it's become the dominant view of economics, so is
something like orthodoxy now. A book like Milton Friedman's has a
manifesto quality because it's arguing against existing consensus. The
consensus itself tends to have a more expansive view of the role
government should play, from countercyclic fiscal policies to social
safety nets, antitrust law, etc. In the current climate, there's a
renewed focus on financial regulation and its role in combating systemic
risks to the economy, as well. A lot of mainstream economists would also
like the government to be more active in taxing negative externalities,
e.g. release of pollution, in order to have the market properly account
for them.
The deterioration of code sounds like it obeys the second rule of
thermodynamics. There is also the continuum law of code: "Between every
two bugs there is another".
Actually I usually refer to this as the second rule of thermodynamics
for code, I think I didn't call it that here to make it sound smarter
than it is (under the assumption that adding a smart word like
thermodynamics into a pop tech blog post actually makes it dumber).
As to the continuum rule β thanks for closing a gap in my knowledge
of codology.
Post a comment