Tuesday, May 15, 2007

The Offended States of America

Recently, the demise of radio talk show host Don Imus for using the phrase "nappy-headed ho's" caught my attention. Of course, there was quite a bit of talk about the "incident," including talk about the appropriateness or inappropriateness of using the phrase on a radio talk show, and following his firing by CBS, a lot of talk about whether or not CBS should have fired him. Lately, I hear that he is suing CBS for their action, which it seems, violated a contract agreement.

Most recently, stories about other "inappropriate" language have been promulgating, and this is not only typical, but saddening to me. The purpose of this message is not to discusss what is "appropriate" or "inappropriate" to say on public air waves elsewhere. The purpose of this message is to discuss the implications of the public reaction to such speech. I am concerned that the real problem here is one which is not being discussed.

What concerns me first and foremost is the increasingly popular notion that we should not only take offense at the usage of certain phrases and words in others, but that we should also meddle in the affairs of others to prevent such speech.

It seems that the United States is becoming a country of busy-bodies, people who attempt to control the behavior of others by means of coercion or force. This is far worse than being a nation of gossips. Gossiping is a common enough sin, and sin it is, but we are all prone to it. Gossip is harmful, as it is hurtful to the object of gossip. It is easy enough to test this idea. If one would be hurt to be the object of gossip, one must assume that others would be hurt as well. Since there is no benefit to the practice of idle gossip, and it is hurtful, it is wrong.

However, it is one thing to gossip, and entirely another (and far more harmful) to attempt to control the behavior of others through coercion or force. Again, the test here of the behavior is to ask whether one would desire to be controlled through coercion or force. I doubt that anyone would find this desirable.

Of course, there are times when coercion and/or force becomes necessary. It is necessary to use coercion or force to prevent murder or robbery, for example. I use these extreme examples as unquestionable examples of the justification of coercion or force. There are many forms of behavior that might be candidates for the just use of coercion or force. These cover a spectrum, with obvious behavior at one end, and obvious behavior at the other, but with many behaviors lying somewhere in-between. And that is the rub.

Speech falls into this middle category, and we have debated for centuries where we may draw the line between speech which may be offensive but is harmless enough to ignore, and speech which justifies the use of coercion to inhibit. Speech is powerful, and can be a means of great good or great evil. People have been encouraged, inspired, and even saved from death as a result of speech. People have also been discouraged, harmed, and even brought to death as a result of speech.

We know that, for example, gossip is harmful, as I mentioned before. It is harmful because it is idle, having no redeeming social value, and because it causes the object of the gossip to feel pain. However, we also agree that gossip does not necessarily fall into the category of speech which justifies coercion. If we were to employ coercion to prevent all pain, we would cause more pain than we would prevent as a result of it. A certain amount of pain can be beneficial to a person. It may build character, or strengthen the person's ability to resist pain. Like bacteria, a certain amount of it is actually beneficial. Therefore, as a society which values freedom as beneficial to mankind, we tolerate a certain amount of gossip.

We also know that other forms of speech can be harmful, such as sedition, speech which encourages discontent and rebellion against the order of society. We know that advocating murder or other forms of criminal behavior is harmful, and though we might tolerate a certain amount of this, it might well fall into the category of speech which might justify coercion to attenuate.

However, we also believe in the freedom of speech, as the free exchange of ideas and information is beneficial to everyone. In fact, the Constitution of the United States guarantees freedom of speech. But this guarantee has limits, for the reasons mentioned above.

On the other hand, name-calling and mockery, satire and parody, which often fall into the category of "comedy," are tolerated by our system of government. This sort of speech may cause a certain amount of pain, but it does not fall into the category of speech which justifies the use of coercion. Historically, this sort of speech has been employed for a variety of purposes, such as illustrating a point, entertainment, or pure silliness. In this country, in the past, entertainers like José Jiménez, a fictional character portrayed by comedian Bill Dana, Father Guido Sarducci, portrayed by Don Novello in the early years of Saturday Night Live, and HandyMan, portrayed by Damon Wayans in the tv series "In Living Color," are just a few examples.

Yes, some of these comedic characters were offensive to some people, but they were all highly popular, and the real question is, was there a redeeming social value to such? I would say "yes." These sorts of buffoons fall into the category of speech which benefits the object by strengthening the character, as a certain amount of bacteria is beneficial to our health. Not only that, but laughter is healthy, and there was no implied cruelty in these portrayals. That is an important point.

The intent of speech is a critical factor in the determination of its harmfulness. Ridicule which is intended to harm is not easily mistaken, and quite often finds its mark. We are far better at determining the intent of speech than we may admit. And indeed, there are some who are so deluded that they can no longer differentiate between good-natured jibes and cruelty. This trend towards delusion seems to be increasing these days, and this is the harm that I see in recent events.

