Witchcraft Law

January 28, 2011

Shortly before midnight on March 2nd last year a Molotov cocktail was was hurled through the window of a house in the Western Cape. The resulting fire killed 22 year-old Yalezwa Phulwana and her 2 year-old daughter Liyema. Yalezwa’s two sisters managed to escape the burning house unharmed, but their mother, Nonjengezinye Matwa, was severely burned and hospitalized.


Two men, Kwanele James and Mzuvukile Thoswa, 24 and 25 years old respectively, were arrested and charged with murder, attempted murder, arson and three contraventions of the Suppression of Witchcraft Act of 1957. The reason for these latter charges is that Kwanele James’ mother had recently died, and a sangoma had told him that Nonjengezinye Matwa was a witch and had caused the death of his mother, providing the motive for the arson attack.

Well, I had no idea that such a law existed. Interested in learning what the law actually says, I searched for it on the Department of Justice web site, but found that it is not available for download, and is only obtainable by paying a stiff fee on a commercial website (or schlepping off to the DoJ and getting a hard copy of the Government Gazette, also at a non-trivial cost). There are some free download sites, but none that I have found are comprehensive; certainly none have this piece of legislation available.

To harp boringly on about how much harm irrational beliefs cause would just be depressing, so I won’t do it. Instead, I’m going to harp boringly on about how the hell a citizen is expected to obey the law when he can’t even find out what it says? “Ignorance of the law is no excuse”, but how is the average Joe to overcome his ignorance? And could the obscurity of the law really not be a defence in court? I have googled (although not binged) diligently in an attempt to find out just how many laws are currently on the South African statute books, but the only answer I can come up with is “very, very many”. Far too many for any citizen to have even a vague idea of what they are and what they allow or forbid. I suspect that most of these laws are moribund, in that they are not enforced or known about even by legal professionals. If I am right, isn’t it high time we had a vigorous brush-clearing of the statute books; get rid of the dead wood and allow the light to shine through and illuminate the laws that are useful?

And I have a brilliant idea for keeping superfluous laws off the statute books: carve each Act onto a stone tablet and make legislators carry a copy of them in a backpack wherever they go. When they make a new law, their burden becomes heavier; when they repeal a law, they get that much lighter.

Soon even ordinary people will know where they stand in terms of the law and there will be no need for so many lawyers.

Creative Commons License
Grumpy Old Man by Mark Widdicombe is licensed under a Creative Commons Attribution-Noncommercial-No Derivative Works 2.5 License

Population Poser

January 14, 2011

There is a lot said and written about climate change and what should be done about it. We are urged to reduce our carbon emissions. The assumption is that climate change is a problem that can be solved by altering our mode of living. But climate change is not a problem, it is a symptom of a problem.

The real problem is the huge, enormous, out-of-control human population. This morning, there were 6,897,307,682 human beings infesting the planet. This number of people cannot be sustained without industrial, mechanized agriculture and distribution systems, which rely on fossil fuels to work. You may drive your electric car or hybrid, but those technologies are not suited to, say, a combine harvester or a container ship, and your car emissions are a drop in the ocean compared to the gigatonnes of greenhouse gases pumped out by industry and farted out by the millions of head of livestock we require to keep our population fed. The principal resource upon which we rely to sustain our population are fossil fuels in general, and particularly oil. These are not renewable and are becoming depleted as we use them up at an ever-increasing rate.

Overpopulation is common in nature. When resources are abundant, populations grow exponentially until the resources are depleted and the environment is degraded to the extent that the depleted resources cannot easily recover, and (if migration is not possible) then the population undergoes a collapse, and (if the species is lucky enough not to become extinct) remains at a low level until the depleted resources recover and the population can begin to grow again.

Our consumption of non-renewable resources can be likened to herds of elephants that push over trees to get at the topmost leaves, killing the trees until the forest has turned into grassland and there is nothing left to eat. Then, amidst much plaintive trumpeting, the animals die. In 1989 Richard C. Duncan published the ‘Olduvai Theory’ in which he claimed that industrial civilization has a life span of about 100 years, and that per-capita energy production would begin to decrease in the early 21st century. Electrical power shortages would begin to occur, and shortly thereafter the energy shortages would lead to a decrease in the production of food.

Why do human beings continue to breed in such numbers when it is clear that to do so is disastrous?
I don’t know, but I suspect it’s because most people don’t know—they cannot project current trends into the future and read their fate there. I was listening to a radio talk show the other day, and the hostess said that we cannot ask people to reduce the number of children they have because it’s ‘culturally sensitive’. What poppycock! this is too important to allow it to fall victim to political correctness–the fate of our species is at stake.

So is there a solution? We could do nothing; let nature take her course. What would happen then? I foresee that as the resources we require to merely survive become more and more scarce, people will begin to fight for them. Conflict and violence will become the default mode for those wishing to survive, but most will die amidst great suffering. Yes, nature will take care of our population problem, but there will be no such thing as human civilization at the end of the process.

