Wednesday, 29 July 2009

So piracy is killing the music and movie industries?

The MPAA and RIAA (and their various non-USA equivalents) are famous for claiming that piracy (tapes, DVDs, digital downloads, etc) are "killing the [music/movie] industry".

Apart from the fact that these industry bodies (with a strong vested interest) have been claiming this ever since the introduction of 8-track tapes in the 1960s (and yet still the MPAA/RIAA lurch onward, living hand-to-mouth in their luxury penthouses, and somehow barely scraping by with continuing exponential growth ever since they first started making these claims), there's another problem with their claim:

The very day our culture stops producing popular music, television, news reports, novels, movies or art I will agree that "something needs to be done", about the expectation of free access, and would support instituting some sort of internet-wide micropayments system.

In fact, scratch "stops producing", and replace it with "noticeably slows production of". In fact, screw it all; scratch even that and instead substitute "stops continually increasing production of popular music, television, news reports, novels, movies or art".

Until then, commentary like this is simply worrying the sky will fall because you don't have the wit or imagination to develop new business models not based around repressive monopolies and artificial scarcity.

We had music as a species for long before we had trade bodies like the MPAA and RIAA around, and we'll have music long afterwards, too. The only difference is that in those times there wasn't an enormous, fat, unnecessary middle-man sat square between the artist and the audience, raking in cash hand over fist from both sides.[1]

If newspapers start to die because they can't afford to give away their on-line content for free then they'll stop doing it, people's expectations will change, and they'll start paying for subscriptions.

Although I hate to sound like a (big-L) Libertarian, the market will sort this one out just fine if left to its own devices.

Claims that "music/movies" or "news" will die are really worries about the deaths of "the RIAA/MPAA" or "some news organs unable to adapt to the changing conditions".

Obviously, however, the thought that bloated dinosaurs who refuse to adapt to the technological advancement of our species might go extinct doesn't really bother people.

Hansom cab drivers were pretty pissed off at the idea of the motor-car, but they didn't form industry bodies and try to ban cars or trains. And now - a hundred or more years a later - aren't we really fucking glad they didn't?


Footnotes

[1] And although we didn't have movies for anything like as long, ever-cheaper video recording equipment, the increasing popularity of sites like Youtube and the ability of even basic modern desktop computers to create high-quality special effects shows that even high-quality movies aren't out of reach of the talented amateur.

Cognitive dissonance

A reddit discussion came up recently, in relation to a recently-surfaced suppressed World Health Organisation report on global cocaine use, which concluded that the western "War on Drugs" is overblown, and that automatically criminalising all prohibited-drug users[1] was counter-productive and unsupported by scientific evidence.

A comment was posted asking why - in the face of evidence, and after a conclusions by the experts tasked to investigate this very topic - governments and supporters would not only disregard the conclusions and evidence, but actively seek to suppress the report and the evidence it contains.

The answer is simple, and generalises to many different opinions and topics. Largely, it's because they're making decisions subconsciously and emotively, instead of consciously and/or rationally.

People holding these positions claim to be pro-prohibition because it "saves lives" (and that may well be how they initially started believing in it, or how they justify the belief to themselves and others), but when you believe something strongly enough for long enough it ends up becoming part of your identity. Then, if you're confronted by evidence your long-cherished belief is in fact wrong, you have one of two choices:

  1. Reject the belief, and accept that - by some measure - you've wasted your life and been an idiot for however long you've held the opinion (possibly as much as your whole life up to that point!), or
  2. Reject the evidence, and continue believing you're right.

Believing you're right is comfortable and safe, but believing you're wrong (and moreover, have been for years) is uncomfortable and scary. It's like having the rug yanked out from under you - first you have to find a defensible new position that you can take, and then you have to revisit every single opinion you hold that depended on the "wrong" one, and see if any of those also need changing in light of the new information.

This process takes effort, and may involve discarding many other ideas that you hold dear. This is - needless to say - highly unnerving and uncomfortable for most people.