Don Imus, in his employment of the phrase "nappy-headed ho's," was clearly not malicious. In fact, he may well have been satirizing two expressions which came out of the black community in the first place. Is there a place for such satire? I would say, certainly. I find it bemusing to observe the plethora of deprecating expressions that have emerged from the black community towards other blacks (and whites, latinos, etc). Am I offended? No. And neither is anyone else offended when blacks themselves employ such expressions. The problem in this case was the employment of these expressions by a white man. And the offense taken, not by the objects of the speech, but by political ambulance-chasers, is certainly a problem.

What exactly is the problem? The problem is that a climate of fear is emerging in this country. People are becoming afraid to speek freely, and for good reason. We all saw the way that CBS caved to the political hammer employed by "Reverend" Al Sharpton et al. We saw how Don Imus lost his job. The consequences of this can be seen in the flurry of similar incidents which transpired with regards to other comedic radio talk show personalities. It is not the likes of Don Imus that we are afraid of; it is the likes of "Reverend" Al Sharpton, who employ speech to inflame, to hurt, to destroy careers and incite fear in anyone who might somehow stand in the way of their political ambitions for personal power.

Coercion is not desirable. In the case of Don Imus' "gaff," presuming that anyone was genuinely offended (which I doubt, hopefully), a public apology should well have sufficed, particularly because the remark was not made with evil intention. A public apology was made. But that was not enough to satisfy the "Reverend." Why? Obviously, the "Reverend" was not as offended as he pretended to be. Therefore, there was another motive. The "Reverend" saw an opportunity to strengthen his political power base by portraying himself as a defender of "black rights."

Of course, even the phrase "black rights" is rife with racism. If all men are created equal, why should some men have rights specifically assigned to them and not to others? I am reminded of the book Animal Farm, by George Orwell. This book, which is an allegorical account of Soviet Totalitarianism, in which animals on a farm rise up in rebellion against the humans, describes the creation of "Seven Commandments," which begins with the statement "All animals are created equal." Eventually, as the leaders of the revolution acquire more and more power, this first commandment is revised to read "All animals are created equal, but some are more equal than others." In the end, the pigs who lead the revolution become indistinguishable from the humans whom they conquered.

At any rate, the climate of fear which is growing in this country is causing people of weaker constitutions to succumb to ideas that suppress free speech, and thus portend an evil end. If we allow such suppression to continue, we will all become enslaved to the likes of Al Sharpton and other megalomaniacs, dictators and self-serving political hacks. The result of such oppressive regimes is instability, unrest, and violence.

The only solution is at the individual level. To employ coercion to solve the problem would simply exacerbate the problem. To solve the problem, we must as individuals decide that we will not be initimidated by those who would suppress free speech, and we must employ speech to encourage others to do the same.

Of course, you are free to decide for yourself!

Sunday, May 06, 2007

A Day of Reckoning

As a cunning linguist, one of my favorite web sites is the Online Etymology Dictionary. This web site is a perfect example of the incredible potential of the Internet for benefitting mankind as a whole, and any human being as an individual. Humans are networking organisms. Our brains are networks. And our brians store and seek information using networking. But that is a topic for another discussion, I reckon.

What I figured I would discuss today is abstraction. As a programmer, I am keenly aware of the perceptions of people with regards to computers, what they think they are, and what they think they do. Misperceptions about computers extend even to the family of those who call themselves "developers," or even "programmers," and this is a subject of no small concern to me. While abstraction is an incredibly useful tool, one that our brains employ naturally, it can become a source of confusion, and as much of an impediment to progress as it is an aid.

The problem is exemplified by the increasingly common phenomenon in the programming business of the ignorant developer. Technical schools, tools, and high-level programming languages enable people to employ the tools of programming without understanding what they are, or why they work. While this perhaps fills a business need, providing a less-expensive pool of "professional developers" for certain types of tasks, I think that ultimately it may produce more problems than it solves. An ignorant developer is much more likely to build unstable software. Unstable software is not necessarily immediately apparent. A short-term savings can develop into a long-term albatross, in the business world.

Getting back to the Online Etymology Dictionary, there is a correlation between the parsing of language and the understanding of it. We often think we understand the meaning of words when in fact, we only have a vague and impartial sense of what they mean. In fact, we sometimes think we understand the meaning of words because we employ them successfully, when in fact we don't understand them at all. This too is a long-term problem. And with the nearly-instant availability of information on the Internet today, there is no excuse for ignorance.

The word "computer" comes from the Latin "computare," which means literally "to count." There is a reason for this. When most of us think of computers, we envision a box with a monitor, a mouse, a keyboard, and perhaps some other peripherals attached to it, either inside or outside of it. This is a fallacy. In fact, a computer is nothing more than the processor inside the box. The rest of the machine is an interface to the processor, and a set of tools for doing such things as storing and organizing data produced by the processor.