In 1968 Garrett Hardin came up with a solution he called ‘mutual coercion mutually agreed upon’. People must be made to agree to do voluntarily what’s best for the group as whole. As he points out, this will not be easily achieved, especially in Western cultures where freedom, in reproduction as elsewhere, is regarded so highly. Perhaps the Chinese strategy of limiting women to a single birth is the way to go, enforced by compulsory sterilization following the birth of the child.

I can offer no solution of my own, but if you wish to do what’s best for your species, please turn off the lights and keep your zipper closed.

Creative Commons License
Grumpy Old Man by Mark Widdicombe is licensed under a Creative Commons Attribution-Noncommercial-No Derivative Works 2.5 License

Fatal Error

January 3, 2011

Computer programmers are supposed to be intelligent. So why do I continually come across illiterate, nonsensical error messages? I don’t know the answer to that, but this post is directed at programmers in an effort to get them to think about what they do and correct the problem. If you aren’t a programmer, feel free to do something else for now, normal service will be resumed soon.

Software companies spend millions on ‘useability’ research, getting their user interfaces as good as they possibly can, but the whole effect can be ruined by one application developer who is too lazy to do his job properly. Here are some things developers should think about when handling errors in their programs.

Who will be using the program?

Obviously error messages aimed at pre-school children will be very different from those aimed at post-graduate computer scientists. This is so obvious it shouldn’t need to be stated, but programmers seem not to be aware of this, or have forgotten it in the heat of the moment. Don’t put a message like this in a game, for example:

Error at mem 0xffff17ba: unphased bypass operation. Reset second pulse generator to continue.

(unless the game actually has something called a second pulse generator which the player could be expected to know how to reset.)

Who will read the message?

This is related to the preceeding question, but is not identical to it because often different error messages are generated for different audiences. I work for a large retailer writing and maintaining database applications that are used by employees in the our distribution centres. It is reasonable to display an error to the user of the system that looks like this:

Error 1234 has occurred. Please contact the support helpline on extension 5678.

The same program could have written a different error to a logfile for the support department:

Error 1234: Country code does not exist on the country table. Please escalate to the IT department.

Instead the following error message is both displayed to the user and written to the logfile:


Apart from the annoying capitalization and the adolescent abuse of punctuation marks, this error message is useless because it doesn’t tell anyone what the problem actually is, or how to solve it.

The user cannot read your mind.

A lot of error messages are generated because the user has entered data that is in a format that the programmer did not expect. This is entirely the programmer’s fault unless he made it clear in advance what he expects. For example, in the US dates are usually written in mm-dd-yyyy format, whereas in the rest of the civilized world they are written as dd/mm/yyyy. There can be few things as annoying as entering the date and a message pops up telling you that you have used the ‘wrong’ format. Why didn’t you tell the user in advance what the expected format is?

Date (dd/mm/yyyy):

Being proactive in letting the user know what you expect goes a long way towards reducing frustration.

Is the information you request necessary?

Here’s a gem:

You need to supply a fax number in order for your request not to receive fax notifications to be processed.

Why? This user probably doesn’t want fax notifications because he hasn’t got a fax machine. This programmer clearly hasn’t thought about what he is doing at all. Similarly, why should someone have to give his hat size in order to become a blood donor? If you really want to alienate your customers, invading their privacy in this fashion is a good way to go; if you want this information for some or other reason, like marketing perhaps, then by all means ask for it, but don’t insist that it is provided. I’ve ‘walked away’ from many ecommerce sites because of their insistence that I divulge impertinent information.

Don’t only give the error—give the solution

You’ve told the user about the problem, but what must he do to recover the situation? If you don’t tell him you’ve only done half the job.

Error: software patent violation. You cannot continue to run this program. Please write to your MP or Congressman to get software patents banned.

OK, that’s another hobby horse I don’t want to ride right now, perhaps another day, but the frustration level of not being able to do whatever it is you want to do because of an obscure software error without having the faintest idea of how to fix it is high. Inform the user–give him options that will allow him to progress, or at least recover to the state he was in before the error struck.

All these things can be summed up in two words: good manners. Treat your users with the respect they deserve as your customers. Your error messages should be pertinent, detailed, informative and allow your users to do their jobs as efficiently as possible. I leave you with this hilarious quotation from the Microsoft C# programming manual, which perhaps goes some way towards explaining why error messages are as bad as they are:

The ButtonProperty value is a string that represents the property name used by the installer to retrieve the value of the button group. This property can be referenced by custom launch conditions to make decisions concerning application installation. For example, if the ButtonProperty is set to Buttons, you create a launch condition that examines the value of the Buttons property. If the first radio button is selected, Buttons takes the value contained in the Button1Value property. Likewise, if the second radio button is selected, Buttons takes the value contained in the Button2Value property. Many of the customizable dialog boxes have similarly configurable properties, which allow you to create a rich and complex installation experience for your users.

Creative Commons License
Grumpy Old Man by Mark Widdicombe is licensed under a Creative Commons Attribution-Noncommercial-No Derivative Works 2.5 License