Although it's irrational to the point of complete intellectual bankruptcy, when faced with this choice many people will simply (and irrationally) ignore the evidence to the contrary. They might go quiet and try to change the subject, they might bluster and try to shout you down, or they might declare that the contrary evidence or reasoning "offends them", and demand you stop out of politeness.

All of these things are simply tactics to get the inconvenient evidence to go away - believing something you know at some level to be false is normally easy when you don't think about it, but gets increasingly difficult and uncomfortable the closer the dichotomy rises to your conscious mind.

By offering counter-indicative evidence you force the cognitive dissonance closer to their conscious mind, so they become increasingly irritable and uncomfortable. However, the rationalisation process is almost entirely subconscious, so they often don't realise why they're getting worked up - all they know is that you're the cause of it, so they tend to become frustrated and irritated with you.

This is also why you can't easily persuade people out of irrational ideas, and why it's hard to have a good conversation about politics, religion or the like which doesn't end in offence or shouting.

The key problem(s) in the irrational person's psyche isn't saving face, it's one or more of:

  • Laziness - the person doesn't want to have to undergo the effort of re-evaluating all their beliefs, so they just don't.
  • Egocentricity - the person doesn't want to admit to themselves how wrong (or stupid, or duped) they were.
  • Excessive attachment to their present identity - the person is too attached to their present identity (for reasons of comfort, personal gain, etc) to allow themselves to accept that part of it might need changing.
  • Centrality of the opinion to who they are - the threatened belief is so central to the core of the person's identity and beliefs that re-evaluating it might leave them a largely different person (effectively, the current version of them might "die" in the process).

This approach explains many, many things that otherwise seem inexplicable - why it's so hard for people to leave religions, why it's so hard to convert people to another political party, why people continue to back politicians who violate the very tenets they espouse and why people will stick to comfort beliefs even in the face of absolute proof to the contrary.

The only way to cure someone of this kind of egotistical, emotive self-deception is to bring the cognitive dissonance to the surface, and show them how irrational it is.

Nevertheless, they'll fight you every step of the way, and if you force the issue they just end up seeing you as the enemy and disregarding what you show them.

It's a knotty problem, because you can't "cure" someone of identity-related emotive irrationality unless they want to be cured... but there are literally billions of people with these kind of incorrect or irrational opinions, and they're materially retarding the progress and development of the entire human race.


Footnotes

[1] Of course, legal-drug use - like caffeine, alcohol or tobacco - is usually considered perfectly ok, and ingesting any of these three is a right that would cause rioting in the streets if a government tried to ban it.

On homosexuality as a choice

Many people - usually religious, right-wing "family values" types - claim that "homosexuality is a choice", and that one piece of legislation or another will "encourage kids to be gay".

This is the bit I don't get - even as a straight guy raised in a pretty liberal household, I've never once looked at the idea of hot gay buttsecks and thought "y'know, I think that's the sex for me!".

I'm straight and non-homophobic, but even offering tax-breaks and free ice-cream to gays wouldn't tempt me to indulge in hot man-loving.

I literally can't comprehend of someone examining their own feelings and deciding homosexuality was a choice, unless they're naturally inclined that way themselves and in viciously deep denial about it[1] ("it's got to be a choice, so I can choose not to be gay!").

So when they say that X or Y will encourage homosexuality, what they actually mean is that it will encourage people who are naturally that way inclined to not live their lives miserable, unhappy and in denial, never knowing the companionship they crave and at constant war with their own essential nature, until they become bitter and twisted by their own unrelenting self-loathing.

It therefore appears that the correct response to "Homosexuality is a choice" is "Well maybe in your case, ducky".


Footnotes

[1] This is a truly fascinating study, and I thoroughly recommend reading it. A full version of the paper in (PDF format) is available here

Your opinion is worthless