The processor of a computer, or more accurately, the computer itself, does only one thing, and it does it very well. It counts. A computer is roughly the same thing as the ancient Chinese abacus. The ancient Chinese abacus was the first known computer, which was in fact an extension of the earliest computer, which was the human hand. We have a base 10 numbering system because we have 10 fingers on our 2 hands. Before the abacus, people used their fingers (and possibly toes) for counting.

All of mathematics is based on counting, even Calculus. Addition is counting up. Subtraction is counting down. Multiplication is addition (counting up). Division is subtraction (counting down). And all mathematical operations are composed of various combinations of addition, subtraction, multiplication, and division.

But like mathematics, computing has evolved abstractions which enable long operations to be expressed more concisely. Mathematical abstractions have proven to be extremely useful, enabling us to create an ever-increasing box of mathematical tools which we employ in performing practical calculations used in nearly every aspect of our lives. Anything in the universe can be expressed using mathematics. And this is because everything we perceive we perceive by mathematical means.

We identify a thing by defining it. And the word "define" is derived from the Latin "finire," meaning "to bound, to limit." The bounds of anything are determined by measuring it, or by expressing what is that, and what is not that. Measuring involves using some form of mathematical expression. The simplest form of mathematical expression is binary. That is 0. Not that is not zero. In other words, similarity is determined by measuring difference. When the difference between 2 things is measured as 0, they are identical. Therefore, that is 0, and not that is not zero. In a binary number system, these 2 ideas are expressed completely, and may be used to express any mathematical idea.

I have always been grateful that the first programming language I learned was C. C is a procedural language, and a low-level language which is structured to resemble mathematics. Much of the C language looks like algebra, while some of it resembles trigonometry more closely, such as the definition of functions.

Like mathematics, the seeds of more abstract languages is in the semantics of C. And because of the demand for software that performs ever-increasingly complex operations, abstract programming concepts have been built in this foundation, which is itself an abstraction, such as Object-Oriented programming.

Object-Oriented programming is actually an abstraction of procedural programming, as all programming is indeed procedural. A processor performs exactly 1 mathematical operation at a time. However, like a function, which is an abstract concept encapsulating many single procedural operations as a single atomic unit, an object is a similar encapsulation of processes, an encapsulation of encapsulations as it were, which is a convenience we use for the sake of expediency.

It is this very abstraction which provides the power of object-oriented programming. By encapsulating groups of operations within other groups of operations (ad infinitum) which perform the same or similar tasks, we can omit the details, which do not change from one use to another, and accomplish much more with much less physical work (writing code, that is). In addition, because our brains employ abstraction "to distraction," we find the abstraction of object-oriented programming more "intuitive," when used to deal with concepts which seem less mathematical to our perception, due to our advanced abstraction of those concepts in our own minds.

However, this also exposes a danger, a great danger in fact. It is now possible to employ these abstractions without fully understanding the underlying mathematical principles that they encapsulate. A real-world example of this can be seen in nearly any convenience store or fast-food restaurant, when the clerk makes change for you. I am old enough to remember when such people would "count your change" to you. If you paid for something that costs $2.50, and you produced a $5.00 bill, the clerk would count into your hand, starting from $2.50, and adding each amount as he/she counted: "$2.75 (quarter), $3.00 (quarter), "$4.00 (dollar bill), $5.00 (dollar bill)." When the clerk reached $5.00, you had your change, and it was correct. In addition, you knew it was correct, because it had been counted out as you watched. Today, a clerk punches in a price (or reads a bar code), types in the amount received from the customer, and the cash register does a subtraction to reveal the change required. Unfortunately, most of these clerks couldn't make change if their lives depended on it.

The same danger exists in the world of programming. Most developers have little or no education in computer science. Instead, they have gone to some technical school (perhaps) where they were taught "how to do" various types of things, and not taught "why to do" them. The end result is a developer who has a limit to their ability. Once you step outside of the limited realm of what they have been taught, and a problem is exposed that requires a more low-level approach, or would be better solved with a low-level understanding, they are lost.

The difference here is that, unlike convenience store and fast-foot restaurant clerks, these are supposedly "professional" people who should not be stopped at any point in the development process. And because of the demands imposed by an ever-increasingly-complex set of software requirements, problems that require a low-level understanding of the mathematical principles of computing are almost inevitable in the career of any developer. A convenience store clerk is not expected to be able to solve complex problems. Their job is to collect money, to keep the store shelves stocked with merchandise, and to perform similarly simple tasks, and they are paid in accordance with the skill level required. But a developer faces a much higher expectation of skill and knowledge, and above all, an ability to solve complex problems.

So, we find ourselves on the horns of a conundrum here. The solution, as I see it, can only be applied on a personal level. It is important to understand the basics before attempting to enter the realm of abstraction. If one does this, one will be successful. If one does not, there is likely to be a point at which one will have to learn the basics remedially. The former is more desirable, as the point at which one is required to learn the basics is not going to be an inconvenient one.

At least, that's how I figure it, I reckon.