This is a slightly self-indulgent post, relating to website and forum discussions, rather than a generally-applicable epiphanette. Nevertheless, I think it's an important point, and one which far too few people understand...

I find when browsing internet discussion forums, when someone with a controversial or non-mainstream opinions posts and gets voted down I frequently run across run across comments similar to the following:

I find I get downmodded a lot because I'm a person willing to speak my mind. That makes a lot of the insecure people here (of which there are many!) uncomfortable, and to try and counter that they downmod my posts.

Straight to it: although sometimes the commenter has a point (people get very attached to their ideas, and can react irrationally when they're threatened), general attitudes like this always make me uncomfortable, because they smack of self-delusion and comfort-beliefs.

Everyone has some element of this in their thinking, but it's rarely justified. As an experiment, consider the following:

Aside from your own clearly-biased personal opinion of your posts, what evidence do you have that your thoughts or beliefs are generally:

  1. Insightful
  2. Interesting
  3. Well-expressed, or
  4. Correct?

Secondly, how many people - even really stupid, boring people - do you think get up in the morning, look in the mirror and think "shit man, I'm a really windy, boring, unoriginal fucker", and then spend a lot of time expressing their opinions to others?

Most people think what they have to say is insightful, interesting, adequately-expressed and correct, or they wouldn't bother posting it.

Now, this idea is correct in that some people vote down anything which contradicts the prevailing wisdom, but people also vote down things which are wrong, stupid, ridiculous or badly-expressed.

Conversely, I know from repeated personal experience that in many communities a well-written, well-argued, non-whingey post which counters the prevailing wisdom frequently still gets a high score, sometimes because of its contrary position.

I know when I post all I have to go on is my own opinion of my posts, which (as we've established) is almost laughably unreliable. Instead, the votes my posts get serve as a useful barometer of how much my opinion of a well-written, well-argued post compares with the general opinion.

It's terribly flattering to think of oneself as a persecuted martyr, but it also usually requires a lot of egotism and a willing blindness to statistics.

To quote the great Carl Sagan:

They laughed at Galileo... but they also laughed at Bozo the clown.

Given a poster's personal opinion is biased to the point it's worthless, and given there are many more clowns in the world than misunderstood geniuses, on what basis do people claim to be downmodded for the content of their opinions, rather than for their worth, or the reliability of the arguments they use to support them?

Claiming you're being downvoted simply because your opinions run counter to the prevailing wisdom, rather than simply because you're self-important or wrong requires you to not only assume you're vastly more intelligent or educated than the average person, but also that most people voting you down are doing so because of a deficiency in their psychology, rather than your own.

When all the objective evidence you have is that a lot of other people disagree with you, it's terribly tempting to believe you're a misunderstood intellectual martyr like Galileo.

The trouble with this, of course, is that while paradigm-shifting geniuses like Galileo only come along a few times a generation, we're knee-deep in idiots, and the tide is rising.

There are literally thousands of times more idiots than geniuses, so claiming you must be a genius on the basis you were voted down doesn't mean you're a genius - it means not only are you overwhelmingly likely to be a self-important idiot, but you're also bad at maths.

Act appropriately.

Thursday, 18 June 2009

The myth of idiot-proofing

Idiot-proofing is a myth. Attempting to simplify an over-complex task is good, but be careful how you do it - beyond a certain point you aren't idiot-proofing, just idiot-enabling.

Three classes of tool

Tools (like programming languages, IDEs, applications and even physical tools) can be grouped into three loose categories: idiot-prohibiting, idiot-proof and the merely idiot-enabling.

Idiot-prohibiting tools are those which are effectively impossible to do anything useful with unless you've at least taken some steps towards learning the subject - tools like assembly language, or C, or Emacs. Jumping straight into assembly without any idea what you're doing and typing code to see what happens will never, ever generate you a useful program.

Perhaps "prohibiting" is too strong a word - rather than prohibiting idiots these tools may only discourage naive users. These idiot-discouraging tools are those with which it's possible to get some results, but which leave you in no doubt as to your level of ability - tools like perl, or the W3C XHTML validator. Sure you might be able to open a blank .html or .pl file and write a few lines of likely-looking pseudocode, but if you want to have your HTML validate (or your Perl code actually do anything useful and expected), you're soon going to be confronted with a screen-full of errors, and you're going to have to stop, study and get to grips with the details of the system. You're going to have to spend time learning how to use the tool, and along the way you'll practice the skills you need to get good at what you're doing.

The myth of idiot-proofing

Garbage in, garbage out is an axiom of computing. It's generally impossible to design a system such that it's completely impossible for someone sufficiently incompetent to screw it up - as the old saw goes: "make something idiot-proof and they'll invent a better idiot".

A natural fall-out consequence of this is that making anything completely idiot-proof is effectively impossible - any tool will always be somewhere on the "prohibiting->discouraging->enabling" scale.

Furthermore, even if your tool merely makes it harder for "idiots" to screw things up, at the same time that very feature will attract more idiots to use it.

Shaper's Law of Idiot-Proofing:

Lowering the bar to prevent people falling over it increases the average ineptitude of the people trying to cross it.

Or, more simply:

Making a task easier means (on average) the people performing it will be less competent to undertake it.

Obviously I don't have hard statistics to back this up (though there could be an interesting project for a Psychology graduate...), but it often seems the proportion of people failing at the task will stay roughly constant - all you're really doing is increasing the absolute number of people who just scrape over the bar... and who then go on to produce nasty, inefficient, buggy - or just plain broken - solutions.

Fixing the wrong problem

The trouble with trying to make some things "idiot-proof" is that you're solving the wrong problem.

For example, when people are first learning programming they typically spend a lot of their time concentrating on the syntax of the language - when you need to use parentheses, remembering when and when not to end lines with semi-colons, etc. These are all problems for the non-programmer, but they aren't the important ones.

The major difficulty in most programming tasks is understanding the problem in enough detail to solve it[1]. Simplifying using the tools doesn't help you understand the problem better - all it does is allow people who would ordinarily never have attempted to solve a problem to try it.

Someone who's already a skilled developer won't benefit much from the simplicity, but many unskilled or ignorant people will be tempted by the extra simplicity to try and do things that are (realistically) completely beyond their abilities. By simplifying the wrong thing you permit more people to "succeed", but you don't increase the quality of the average solution (if anything, you drastically decrease it).

By analogy, spell-checkers improved the look of finished prose, but they didn't make anyone a better author. All they did was make it easier to look professional, and harder to tell the difference between someone who knew what they were talking about and a kook.

Postel's Law

The main difficulty of programming is the fact that - by default - most people simply don't think in enough detail to successfully solve a programming problem.

Humans are intelligent, flexible and empathic, and we share many assumptions with each other. We operate on a version of Postel's Law:

"Be conservative in what you emit, liberal in what you accept"

The trouble begins because precision requires effort, and Postel's Law means we're likely to be understood even if we don't try hard to express ourselves precisely. Most people communicate primarily with other humans, so to save time and effort we express ourselves in broad generalities - we don't need to specify every idea to ten decimal places, because the listener shares many of our assumptions and understands the "obvious" caveats. Moreover, such excessive precision is often boring to the listener - when I say "open the window" I don't have to specify "with your hand, using the handle, without damaging it and in such a way that we can close it again later" because the detail is assumed.

Sapir-Whorf - not a character on Star Trek

The problem arises that because we communicate in generalities, we also tend to think in generalities - precision requires effort and unnecessary effort is unpleasant, so we habitually tend to think in the most vague way we can get away with. When I ask you to close the window I'm not imagining you sliding your chair back, getting up, navigating your way between the bean-bag and the coffee table, walking over to the window, reaching out with your hand and closing the window - my mental process goes more like "window open -> ask you -> window closed".

To be clear: there's nothing inherently wrong with thinking or communicating in generalities - it simplifies and speeds our thought processes. Problems only arise when you try to communicate with something which doesn't have that shared library of context and assumptions - something like a computer. Suddenly, when that safety-net of shared experience is removed - and our communication is parsed exclusively on its own merits - we find that a lifetime of dealing in vague generalities has diminished our ability to deal with specifics.

For example, consider probably the simplest programming-style problem you'll ever encounter:

You want to make a fence twenty metres long. You have ten wooden boards, each two metres long, and you're going to the hardware shop - how many fence-posts do you need?

No programmer worth his salt should get this wrong, but most normal people will have to stop and think carefully before answering[2]. In fact this type of error is so common to human thinking that it even has its own name - the fencepost (or off-by-one) error.

Solve the right problem

Any task involves overcoming obstacles.

Obstacles which are incidental to the task ("publishing my writing">"learning HTML") are safe to ameliorate. These obstacles are mere by-products of immature or inadequate technology, unrelated to the actual task. You can remove these without affecting the nature of the task at hand.

Obstacles which are an intrinsic part of the task are risky or even counter-productive to remove. Removing these obstacles doesn't make the task any less difficult, but it removes the experience of difficulty.

Counter-intuitively, these obstacles can actually be a good thing - when you don't know enough to judge directly, the difficulties you experience in solving a problem serve as a useful first-order approximation of your ability at the task[3].

Despite years of trying, making programming languages look more like English hasn't helped people become better programmers[4].

This is because learning the syntax of a programming language isn't an important part of learning to program. Issues like task-decomposition, system architecture and correct control flow are massively more important (and difficult) than remembering "if x then y" is expressed as "if(x) { y; }".

Making the syntax more familiar makes it easier to remember and reduces compile-time errors - making the task seem easier to a naive user - but it does nothing to tackle the real difficulties of programming - inadequately-understood problems or imprecisely-specified solutions.

The trouble is that the "worth" of a program is in the power and flexibility of its design, the functionality it offers and (inversely) the number of bugs it has, not in how many compiler errors it generates the first time it's compiled.

However, to a naive beginner beauty and solidity of design are effectively invisible, whereas compiler-errors are obvious and easy to count. To a beginner a program that's poorly designed but compiles first time will seem "better" than a beautifully-designed program with a couple of trivial syntax errors.

Thus to the beginner a language with a familiar syntax appears to make the entire tasks easier - not because it is easier, but because they can't accurately assess the true difficulty of the task. Moreover, by simplifying the syntax we've also taken away the one indicator of difficulty they will understand.

If a user's experiencing frustration because their fire-alarm keeps going off the solution is for the user to learn to put out the fire, not for the manufacturer to make quieter fire alarms.

This false appearance of simplicity begets over-confidence, directly working against the scepticism with the current solution which is an essential part of the improvement process[5].

Giving a short person a stepladder is a good thing. Giving a toddler powertools isn't.


Footnotes

[1] This is why talented programmers will so often use exploratory programming (or, more formally, RAD) in preference to designing the entire system first on paper - because although you might have some idea how to tackle a problem, you often don't really understand it fully until you've already tried to solve it. This is also why many developers prefer to work in dynamic scripting languages like Perl or Python rather than more static languages like C or Java - scripting languages are inherently more flexible, allowing you to change how a piece of code works more easily. This means your code can evolve and mutate as you begin to understand more about the problem, instead of limiting your options and locking you into what you now know is the wrong (or at least sub-optimal) approach.

[2] Obviously, the answer's not "ten".

[3] When I'm learning a new language I know I'm not very good at it, because I have to keep stopping to look up language syntax or the meanings of various idioms. As I improve I know I'm improving, because I spend less time wrestling with the syntax and more time wrestling with the design and task-decomposition. Eventually I don't even notice the syntax any more - all I see is blonde, brunette, readhead... ;-)

[4] Regardless of your feelings about the languages themselves, it's a truism that for years many of the most skilled hackers have preferred to code in languages like Lisp or Perl (or these days, Python or Ruby), which look little or nothing like English. Conversely, it's a rare developer who would disagree that some of the worst code they've seen was written in VB, BASIC or PHP. Hmm.

[5] From Being Popular by Paul Graham, part 10 - Redesign:

To write good software you must simultaneously keep two opposing ideas in your head. You need the young hacker's naive faith in his abilities, and at the same time the veteran's scepticism... The trick is to realize that there's no real contradiction here... You have to be optimistic about the possibility of solving the problem, but sceptical about the value of whatever solution you've got so far. People who do good work often think that whatever they're working on is no good. Others see what they've done and are full of wonder, but the creator is full of worry. This pattern is no coincidence: it is the worry that made the work good.

Stereotypes are useful tools

Humans generalise. It's what we do.

If you chose to handle every single experience as an isolated event, you'd never go anywhere or do anything for constantly investigating options, exactly like how you'd never get out of your house if you had to check every room was empty before leaving - by the time you've checked the last one, someone could have entered the house and got into the first one again, so you have to start back at the beginning and check them all over again.

Stereotyping is a very useful, essential mechanism for bypassing all of that - when we meet a new situation, we compare it to situations we've experienced before, and this gives us a guide as to what this one is likely to be like. For example, "this room was empty and I closed the door. People don't generally break into second-story rooms in any given five-minute period, so it's safe to assume it's still empty and leave the house".

The problem comes when people assume that stereotypes are facts - stereotypes/generalisations only give good indications of probabilities, and as long as you're always aware of the possibility that this situation is an edge-case where the "general rule" doesn't apply, there's no harm in it.

In our touchy-feely, inclusive, non-discriminatory society it's become deeply un-trendy to stereotype or generalise. People feel that because stereotypes have been over-used, or used to excuse discrimination or bigotry, there must be something inherently wrong with stereotyping. This is itself stereotyping, and - in this case - it's wrong.

What people really disapprove of are:

  • Unfair generalisations (although since stereotypes come from repeated observations, there are a lot less of them than you think)
  • People mistaking statistical guidelines for hard facts.

However, as ever as a culture we err on the side of throwing the baby out with the bathwater, and conclude that because some people have tried to use stereotypes to justify bad actions in the past, there's something inherently wrong with the whole idea of stereotypes. That's not the case.

Friday, 1 May 2009

The incompetent leading the credulous - your mildly disconcerting thought for the day

It's well-known to psychologists, public speakers, politicians and con-men[1] that in general the more confident an individual appears, the more persuasive they are to other people. This effect holds regardless of the veracity or provability of their assertions. In other words, confidently and assertively talking horseshit will make you more persuasive than simply talking horseshit on its own, regardless of the fact it's horseshit.

In other news, the Dunning-Kruger effect demonstrates that - in general - the more incompetent or ignorant someone is of a subject, the more they will over-estimate their own expertise or understanding of it. Equally, the more experienced and competent a person becomes in a subject, the more they will begin to underestimate their true level of knowledge or expertise, downplaying their understanding and qualifying their statements. In effect, when trying to assess one's own level of ability in a subject increased expertise is inversely proportional to confidence in your expertise.

The net effect of this is that - again, in general - ignorant or incompetent people are subconsciously predisposed to be more confident in their opinions, and all people are subconsciously predisposed to find confident people persuasive.

In a nutshell, all things being equal, people are instinctively predisposed to find ignorant or incompetent people disproportionately persuasive and trustworthy compared to more competent, more experienced experts.

Distressingly it appears that in the kingdom of the blind the one-eyed man is not king. Instead, in the kingdom of the blind the true king is the one blind guy who's sufficiently incompetent or delusional that he honestly believes he can still see.

This has been your mildly disconcerting thought for the day.


Footnotes

[1] The author acknowledges that there may be some overlap in these categories.