Unsophistication of the iTunes UI

Larry O'Brien comments about the crashing problems and other strangeness he has experienced with iTunes.

I haven't had such problems with iTunes on the 3 or more computers I've used it on in past years. However, I think the iTunes interface is a lot less polished than what a Windows user is used to. The music library interface in particular is idiotic - things just don't work the way they're supposed to.

When you pick a different column for sorting, iTunes puts you at the top of the list instead of at the song that was previously selected, which means that if you have the library sorted by song and now you want to sort it by artist to get other songs by the same artist, you have to find the artist again after changing the sorting column. In better designed programs, such as Outlook, your selection is remembered and you don't have to do this.

This is just one example where the iTunes user interface is lame. If all Mac software is like this, I don't know how anyone can claim that Macs are easier to use, because this interface is amateurish compared to the level of user interface intricacy and detail in some of the better Microsoft products.


The iron shirt of tax code

Referring to Joe Stiglitz's proposal of a reward system for new medicine discoveries, which I mentioned in my previous post, one spontaneous idea is that someone like the Bill and Melinda Gates Foundation would be ideal to manage such rewards. I agree - if the tax system made it possible!

It is my understanding that the U.S. tax code requires non-profit foundations to give away at least 5% of their endowment every year to maintain their tax exemptions. The Gates Foundation already has trouble meeting this criterion, because they cannot find enough good projects fast enough. They probably could do rewards on the side, and I agree it would be a great idea, but the U.S. tax code makes it impossible for a foundation to exist that does this primarily. Given the government requirements, what happens if in one year there is no breakthrough and you don't spend the necessary 5%? You lose your tax exemption and pay a lot of money to the government in tax, that's what.

You probably already know how I think that income-based taxation is ridiculous. It and its associated fattening of bureaucracy are one of the greatest scourges that afflict modern society - it's right up there with prudery, self-serving interests in politics and the ineffectiveness of governments at doing anything against extinctions and global warming.

We should all be doing things to fix this.

Scrap the patent system entirely?

We know that patents are bad for the software business. The whole reason patents exist is because it is thought that giving a time-limited monopoly to people who invent things promotes progress by encouraging, well, people to invent things. This doesn't work in software because:
  • patented software ideas are generally obvious to practitioners of the area the patent is about;
  • the length of a patent monopoly (17 years) is way out of proportion with the speed things move in software;
  • barriers to innovation in software are intrinsically low to begin with - anyone can innovate and no incentive in the form of a time-limited monopoly is necessary to encourage people to do so;
  • arguably most potential innovators in software are individuals and small companies, who can hardly use the patent system because they can afford neither the time to file the patents, nor the money to fight infringements;
  • progress in software is intrinsically cultural and incremental, not epochal - people gradually improve on other people's ideas, nobody does (or has to do) research and testing for 10 years, like in the pharmaceutical business, before bringing an idea to the market.
All of these reasons combine to make the idea of patenting in software very, very harmful indeed. Instead of being used as an incentive, patents are used as:
  • weapons for big companies to fight each other with;
  • weapons for big companies to destroy potentially threatening small competitors before they grow;
  • leverage for patent sharks (like this bastard) who use sleeper patents that no one ever knew of to extort enormous sums of money that they did not even earn and which no one owes them.
So, at least as far as the software business is concerned, the patent system is more so a vehicle for power play and extortion than for anything good, and should be banned.

A valid question remains, though, whether the patent system is still good at solving problems in other businesses, such as pharmaceuticals. In medicine, it can take an outlay of a billion USD or more to bring to market a useful drug. Reasoning goes that no sensible pharmaceutical company would ever engage in this endeavor if it weren't for the patent system, which helps companies recoup the cost by keeping competition at bay for a few years. (The patent lasts longer than that, but it only prevents competitors from using the very same compound, not from using a similar one; and competitors generally need a few years to bring to market an alternative compound with similar effects.)

Joseph E. Stiglitz recently wrote this article listing some of the demerits of this use of the patent system in medicine, and proposing that the system be replaced with large (state-sponsored?) rewards for desirable medicines. I think this is a good proposal, its only fault being that the reward system would need to be competently administered, and I guess we know how competent administrations tend to be. Nevertheless, if the state was bold enough to offer really good rewards for developing valuable cures - e.g. on the order of $2-10 billion USD - I think the idea would work.

An optimal solution would be one that neither grants a monopoly, like patents, nor requires a central administrator, like the reward concept would. Something that's self-managing and yet not prone to abuse. That would be a trillion dollar idea. If someone has it.

Care to patent it?


War on Terror: the board game

I don't usually play games or board games, but if I did, this is a game I would play. (Via Schneier)


Secunia's Software Inspector

Do this now.

Secunia's Software Inspector is a browser-based Java application that scans your machine for vulnerable software based on their vulnerability info. Before I ran this, I thought all my bases were covered, but now, heh, guess again.

Edited to add: older versions of the Macromedia Flash Player can be very difficult to remove. They are not removed automatically when a new version of the Flash Player is installed, leaving your system potentially open to the vulnerabilities in the older versions. You might find this link of use - you actually have to download this uninstaller from the Macromedia site and run it to uninstall Flash. Talk about easy removal...

For one of the old Flash versions I had, not even this worked, so I eventually removed it by manually deleting the file.


Losing weight

I'm not sure if it's really a common myth or if it's just my imagination, but it seems that there's a meme going around about how difficult it supposedly is to lose weight.

Well, it isn't difficult at all. It is easy. In a nutshell: you'll lose weight if you eat less. Or, like a doctor once said bluntly to a patient who kept complaining how she cannot lose her weight: Nobody was fat in Dachau.

The key to losing weight is really very simple. If you want to lose some weight in a given day, you have to eat less calories than your body burns during that day. If on a given day your body burns 2200 calories, and you eat 2000 calories, you will lose a bit of weight. If you eat 2400 calories, you will gain some. And 3500 calories (kcal) are about 0.5kg.

It is nearly impossible to eat in one day exactly the amount of calories that your body burns during that day. You are either going to eat more, or you are going to eat less. If you want to keep your weight level, you have to make sure that the days when you eat more than you burn are balanced by days when you eat less.

The real difficulty in losing weight is that most people have no idea of how many calories they're eating. But trying to lose weight without knowing how much you're eating is like driving in a dark night with no headlights.

All of the special kinds of diets that people try to sell you are misleading. They try to tell you that the key to losing weight is separating food, or avoiding carbohydrates, or whatever. That's all bollocks. The only reason any of that can work is if it tricks you into eating calories at a lower rate than your body burns. But as soon as you adapt to the new regime, you'll start exceeding your calorie input again and you won't be losing weight.

So here's how to lose weight the easy, sure-fire, denis way.
  1. Calculate your body's daily calorie consumption. There are calculators to help you do this on the web. Search for "calorie calculator men" or something similar. Use multiple of these calculators and average the results, because every calculator gives them slightly different.
  2. Keep a diary of what you eat. Most food has nutritional information on its packaging. For food that doesn't, look up its nutritional information on the web. Just try searching for "turkey breast kcal" or something, and you'll find sites with volumes of nutritional info. Don't eat anything unless you can get reliable nutritional information for it. Keep track of every tiniest speck you eat. 10 grams of oil have more than 90 calories. Keep track of everything.
  3. Now that you know how much you're eating and how much you need, it's easy to tell when to stop. Suppose you put your limit at 1600 kcal. When you exceed that, stop eating. That's it. That's how you lose weight. By stopping eating when you hit this limit.
  4. If you want to lose weight without losing muscle mass, you'll need to bump up your consumption of protein. Depending on the muscle mass you want to preserve and the sources you trust, you need to eat somewhere between 80 and 120+ grams of protein per day. Doing this while not exceeding a certain number of calories means you have to eat a lot of chicken, turkey, tuna, salmon, cod - things that pack protein and are low in fat. If you want to hit 120g of protein on a 1600 calorie diet, this might mean eating more meat than you might be comfortable with. That's life. If you want to keep the muscle, you need to do it.
  5. If you adhere to these rules, you can pretty much eat anything you want. Sweets are fine, McDonald's is fine. Just know that a single double cheeseburger is 460 calories, and it packs only 25 grams of protein. If you want to reach 120 grams in 1600 calories, that's not a good enough ratio - unless you stuff yourself with tuna (not in oil!) the rest of the day. Likewise, 100 grams of chocolate are 600 calories, and pretty much none of that is usable protein. Still want to eat that chocolate whole? It's your call.
Doctors say that merely eating less will cause you to lose weight in the wrong places. As far as a man's health is concerned, the most important place to lose weight is the belly and the internal fat around organs. Apparently, to lose this weight, you need to exercise as well. I'm using an elliptical trainer for that.

For the past two weeks, I've been on an exercise and diet regime as described above. So far I've lost 1kg each week. I'm going to continue this until I eliminate my abdominal fat, and then I'm probably just going to keep recording my calorie and protein consumption indefinitely. When I get fit, I want to keep fit, and not let the cycle repeat itself.

So far, I have found the above principles to be quite successful. :)


Bjarne Stroustrup Interview

MIT Technology Review publishes an interview with Bjarne Stroustrup, the original designer of C++. He reflects generally on the quality of software and the design philosophy he used with C++.


Put an end to bottom-trawling

Get this: Not only do ocean-floor-scraping fishermen ruin whole marine ecosystems; governments pay them subsidies to do it, because it otherwise would not be economically viable!

This is criminal conduct on behalf of the fishermen, the fishing companies and the governments involved. There is no excuse for it. People who make their living based on such disregard for what they are destroying, do not deserve to make that living.


General solutions (when programming)

Here are two of denis's rules of programming (learned the hard way).

Rule #1: It is good to avoid working on complex solutions for problems that might not exist.

Rule #2: It is good to postpone implementing solutions until you really understand the problems.

It follows from these rules that:
  1. One should avoid creating reusable code (solution) which will not necessarily find much use (problem).
  2. One should generally avoid writing reusable code (solution) until such time as one understands the problem inside out (has solved the problem the tedious way many times).
If you do not adhere to these rules, you will create more solutions than there are problems to solve, and the solutions you create will not be entirely appropriate to the problems that actually exist. Thus, the solutions themselves become part of the problem.

General-purpose solutions are hard to do right, and one shouldn't generally start implementing such solutions just because there might be a problem. You only start implementing them once you know the problem is there, and you've already had to solve it in a specific case several times, so that you have a good idea of what writing the general-purpose solution will entail.


Shit, it's raining!

My favorite, poignant quote for the week:
"They call this war 'a cloud over the land'. But they make the weather, and then they stand in the rain and say - 'Shit, it's raining!'"
As memorably interpreted by Renee Zellweger as Ruby Thewes, Cold Mountain.


The Final Solution (to Spam)

I used to receive 400-500 spam emails per day. At first, I just deleted the spam manually. When this overwhelmed me, I looked at various solutions.

I tried an anti-spam challenge-response program. This is software you put between your email client and your mail server. It constantly checks your mail server and sends challenges to senders that are not in its white-list. Major disadvantages: legitimate senders often won't bother to prove they are human; many legitimate senders are in fact automated; and finally, sending the challenge emails themselves gets you listed as a spammer, so outgoing email that you send gets lost.

So I quit the anti-spam challenge-response system, and tried an email program with a Bayesian filter. This didn't work quite so well either. Most of the spam got sorted correctly, but an unacceptable amount of legitimate email got classified as spam. I had to download all of the spam emails, and then I still had to browse through all of them sporadically to fish out any false positives. This didn't really reduce the burden.

So eventually I shelled out for an email server of my own, which I configured like this:
  • Instead of having a user@domain.com address format, my address format is keyword@userdomain.com.
  • Whenever I need to give someone an email address, I first create a new keyword alias on the mail server, giving out a customized email address.
  • As soon as spam starts arriving on any of the aliases, I remove them. Subsequent messages to the removed aliases are denied by the mail server on delivery.
  • All messages to active aliases are routed to a single and private account that never gets disclosed.
  • If someone wants to know the address where they can email me, they can go to my private web page where a working alias is always made public. I take measures to prevent spammers from harvesting that address from my website, but when they do, I can always replace it with another one on demand.
Using this approach, I have been able to keep the amount of spam in my mailbox at virtually zero, reduced from hundreds per day that I had before. Best of all, my loss of legitimate emails is also at virtually zero.

I think everyone with a spam problem could solve it with a system like this. All anti-spam approaches that are based on filtering create an arms race and can have a very significant hidden cost when important emails get lost. The keyword-based system gets rid of spam with less maintenance, more durably and much more reliably.


What your taxes are spent on

This is why I think the income tax is a morally reprehensible act. It's all wasted on ridiculous projects like that. It's not the government collecting a modest tax to pay for commonly needed infrastructure. It's the government taking your money and stuffing it into the pockets of people who excel at collecting it. It's all wasted like that.

I have no idea why almost no one else is rebelling against that.


Elton John: Ban organized religion

Here's a guy I respect saying something I've been saying for ages: personal religion is fine, and everyone needs some kind of answers to unanswerable questions of existence. But why do these beliefs need to be coordinates by mullahs, L. Ron Hubbards, and popes? Why does there need to be a global para-state based in Vatican that owns something like a quarter of the world - just to coordinate what fictions people choose to believe in?

All of this is unnecessary, is manipulative and causes hurt. The world would be served well if organized religion was banned, and everyone just had to find their answers to unanswerable questions for themselves. Whether that means picking them up from the bible or the koran is up to you - but no one should be telling anyone that they are the 'only true source' of knowledge on these issues, because it's really just a method of deceit, manipulation and exploitation.

False gods? Just say no.


The fabled distinction between animals and humans

New Scientist reports that scientists want to create part-cow, part-human embryos for research aimed at treating diseases such as Parkinson's and Alzheimer's. However, there's a problem. These days, they have to ask permission from people who have no clue about anything. Here's what Calum MacKellar of the Scottish Council on Human Bioethics has to say about it:
"In this kind of procedure, you are mixing at a very intimate level animal eggs and human chromosomes and you may begin to undermine the whole distinction between animals and humans."
The idiots! There is no distinction between animals and humans. When will everyone finally come to terms with that eating meat means killing living beings, and that murder is something we all participate in on a daily basis? That doesn't necessarily mean that it's bad, but please, let us stop pretending.

There is no such thing as a single human race either. Everyone is genetically different. Some people are genetically closer to our ancestors than others. That's not bad. That doesn't mean that those people necessarily need to be treated as inferior. But let's stop pretending it isn't so.


The appeal of C

I've been learning Scheme lately, on and off, an evening here and there, when I take a bit of time off of my immediate development requirements. Scheme is a very elegant language, which I admire for its beautiful syntax. Here's an RSA decryption program in Scheme:
(write (number->string
((msg (string->number "0FB78CC9...283E9F69...9AA34BC1" 16))
(mod 4847438932...5371616465...9691290563))
(remainder (expt msg 17) mod))
Simple, eh? The variable 'msg' receives a big fat RSA ciphertext in hexadecimal, the variable 'mod' receives the modulus of the RSA public key, and the public exponent (17) is just keyed in. The code computes (msg**17 % mod) and prints the result as a hexadecimal string. It executes in a blink using the Petite Chez Scheme interpreter, which Cadence Research Systems kindly make available for free. (They make money on the compiler, which I hope one day I'll have a good reason to purchase. I'd like to contribute to continued development of neat stuff like this.)

So, a few minutes ago I was looking at the straightforward implementation of a simple round-robin system in Scheme, trying to understand how it might actually be executed efficiently, and then it dawns on me - the reason why I first started programming in C.

Programming in C is great because the language makes it easy for you to understand what the machine will execute.

Programming in C is rewarding because it's like this neat, little, clunky macro language on top of assembler, and you can easily visualize how each of your statements and expressions will be translated into machine code. You know exactly what each line of your code will do. It's never fuzzy. There's never anything behind the scenes, the compiler doesn't add any magical dust or go through any mystical motions to make things easier for you. The code executes exactly as you write it.

This is important, because understanding what the machine does is crucial in a performance-sensitive application, which all professionally written programs are. When you encounter a performance problem, the straightforward relationship between C and machine code makes it easier to analyze a program and find bottlenecks. It makes it easier to not write bottlenecks in the first place.

On the other hand, in a language that does things behind the scenes to make things easier for you, you not only have to understand your code, you also have to understand the things that are supposed to be hidden from you. Because those things get executed, too. If you don't have an understanding of how the language transforms the program into machine code, you cannot understand why it executes 1000 times slower than you need it to.

And that's the appeal of C, as well as C++. These are languages that aren't there. C++ is, effectively, a big but conceptually simple macro language on top of the machine code. It is a design goal of these languages to keep the background infrastructure minimal. Unless you count the run-time library, there's very little that happens behind the scenes that you don't know.

The non-threat of terrorism and its causes

We've seen misled idealistic young men do several horrible acts since the beginning of this century.

20 of them hijacked 4 airplanes and tore down the World Trade Center in New York, killing some 3,000 people overall. Several more blew up trains in Madrid a year later, and four British-bred young fanatics blew up some trains and a bus in London, a year after that. Terrorist explosions also killed hundreds of people in Bali and other places as well.

Meanwhile, in the United States alone, there have been some 17,000 murders every year, and some 95,000 rapes. Each year, there were some 45,000 deaths in motor vehicle accidents. In the UK, there are every year some 8,000 alcohol related deaths.

Given these figures, one might ask, why not start a war on cars? A war on roads? A war on booze? Oh, wait - our great-grandparents tried that.

We all know why. Because we think we can control these risks. We think we won't die on the highway, when in fact the issue is to a large extent out of our hands. And we think our democratic liberties are more important than the 95,000 people a year who are being raped - in the US alone. Surely, if we sacrificed enough of our liberties, we could prevent rapes from happening in the first place?

Compared to all the other threats we face every day, terrorists are a mosquito. Terrorists can be defeated with good intelligence and good strategy. There is no terrorism if there is no emotional cause that stirs it up, in the first place.

Most terrorism in the past few decades has been due to some perceived injustice. The only way to cure terrorism is to cure the perception of injustice. The IRA arose because the UK was oppressing Northern Ireland. The ETA arose because the Spanish wouldn't let the Basque country separate. And Muslim terrorism arose because the state of Israel was forced upon them in the midst of their most sacred country. And for the past few decades, Israel has been a driving force of Muslim terrorism everywhere.

Israel is as religiously fanatical as Muslims, and it is backed by religiously fanatical men. It is a conflict-driven state backed by religious fundamentalist in the US. Europe is also seen as backing Israel, although less so than the US. Both the US and Europe therefore attract Muslim fanatic hatred by association with Israel.

Why does everyone need this conflict?

Why does everyone need to support Jewish religious fanatics in Israel who oppose peace and manage to disrupt (murder or dislodge) every one of their leaders who threatens to make some real peace progress?

Why does everyone need a country of religious fanatics so inappropriately placed in the Middle East, in the first place?

Hey, forget that - what sane Jew moves to Israel at all?

If you are a Jew and you want to be in a friendly and peaceful country where you won't be discriminated and will be given opportunity, you move to the United States!

The people who move to Israel are those who are willing to raise their children on a battle front, for what? So that they may live in a country that was created specifically for the Jewish religion? So that they may live without having to put up with neighbors who aren't Jews?

Don't tell me people move to Israel because they want to be safe from persecution. You don't move into the middle of Arab country that hates Jews in order to be safe from persecution. If you're a Jew and you want to be safe from persecution, you move to the United States.

The fact is that Israel is fundamentally a state of Jewish religious fanatics that is ill-placed where it is. And there is no need for supposedly civilized nations like the US and Europe to support one group of religious fanatics, the hardline Israelis, against another group of religious fanatics, the hardline Muslims. There is no need to get involved in that.

What we should do is, our countries should be hospitable to everyone who integrates into our secular societies, regardless of their origin. We should be inhospitable to everyone who champions religious truths above peaceful coexistence. That's all. We only need to do that, and then we won't be attracting the ire of angry Muslims any more.

And then, perhaps, someone could focus on the problem of 17,000 annual murders and 95,000 rapes, just in the US.

Perhaps the next US president can blame it on Castro's links to porn and invade Cuba...

Saddam Hussein sentenced to death

I don't think Saddam Hussein led a very enlightened regime, but a few observations are in order:
  • There was no civil war under Saddam Hussein.
  • Saddam Hussein did not support terrorism and indeed prevented it within his country.
  • Saddam Hussein indeed killed many people and oppressed more with the aim of stabilizing his regime. But stabilizing his regime prevented a civil war with a potentially much larger death toll.
  • Saddam himself didn't kill nearly as many people as the embargo imposed against Iraq by the United States, which caused the deaths of millions of children.
  • Now that Saddam has been removed, Iraq is in a civil war that has so far cost 400.000 or more lives - many more than in Saddam's regime.
  • Now that Saddam has been removed, Iraq is a genuine terrorist haven.
  • It is realistic to expect that things are only about to get even worse.
Who, then, is the real criminal? Who is responsible for most of the deaths that have happened in Iraq in the past 20 years?

Is it Saddam Hussein?


The United States and Europe are responsible for a factor of magnitude more deaths in Iraq than Saddam Hussein's regime was. The embargo killed millions of people due to lack of food and medicine, and the civil war has killed upwards of 400.000 already, and is going to kill more.

Granted: Saddam Hussein behaved stupidly enough to attract all this to happen. But he is not, eventually, the cause for all this suffering and death.

So why sentence him to death?

When Saddam Hussein's death sentence is carried out in a few weeks, and George W. Bush appears on TV croaking about justice, it will be a sad travesty. The real perpetrators of much bigger crimes against Iraq will remain free.


There is AIDS

In my previous post, I linked to sites that question the assumption that HIV causes AIDS.

I have since looked at what the mainstream proponents of the HIV->AIDS theory have to say about the arguments of those who are against it, and I have so far found the following good resources:If you're aware of more factual responses to the claims made by Alive & Well and others that dismantles their claims based on solid research data, feel welcome to comment.


There is no AIDS?

We all assume that the HIV-causes-AIDS theory has been proven beyond reasonable doubt, since otherwise, why would we be seeing so much material that takes it for granted, right?

Well... It turns out the HIV/AIDS theory might not have been proven, ever. At all. It might be, in fact, that it is only the result of mass hysteria and a long game of "telephone".

Or, as it says on the website of one Peter Duesberg:
On the basis of his experience with retroviruses, Duesberg has challenged the virus-AIDS hypothesis in the pages of such journals as Cancer Research, Lancet, Proceedings of the National Academy of Sciences, Science, Nature, Journal of AIDS, AIDS Forschung, Biomedicine and Pharmacotherapeutics, New England Journal of Medicine and Research in Immunology. He has instead proposed the hypothesis that the various American/European AIDS diseases are brought on by the long-term consumption of recreational drugs and/or AZT itself, which is prescribed to prevent or treat AIDS. See The AIDS Dilemma: Drug diseases blamed on a passenger virus.
I very much recommend checking out this site. It discusses this topic surprisingly professionally.

Did you know that at least one of the researchers credited with discovering HIV has since stated, according to Alive and Well, that "he does not believe HIV alone is capable of causing AIDS"?

See also my next post where I link to sites in favor of the opposite point of view.


Dawkins and the drive against religion

In this post, James Robertson discusses Richard Dawkins's drive against religion, which drive I generally agree with, but I think it misses the point in some ways.

It is not necessary to teach people not to believe in God, but it is necessary to convince them that reason comes first. Faith is not a problem if the believer is willing to adapt when confronted with facts that conflict with his faith. But faith is a problem if one isn't so flexible - when one puts faith ahead of reason in one's value system. This leads to fanaticism, terrorism, abortion clinic bombing, dressing up women in burqas, female circumcision, and so on.

It is very necessary that the school system develops the students' rational analysis skills, to give youngsters trust in their reasoning abilities. Beyond that, teaching them not to believe in unicorns or witches is pointless, because what else is more interesting than what you aren't supposed to do, think, or believe.


Religious fundamentalism is around us

Most "normal" people are so insufficiently aware that things like these are taking place in the world every day, and it is "normal".

I grew up in a light version of this - my growing up was full of conflict with a Catholic fundamentalist parent. I've also been upclose and personal with Network 21 (the strongest group of Amway distributors) who run an indoctrination system that's in many ways similar to this.

This is really evil, and people usually fail to understand that when I say that I'm against organized religion, this means that I'm against cults and indoctrination systems like this. They are a real disease that perpetuates itself in society, and even large and generally less fundamentalist organized religions have lots of nooks and crannies which are fundamentalist in this way. I've seen those nooks and crannies and people who perpetuate this on the Catholic side, and I can confirm that indeed these patterns are evil, and furthermore that they are not a deviation, they are an integral part of the system, they are the norm.

Now all it takes is for some more people to speak out, and for others to pay attention and listen to people with such experience, and not think that we just need to "make nice" and "reduce social friction", as alluded to in my previous post. This kind of thing destroys the lives of people it grabs on to - I am only a light victim of this, but see how dogemperor describes how she was raised. Beyond the people they affect directly, cults like these have the power to cause wars in which millions get killed, and they have a great eagerness to do it. The Iraq war may have partly happened because it had support from large masses of American Christian fundamentalists, who believe it is a stepstone to their rapture and salvation.

If you don't know much about the power and the nature of religios cults, please do educate yourself. Read the experiences of people like ex-dominionists, ex-opus dei, ex-scientology. Nothing is more tragic and more dangerous than people who wreck their lives and others' convinced they're doing the right thing, caught up in this system that totally prevents them from thinking.

And there are so many of these people. It sometimes seems as though 'light' versions exist wherever you look.

What's the right amount of social friction?

James Robertson argues in response to my recent thoughts about dress code:
In social settings, politeness exists to reduce friction. People who don't get that are - whether they realize it or not - increasing the social friction between people.
There is of course truth in this, but there are two sides to this medal, and as far as dress code is concerned, I responded in a comment under James' post.

As far as social friction in general is concerned though, I find it worthwhile to express these thoughts:

It could be argued that, in a situation where you're a lemming in a group of lemmings heading over a cliff, it will "reduce social friction" if you just go along and don't resist the flow of your peers. Likewise, it could be argued that if you were living in Nazi Germany, it would "reduce social friction" if you just didn't complain about the treatment of the Jews. (*) In fact, you are quite correct that "reducing social friction" is just the kind of thing you need to do in order to avoid trouble and to progress in the world. The problem is that, if you excel at "reducing social friction", you become, well, "slippery".

Always aiming to "reduce social friction" is not something that counts as admirable behavior in my world. Standing up for the right thing is what counts. As far as I'm concerned, everyone who aims to "reduce social friction" is just helping the world become a worse place, because it accomodates everyone who's making it worse.

But, sure, it helps one's interests in the process.

(*) I know, I know, Godwin's law, reductio ad Hitlerum. But the analogy is worth stating because that's where society can go if everyone ignores a problem and just aims to "reduce friction". Are the United States not becoming a fascist nation because everyone is playing along with the stupid measures invented by the federal government, "reducing the social friction"?


Iraq death toll between 400,000 and 950,000

New Scientist reports:
Critics commenting on the study say the number of deaths in the families interviewed – 82 reported before the invasion, 547 afterwards – was too few to extrapolate to the whole country. But the researchers insist they have made statistical compensations for their sample size to pre-empt these criticisms.

They estimate that there were at least 392,976 excess deaths – those that would not have occurred, has there been no war – in Iraq since 2003, and possibly as many as 942,636. The research confirmed the results of the same group’s 2004 study.
Even Saddam Hussein didn't kill as many people.

Suppose the Iraq war had anything to do with protecting the United States from terrorism. Which it did not, and the United States are now supposedly more at threat than before. But anyway.

Suppose that, a few years ago, George W. Bush had told you that his plan of getting rid of the terrorist problem would cost the lives of between 400.000 and 1 million Americans.

What would you have thought of Mr. Bush's plan, then?


Join me in my country!

Here's what a country governed by denis will look like.

1. No flat democracy. Flat democracy is when two wolves and a sheep get to vote on what's for dinner. It leads to dysfunctional populist policies and totalitarian states. Hitler was voted into power. So were Putin and Ahmadinejad.

People don't know what's best for everyone. They can be manipulated at will and they won't ever know any better unless there's an external correction.

Just look at how long the income tax has persisted. Look at how bureaucracy worldwide has ballooned. People can't get elected unless they're good at lying and manipulating. If any improvement is to be done, it can only get done by a skillful politician who can do it not because of, but despite the public.

This is no way to govern a state.

For their own sake, power is not for the masses.

But even more importantly, power is not for the crackpots: Kim Jong-il, Stalin, Ceausescu. So where shall the power reside?

2. An enlightened, constitutional absolutism, until a better model is found. The initial constitution shall be short and shall consist mainly of the essential human rights the state is obliged to respect, lest it forfeit its legitimacy. In most respects though, I shall be free to organize, reorganize and partition the state as I see fit, in order to find the best working model. Models I shall try will include SD-2 (Structured Deep Democracy) and WikiLaws. Preferrably, I would like to come up with a dynamic system that leads to a stable, free and self-improving state without the need for central leadership. If this fails, I will look for a way to select central leadership through a better process than the current major systems (flat democracy or hereditary monarchy) provide. (A system like the one through which a Dalai Lama is chosen comes to mind.)

3. No income tax. No tarriffs. No customs. The income tax imposes costs of compliance which seriously impede economic activity. Tarrifs unnecessarily impede trade. No one should have to concern themselves with taxation when making economic decisions. Revenue collection must be neutral, straightforward and fair. If necessary, something akin to FairTax can be enacted, but it will not be necessary, because:

4. The state owns all land. Land cannot be purchased, only rented, by companies and individuals. The state lends all land through auction, collecting the proceeds as its revenue. The revenue that the state collects is its own and the state may do with it as it pleases, provided only it does not violate the constitution. The state is thus interested in pursuing policies that encourage economic activity, which in turn increases the value of land. The state is encouraged to take responsibility for land development and planning and is motivated to always do the right thing, long term, with respect to the land. Thus the power to solve problems is placed with the entity most able to solve them, and the entity is motivated to solve them.

5. Anyone can immigrate as long as they can rent a place. The state and the economy always benefits from economic immigration, so there is no need to restrict this. The only condition is that everyone who immigrates is able to provide themselves with the basic necessities.

6. Everyone must provide for themselves. The state is to be founded on formerly barren land, so all or almost all initial citizens are immigrants. Those who cannot provide themselves with basic necessities, or refuse to do so through honest means, are sent back to their country of origin.

7. High-quality education. The long-term well-being of the state depends entirely on the abilities of its citizens, so these must be nurtured and developed to the highest extent. This starts with top-notch elementary schools followed all the way through to universities. Elementary schools are free and well-financed. Subsequent levels of education are accessible to everyone on an investment stipend principle: the state or other investor finances the student in exchange for a share of her future paycheck. The share (interest rate) is larger for riskier investments (student might not be capable for his chosen path), smaller for less risky ones (student appears very capable).

8. Failed persons have status of pets. People who are not able to provide themselves with basic necessities, yet cannot be deported because their country of origin will not accept them, or because they were born within the state, are understood to have the same status as pets. They are a burden to society which someone needs to bear. If someone (friends or relatives) is willing to take care of such a person, they are free to do so. If no one is willing to take care of you, you are sent to an institution that houses people who cannot provide for themselves. This institution may or may not provide limited access to the outside depending on whether you present a threat to society.

It is understood that, if you are unable to provide for yourself, there are two options: you either have potential or you do not. If you have potential, someone should be willing to invest in you to help you become what you can. If no one is willing to make that investment, your case must be considered terminal, hence you get placed into an institution suitable for humanely sustaining your life at a reasonable cost to the state.

This is intended to be a reasonably acceptable yet glum prospect, to avoid a situation where people are encouraged to mooch off the state.

9. Universal anti-infection testing. The state concerns itself with ailments that can be transmitted from one person to another and takes steps to minimize transmission of illness. All visitors and immigrants are routinely tested for a variety of transmitted diseases, including STDs. All citizens are tested in regular intervals or on return from trips abroad. The strategy for dealing with infections depends on person's status (citizen, foreigner), infection spreding mechanism (breathing, sexual, ...), etc.

Example: as long as HIV treatment is expensive and the infection non-curable, the state will not routinely pay for treatment (the person should be insured for the possibility or face consequences). However, the state will help prevent further infection by making it possible for potential sexual partners to easily and trustworthily share information about each other's recent HIV and STD test status before engaging in sexual activity.

10. The state will promote rationality. The state won't prohibit anyone from worshipping God, Allah or the Invisible Pink Unicorn. However, the state will ensure through its education system that children are well-informed about the existence of various religions, their various histories, policies and views, and why rational thinking is better suited to solving one's problems than mere belief.

11. Personal freedom. The state will not legislate on anyone's ability to do things that adversely affect no one else. Pornography, promiscuity, nudity, prostitution, gambling and drugs will all be permitted. What won't be permitted is violence and crime. People who resort to violence and crime because of their lifestyle choices will be considered for a possible investment deal to bring them back on a productive path, or else, internment in the humanitarian institution for housing people who cannot take care of themselves.

12. No revenge-based justice. The justice system shall focus in every case to find the solution that is best for everyone. People who have transgressed against the law and done things such as stealing, rape, murder, shall not be punished so as to exact revenge, but shall be prevented from repeating their offense in a way that will necessarily restrict their freedom, but attempting to preserve possibilities for them to still somehow make sense of their lives and do something good for themselves and society. A 21-year old woman who falls asleep behind the wheel and accidentally kills 6 teenagers doesn't need to go to prison for 48 years, regardless of what the parents of these children feel.

I have more ideas, but it's already 5:40 AM.

So, what do you think?

I only need 100.000 people who want to live in a state like this, to lend me an initial investment of about US$100.000 each. That's a pittance compared to the taxes your family and yourself will save over a lifetime. Then we can lobby the Australian people to sell us a bit of their land so we can start our country.

Sure, there's nothing there right now, but we don't need anything to begin with. Singapore sprouted in a matter of decades, and Israel started out as a desert. With the right economic system in place, a paradise can be made out of anything. All we need is a piece of land where no one will bother us, where we are reasonably safe, and where we have room to expand.

In 30 years, New York could be nothing compared to the metropolis we can build there.

Visual Studio 2005 Configuration Manager Bugs

The programmer who created the Visual Studio 2005 Configuration Manager should be hung.

The Configuration Manager just doesn't work. It's so quirky you would think that they shipped it without even a minimal test. Suppose you remove a configuration; rename a different configuration to match the name of the one you removed; close the Configuration Manager; open it again; and both configurations reappear.

Heck, forget about renaming anything. Just try to remove a configuration from a project. Close the solution and open it again. The removed configuration is still there. If I want to achieve anything, I have to edit the .vcproj files manually.

Not to mention that, as you switch the active solution configuration, all of the settings sometimes just seem to flip and then you have to reset them again one by one, manually.

The Visual Studio 2005 IDE, overall, is such a crappy piece of software. It is better than Visual Studio 2003, not to mention 2002, which was impossibly buggy. But it's so way behind the stability of Visual Studio 6, which simply worked, whatever you did.

And it's not just the Configuration Manager. It's the whole IDE. Try creating a custom build step for a project. The extra dependencies don't start to work until you close the solution and reopen it. And that's not documented anywhere - it's a bug you have to learn about and work around it.

And the whole IDE is so frustratingly slow. I have a double-core 3.2GHz machine, and still I cannot write code normally while I'm compiling. Each keypress takes a few seconds to interpret. That's just an impossible degradation compared to the responsiveness of Visual Studio 6.

Whoever implemented Visual Studio 2005, they did an enormously crappy job. It seems as if Microsoft gave the job to a bunch of fresh out of college C# programmers who don't know their way around. The quality would be acceptable for a first try, but this is not the first try - it's their 3rd version of the .NET IDE, and the 8th version of Visual Studio overall. Just what on Earth are they doing?

Has everybody who worked on Visual Studio 6 packed up and gone to Bora Bora?


America's rigged elections

I tend to believe that all this is true. It is uncanny how chummy Diebold executives are with the Bushes, and how conveniently ignorant the company is when it comes to the (non-)security of their voting machines. Add to this how Fox is de facto controlled by Bush relatives, and the "small" election irregularities that kept popping up after recent elections...

Even from across the ocean, it's quite clear what is actually going on. George Bush senior - the only ex-president known to still daily be reading his CIA memos - is the conniving architect who, with the help of his powerful network of friends, installed his easily-manipulated idiot son as the US president and has been keeping him in office through deceit and outright manipulation for the past 6 years. This is all being done in bad faith and these are acts that, altogether, amount to treason. The truth doesn't come out partially because (1) these people control a major portion of the media, and (2) it's inconceivable that this can really be happening in the "paragon of freedom and democracy" that the US is esteemed to be, anyway.


Dress code

A commenter recently posted this on James Robertson's blog:
bigz, if you come into my office wearing torn jeans and a t-shirt, I will be offended. You are not showing respect for me or yourself. That is simply the way the world works. And yes I teach my child respect. I learned it from my parents.
My instinctual reaction to this is, "If you're so uptight about clothes, I don't necessarily need to do any business with you." The person who wrote this is essentially a traditionalist - a person who perpetuates certain patterns of behavior "just because", not because there's necessarily any good reason for it. Being a traditionalist is fine as long as you don't force it on others. Forcing it upon others, though, is what the words "cultural imperialism" are about.

If I come into your office in jeans and a T-shirt, I'm not disrespecting you, because wearing such an outfit doesn't mean disrespect in my world. It's an outfit I like to wear and which I find myself comfortable in.

Likewise, although I myself would never wear a suit, I respect your decision to wear it and might admire how well it fits you.

However, if you think that my wearing jeans means disrespect, then you are forcing your value system on me, and that is the true disrespect. I would consider that as an insult, and for this reason I wouldn't want to do business with you.

Evil in Russia

This is despicable. It's worse than George W. Bush and the Iraq war. Dubya, at least, comes across stupid enough to give him the benefit of the doubt that perhaps he actually believed Iraq had something to do with Al-Qaeda. Or even if he was well aware that the link was tenuous, he might have been deluded enough to think that an intervention would actually result in a "beacon of democracy" and such things. It's a stretch, but - at least his stupidity makes it potentially conceivable that he didn't act overtly in bad faith.

This cannot be said for Putin. What he has been doing lately is so egregiously evil - first Yukos, then Ukraine, and now Georgia - that it cannot be forgiven on any moral grounds. Bush may be an idiot surrounded by self-serving men; but Putin is truly evil.

The world needs to stand up to this man. Something needs to be done about him.

But with America now exhausted from the war in Iraq; with its international goodwill wasted; its superpower status challenged; its global influence shattered; with Europe reliant on gas from Russia, and China being in alliance with it; who, and how, could now even stand up to him?


Meta-programming vs. the mental gap

Boris Kolar wrote favorably about meta-programming in his comments to my previous post.

Meta-programming is, by definition, writing code that writes code. The very need to write code that writes more code is something that should be avoided - pre-empted - at the time of programming language design. Show me an example where you need to use meta-programming, and I will show you a language that lacks an essential feature for which your meta-programming is a workaround.

The essential problem of software development is not that programmers cannot churn out code, and so they need tools to help them churn out more code automatically. The essential crisis of programming today is that all code written nowadays has severe deficiencies in security and reliability. The problem is not that programmers are unable to create software. The problem is they are unable to create software that really does what they wanted it to do.

You see, all programs are perfect. All programs are complete, and they do exactly what you have written them to do. They implement the design you wrote down. The problem is, you don't know what you wrote down.

There is a wide gap between the programmer's expectations of what the code will do, and what the code actually does in reality. This gap is the source of most errors in software, and it comes about as a result of the whole programming environment being non-intuitive and too difficult to use. The languages and tools require the programmer to be 100% conscious of what he's doing at all times; whenever you are 99% or less conscious, you create bugs. And bugs are a problem when you ship to a bit more than just the machines in your living room. They are a problem when your customers depend on your software and cannot use it because of a freak bug. And bugs are a nightmare when they result in security vulnerabilities. It is untenable that a security researcher can easily find a 0-day exploitable vulnerability in any browser, any day. Such software cannot be trusted. We don't have desktop software today that can be trusted - and it's all because of the mental gap.

Now, getting rid of the gap between the programmer's mental model and the code does not call for giving the programmer more freedom. This is exactly the problem of C: no guidance and too much freedom to pursue any path. Closing the gap calls for simplifying the programming language and tools - reducing complexity, closing off the unwise paths - so that code can be reasoned about easily. Doing this in a way that retains all the necessary flexibility and still performs well is a challenge.

.NET and Java go a good way towards solving the mental-gap problem as far as memory management and single-threaded execution are concerned. The problem is, they don't solve the problem for parallel and asynchronous programming. That's what Flow is about. And additionally, it so happens that closing this gap in a way like Flow does also makes applications easier to design in an orthogonal, reusable an extensible manner, improving programmer productivity that way as well.


Function calls considered harmful

Everyone now knows how the many-core processor era is upon us, and how this challenges existing methods of software development because current mainstream development methodologies are inappropriate for a new environment in which most software will need to be parallel if it is to take advantage of many cores.

The problem is not that existing languages make parallel programming impossible. It is that they don't make it simple.

This is similar to the problem of manual memory management in languages like C and C++. It takes years of discipline before you learn to write programs that will not leak memory or misuse it in some way - and even when you do, memory management still takes a considerable portion of the time you spend programming. Contrast that with platforms like Java and .NET which cut the red tape and allow you to simply specify what needs to be done, and the platform takes care of the memory management.

It is also similar to the problem of security in language like C and C++. Like memory management, C doesn't make it impossible to write secure code without buffer overruns. It just doesn't make it simple. If you're using C, you're going to shoot yourself in the foot and sooner or later have some kind of buffer overrun or loose pointer problem that's going to be a security hole. If you're using C++, it takes years of discipline before you learn to write programs in ways that avoid exposing yourself to security risks. Contrast that with platforms like Java and .NET where all code is implicitly secure and verified against any kind of buffer overrun or dangling pointer. You can still commit security mistakes in less obvious ways, but the lion share of potential vulnerability surface is eliminated.

Java and .NET make it possible for non-expert programmers - which means most - to write code that can actually be used. If these programmers were to use C or C++, their software would be riddled with memory leaks and security holes, rendering the software unstable and impossible to use. But since they write their code for .NET and Java, their programs might be inefficient and not as sleek as they might have been if they were written by experts; but the programs will work, and they might actually be used safely in practice.

The problem with parallel programming is that we have no mainstream, widely-accepted platform that makes parallel programming simple, like .NET and Java make it simple to use memory and avoid dangling pointers and buffer overruns.

The major paradigm we have for parallel programming today is the multithreaded, shared-memory locking scheme. As above, this paradigm doesn't make parallel programming impossible, it just makes it damn difficult to do well. You might have already read somewhere that, even if you are an expert, the question is not whether you will encounter race conditions and deadlocks; it is when. It takes years of discipline before you learn to write programs to avoid these problems, and even then thinking about this takes an inordinate amount of your time, and you can still easily shoot yourself in the foot.

I spent the last year or so thinking about what a good solution to the parallel programming problem might be. In the end, I discovered that the original designers of Unix got it right to begin with. But let me first tell you about the other things I considered.

I built up my skills programming on Windows, which uses the multithreaded, shared-memory, locking approach to parallel programming I criticized above. I was looking at how simple it is to program concurrent software in SQL with transactions, and I was wondering how the concept of transactions might be used in software. I found that this concept is called a Software Transactional Memory; I wrote my own C++ implementation of it and found that other implementations already exist in .NET and in Haskell. Software Transactional Memories sound good in principle. Instead of surrounding access to shared memory with manual locking, which leads to race conditions if you lock inappropriately and to deadlocks if you lock in a conflicting order, in STM, all access to shared memory takes place within a transaction. When you're in a transaction, you always see memory in a consistent state. If another thread needs to modify the memory in the meanwhile, the transaction mechanism makes sure that you either can still see the previous state, or it aborts your transaction so that you can retry it, this time hopefully getting a consistent state.

The problem with STM is that, no matter how you approach it, you cannot avoid the possibility that any transaction might need to be aborted and retried - either to avoid deadlock, or to avoid working with inconsistent state. Aborting and retrying, though, is a much easier proposition in functional languages like Haskell than in imperative languages like C++, C# and Java. The essential problem is that the language does not provide any means to separate code that can produce side effects (various kinds of I/O) from code that just manipulates memory. Code that just manipulates memory can be easily retried by resetting its state and letting it run again. But code that does I/O cannot be retried because it can result in incorrect behavior.

So I searched on, and I stumbled upon the concept of Flow-Based Programming. The idea of flow-based programming is that, instead of structuring the program into functions, methods and classes, you structure it into components. Components differ from functions and methods in that passing data to a component does not imply surrendering execution control to it. Instead, your component is free to continue its execution, and if it needs a result from another component, it will get it when the result is ready. In the mean time, the component can do other things.

Programs designed in a component-like manner are vastly simpler to parallelize than programs designed with classes and functions. I wrote a component execution controller in C++ that, altogether, consists of some 350 lines of code. Those 350 lines sum up the execution control for the whole application, regardless how many components it's made of. The components themselves are much simpler to write than functions and classes with multithreading support, because each component behaves as though it has the processor to itself. There are no conflicts with shared memory access; a component receives input and processes it locally without regard to any other components that might also be running. And the whole component design makes it possible to structure programs in an easy to understand way. There is a principle to how components are connected together, and this principle pervades the application. A program doesn't become unwieldy and grow out of control as it gets bigger. It just gets bigger, remaining manageable in the same way throughout.

The essential problem that makes parallel programming difficult is the pervasive use of the function call. The function call is a fundamentally single-threaded idea. It makes the execution of your code implicitly wait for execution of some other code, regardless of whether the two pieces of code actually need to wait for each other at all. Sometimes they do, such as when you need to receive a result from the function before you can continue. But much of the time, you should also be doing something else while waiting for the result, such as checking for user input and checking whether your program has been told to shut down. And in such cases, architecting your program based on function calls that won't return immediately is ruinous. It prevents you from handling events immediately that there's otherwise no reason you could not, making your program block unnecessarily; and it wastes processor time because you cannot do things concurrently that there's otherwise no reason you could not. A component-based design implicitly solves these problems like Java and .NET solve the memory management problem for you, resulting in cleaner code that's easier to write and easier to understand, which implies greater programmer effectiveness and higher security and reliability.

And at the end of it all, this is only a reinvention of the original Unix architecture. Originally, Unix contained no OS support for threads; it was considered unnecessary. In Unix, a process is much like a component. It is easy to create and destroy. It is single-threaded, making it easy to design and write, and it can communicate with other processes (components) through pipes (like stdin, stdout, stderr). Complex behavior arises out of the bundling together of multiple processes and connecting their inputs and outputs. So when you do something like "netstat -an | grep TCP.*22", you're effectively engaging in component programming - chaining together of components to achieve the desired result. The component design in Unix is kind of crude, what with the inflexible number of pipes and the need to manually serialize data as it's being passed from process to process, but it was a step in the right direction.

Microsoft's Singularity OS research project, incidentally, uses a single-threaded, lightweight-process, component-based model with no shared memory access as well. And previous research into reliable programming architectures like the Extremely Reliable Operating System (EROS), as well as Ericsson's Erlang, are based on similar principles.

Now, it's just a matter of putting this knowledge into a framework that everyone is able to use. I'm doing it with my component infrastructure for C++ and C# that I call Flow. It isn't yet ready for worldwide consumption, but it will be soon. Check back on this site in a while if you're interested in a sneak preview. :)


Currency: interest, sources and sinks

Vorlath recently wrote:
I think you need to re-evaluate your reality. The money system is a failure. It's a joke. Lump all the loan agencies together. Everyone else has to borrow from these organisation (yes, if these people so choose). Where exactly do you propose the borrowers get MORE money than they borrowed to pay the interest if there's none available? You can't pay back what doesn't exist. The system is made so that at least some MUST fail. Even if you do everything right, you may still fail because there's a process of elimination at work. I know that's a simplistic view, but it doesn't make it any less true. So if you have more money than others, you too can loan it out and do nothing except for one fact that you have more money. That's BS and is why no money system will ever work. No system that requires failure will ever get my support. I find it funny how much suffering and failures there are around the world because of money, yet there are still people that claim everything is peachy.
Vorlath, I'm not sure that you understand how money is created.

There isn't a single fixed amount of money around. Money is created dynamically and destroyed dynamically, essentially on demand. Banks create money by loaning out their float. The task of the central bank is to control this dynamic creation and destruction of money to make sure there's just the right amount to keep the economy stable. No one gets screwed.

There are problems with how currency is issued, but they are not problems with interest.

One problem is that currency has a fixed number of sources and sinks. Because currency is issued by a central bank, there's more currency the closer you get to the central bank, which makes the financial landscape non-homogenous. Consequently places that are not near the central bank are poorly supplied with money, so prices in Alabama are by necessity lower because dollars are scarcer than in New York. The central source/sink issuance system forces everyone to do business with the issuer of the money if they want to have any money in the first place. That is unfair.

However, regarding interest rates, the only risk-free way to loan out your money is to be a big bank and "loan it out" to the central bank, which of course can always pay you their published interest rates simply because they can always print money. However, in the long term, you will earn no real value this way because their interest rates will, in the long term, match the inflation. If you want to earn money by lending, then you have to accept your portion of risk and lend it to people and businesses, and then the amount of money you earn will be determined by how wisely you choose the businesses and people in which to invest. And there's nothing unfair about that.

Perhaps you might want to read a book like "The Future of Money" by Bernard Lietaer. I found it an easy read, quite entertaining and illuminating. It does a decent job explaining how currency works (more or less) and it paints a picture of the possible futures of currency.

A book I also found _very_ interesting was "The Future of Capitalism" by Lester C. Thurow, but that warrants a whole separate topic. :)


David Cameron's "Universal Mush"

The BBC has quoted David Cameron as saying:
"I don't want a world that has become a kind of bland universal mush where our distinctive cultures and histories and identities have are gone. I want India to be India and Britain to be Britain."
Who's David Cameron to want things about people's cultures and identities? I don't agree with bland, but the only way the world is going to be a more harmonious place is if it does turn into a universal mush. All of the individual characteristics that Mr. Cameron may find peculiar and interesting about India vs. England are, to the extent they cannot sustain themselves, counter-productive and must go. The only way that the lifetime of counter-productive features of different nationalities can be extended is by political fiat - forcing people not to do things, curtailing their freedom so as to extend the lifetime of what is pointlessly perceived as a national 'self'. That's what leaders like Mr. Cameron propose - preventing you from interacting with people you want to interact with, and restricting ways you want to interact with them, so as to preserve a fiction!



[English translation of my original post published in Slovene.]

An essential problem of modern parliamentary democracies is that, with time, the scope of bureaucracy and the complexity of laws tend only to increase, which encroaches on free initiative and suffocates the economy. What is the essential reason for this problem, and how could bureaucracy be trimmed and the complexity of laws be limited to reasonable boundaries?

A fundamental reason for the overwhelming complexity of laws is simply that they are too easy to pass. To pass a new law, support of only half the legislature is usually sufficient; to change the constitution, the crucial document on which the stability of a country is based, only two thirds are usually enough.

Consider this. The function of laws is that they prohibit or proscribe action by the citizens. Therefore, every law fundamentally restricts the freedoms of the citizens. A law that does not do this is an empty law. And such - frequently arbitrary, stupid and/or useless - limitations and prohibitions can be passed completely against the will of 49% of voters.

Another problem of representative democracy is that the sheer number of laws necessarily becomes too large for a single body, such as a congress, to manage effectively. The problem is similar to the economic problem of centralized decision-making in communist Moscow. In the centrally-led Soviet Union, the economic decisions were simply too many than could be processed, so decisions weren't made and the economy stalled. The free-market system - capitalism - solves this problem by putting the freedom to make economic decisions in the hands of every individual, removing the bottleneck of centralized decision-making. If you ever stood in line for bread in times of communism, or know stories of people who have, and now you shop in modern supermarkets, you know the difference that decentralizing economic decisions makes.

Would it not be possible to decentralize political decisions in a similar manner, and thus vastly improve the efficiency and effectiveness of the political process?

I suggest that, in a fictional state called Idealia, laws would be passed differently than it's done now. Instead of having congressmen and senators, we would take some ideas out of Wikipedia's book, where everyone can write whatever one wants, while anyone else can fix it. In the political system of Idealia, modern information technologies would link all citizens into a virtual political forum, where every citizen would have their virtual identity. Every citizen, without exception, could suggest a new law, which could reasonably quickly be put up for voting. A minimal number of votes would be required that each law would have to collect before it can be passed. On the one hand, this minimal number of votes would be fairly low, so that technical laws could be passed on things that most citizens won't find of interest. But on the other hand, every law, without exception, would have to satisfy the requirement that at least 80% of votes it collects need to be in favor, and less than 20% of them against.

And, what is crucial: even later, when a law had already been passed, it would be possible to discard it by just collecting the necessary minority of 20% (or so) votes against.

This system would take care of the uncontested essential needs of citizens, such as the need for a police and a fire department, since the vast majority of citizens are likely to agree about such needs. Some fundamental principles, such as the right of property, would be enshrined in a constitution, which could not be changed without agreement by 80% of all citizens.

However, in this system, it would not be possible to pass laws that benefit only marginally more than half the population, while being unfair and burdensome to the other half, and generally harming the country in the long term.


Principles of Programming: The Wisdom of Being Neutral

An inexperienced programmer frequently tries to make every single thing as complex as his understanding allows him to make it. But he must not. If one makes things as complex as that, they will be unmaintainable, unenhanceable and too complex to use.
  • How complex is a screw?

    What does a single screw do? Does it hold books?

    No, but it can be used in a bookshelf that does.

  • How complex is a rivet?

    What does a single rivet do? Does it transport oil across oceans?

    No, but it can be used in an oil tanker that does.

  • How complex is a single lego block?

    Whatever does a single lego block do?
A single screw or a rivet or a lego do nothing special on their own. That's why they are so versatile: because they're neutral.

Everything one writes in code, every single function or component or class, needs to be neutral like that, too. Reusability of your code does not come from what it does. It comes from what it doesn't do. It comes from what it consciously avoids doing so as not to interfere or restrict the range of unexpected ways in which it can be used.


In response to Vorlath - Steal The Free (2)

In response to Vorlath's response to my response to his post:

"The majority of people on this planet live in poverty."

If you mean people in undeveloped countries, that's their problem. It is not the responsibility of the western states to develop other countries. Many of these countries cannot even be developed because the average IQ in these countries is below 70 (Race Differences in Intelligence, by Richard Lynn). Civilization is a state of mind in the population. This is inachievable by chimps, and likewise it is inachievable by some humans. We are not equally capable.

"Over 12.6% of the US lives in poverty. They make less than 10K/year."

That's faulty statistics.
  • Lots of these people are just people exploiting the system. Developed countries run a system where it costs to be earning money (in a way that can be measured anyway), but it pays to be poor.

    Hence, people pretend poor. I read that the same group of people in the United States whose measured annual income is below $10k per person have an estimated annual expenditure of $20k per person. There must be some significant additional income here they aren't reporting.

  • $10k per year is $833 per month. That's not poor. People get by well on that kind of money. More so if their actual income is more like $20,000 due to moonlighting and other non-officially measured income.
I know various folks who are officially "poor" in my country, too. It makes sense. It's better to be "poor"; you save a lot of taxes.

"47 million have no health care."

That speaks of a broken health care system in the United States. The cost of operations is exorbitant for various reasons, mostly lack of competition and inefficiency. You can generally get the same medical operations conducted with an equivalent amount of skill in India, Thailand or Singapore. And they will welcome you as a medical tourist. People with no health insurance are going to New Delhi to have a $8,000 heart bypass that would have costed $80,000 in the States. See, the markets are taking care of things, as long as politicians don't obstruct it. Politicians are huge friends of inefficiency, that's their major mechanism of drawing funds and staying in power.

"For most people, the legal system is not an option as it's too expensive."

That disabled single mother I mentioned earlier, she sued someone for $10k and bought herself a big screen plasma TV. In a country reknowned for frivolous lawsuits, I'm not sure that there's a problem with the legal system being inaccessible. Too accessible, I reckon, and possibly for the wrong kinds of things.

"Interest is a horrible instution that is on the same level as slavery. It was outlawed in the UK and most of the world for over 1000 years because of its negative effects."

Interest is crucial to the economy. If interest is outlawed, no one will lend you money except out of the goodness of their hearts - and the stupidity of trusting you blindly. Interest makes it possible to lend money to people even if, realistically, not all of them can be expected to return it. Ever heard of microfinance? A crucial problem of people in the developed world is that they cannot get startup capital for their small businesses because they can't earn it and no one will lend it to them because they're too small and risky. Microfinance means having small community banks that will lend small amounts of money to these people, charging a reasonable amount of interest. It helps people start their businesses and improve lives for themselves and others. Without interest this would not be possible.

I'm guessing that, if you seriously consider it, you would probably prefer that these people can get capital in exchange for paying interest, rather than get no capital and stay poor.

"Now we have tons of credit cards and I heard the other day about a report that says that most people in Canada live at 120% of their income because of credit."

That's every individual's choice. I despise living on credit for no reason. So I don't. You can choose that for yourself as well, and so can all these other people. Their self-discipline is their own problem, and it doesn't impact you in any way.

"Insurance is something started by the Mafia."

Insurance is something started way back when at the origins of trade. Arabs had a system of international insurance for their ships a millennium ago. Insurance is crucial to the survival of a business when the risks it faces may exceed its capital. In this case, it makes a huge amount of sense to pool resources of multiple businesses to spread out the risk. It's stupid to buy insurance if the risk is trivial, though. It is pointless to buy insurance on things which, if you lose them, you can buy again before you'll miss them.

"Maybe the money system or the economy worked at one point, but when you have a system that allows people who have tons of money to be able to get even more money just because of that fact, then you have a very real problem."

You don't understand what I wrote above. I'll repeat: "Profit belongs to the person who invested, because obviously the person can organize things well, therefore more power should go to that person to organize larger things still more efficiently. If the person is unable to do that, they lose the money, they lose the power, and all is well."

You don't just automatically get more money if you have money. You get more money if you can turn that money around sensibly. Your average Joe can't do that. Your Warren Buffett can, and that's why Warren Buffett accumulated billions.

Still, what good are these billions to Warren Buffett?

Money is only spent on billionaires to the extent that they use it for themselves. As long as someone uses money for himself, that part of his money is gone. It's moved to some other person to invest. As long as someone turns money around to make more money, he's not spending it. He's improving the economy by turning the money around sensibly.

Now look at the money that Bill Gates has earned. He's the richest person on the planet, and yet he can afford to spend only a few billion per year lest he depletes it. Now look at George W.acko Bush and his pals congressmen and senators up there. They get to spend $2,500 billion every year without having to actually earn any cent of it. They just take it out of everyone's collective pockets.

What, then, is the bigger problem here?

All the good and bad intentions of businessmen are dwarfed by the power, stupidity, corruption and cluelessness in Congress.

That's why I think that representative democracy is the problem. The money system works just fine as it is.


In response to Vorlath - Steal The Free

In response to Vorlath's recent post, Steal The Free:

I don't see how there is a money issue in the world that needs fixing. The patent system is broken, yes. We don't have a reasonable solution to the copyright problem, yes. But money works. What makes people poor isn't the money. The money makes nations richer, and it does uplift the poor as it does the rich. This might seem tedious and a cliche, but I have observed it in practice when, several years ago, working as a successful programmer in Slovenia, I earned less per month than a disabled single mother in California and her kid got in social security benefits. They were calling themselves poor while the kid had a digital camera and a laptop. That isn't poor to me. If that's what poor is, then there aren't any poor people in the States. Most people in Slovenia are still satisfied to get that amount of net income, and the prices are no lower here.

There is a tax system problem that needs solving, yes. Look at www.fairtax.org. There is an education system problem that needs solving. The old are incredibly prone to neglect the crucial education needs and how they increase with each new generation. Not treating education as the MOST CENTRAL investment, the health of which is crucial for the long-term well-being of the state, is criminally negligent; it's worthy of contempt. But the money system works. It is neutral. It gives more money to those who have shown themselves capable of making a profit in the past. Making a profit should generally mean organizing things so efficiently, or providing such a valuable service, that not only costs can be covered, but even money can be made. The profit then belongs to the person who invested, because obviously the person can organize things well, therefore more power should go to that person to organize larger things still more efficiently. If the person is unable to do that, they lose the money, they lose the power, and all is well.

Crucial to the health of the economy is that a sentence in the above passage is true: that making a profit indeed means organizing things efficiently and providing a valuable service. This isn't true when a person makes chums with politicians who pass laws in favor of that person's business. Honorable profit is when you adapt your business to the landscape, creating something valuable and new in the process. Dishonorable profit is when you adapt the landscape to your business, destroying and overriding other valuable things. And in this second endeavor, politicans are most often and most certainly involved.

It's the democracy that needs changing, not the economy. I suggest looking at SD-2 - Structured Deep Democracy.


Zakaj so poroke prenehale biti smiselne

[Prvotno objavljeno na forumu slovenskega Cosmopolitana]

Poroka v tradicionalnem smislu (mišljena kot obljuba dosmrtne zvestobe) je zastarel koncept. Ne zastarel v smislu, da zaradi starosti same po sebi ni več dober, temveč v smislu, da je zarjavel in škripa in propada in je na tem, da bo pravkar razpadel.

Monogamna poroka je bila funkcionalen režim v času, ko je bila pričakovana življenjska doba posameznika 40 let, posameznice pa 35, ker je verjetno umrla med kakšnim porodom. Doživljenjska poroka je smiselna v okolju, kjer ni kondomov in zdravil in je življenje kratko. V takem primeru je smiselna za žensko, ker ji moški s poroko obljubi oskrbo do konca življenja, kar pripomore k uspešni razširitvi njenih genov. Zato se tradicionalno lahko ženska loči od moža, če je ne more preskrbeti ali je neploden. V istih okoliščinah je poroka smiselna za moškega, ker mu obljubi zvestobo partnerke: čas in energija, ki ju bo vlagal, bosta pripomogla k razplodu njegovih genov, ne genov drugih na njegov račun. Zato se tradicionalno lahko mož loči od žene, če ga vara ali je neplodna. In v takem okolju je poroka smiselna za družbo: če ni kondomov, je vsesplošna monogamija najboljša ovira proti širjenju spolnih bolezni.

Danes tega okolja ni več in monogamna poroka je preostanek tradicije sveta, ki več ne obstaja. O pričakovani življenjski dobi posameznika lahko le ugibamo; dosežki na področju medicine nam lahko prinesejo mladost pri 80ih in življenje tja do 200-ega. Poroka pri 15ih s pričakovano življenjsko dobo 40 let je ena stvar, ampak ali si upate poročiti za vekomaj, če boste živeli 200 in bili privlačni vse do zadnjega? Saj v tem ni smisla. Zavarovanje investicije v razmnoževanje je danes tudi manjši problem, saj obstaja kontracepcija in test očetovstva. Bolezni tudi niso tako problematične, kot so bile, saj obstajajo kondomi, testi in zdravila, ki nudijo obrambo na treh linijah, kjer pred 200 leti ni bilo nobene.

Kdor je razpet med nasprotjema tradicionalne doktrine in med stanjem realnega sveta, je razpet z razlogom. Doktrina ne ustreza več realnosti.

Mnogi se tega lotevajo tako, da poskušajo realnost prikrojiti doktrini. To je pristop, ki bi ga imeli v Butalah; ne funkcionira in ne vodi k harmoniji.

Ključno je spoznati, da doktrina nikoli ni bila namenjena temu, da bi služila sama sebi. Namenjena je bila temu, da služi nam. Če po tehtnem logičnem razmisleku ugotovimo, da nam dolgoročno več ne služi, jo je torej treba spremeniti. Tehten logičen razmislek pa je žal prav tisto, čemur se današnje moralne "avtoritete" trudijo na vse kriplje izogniti.

The US goes Iranian on gambling

In Iran, the government thinks it right to uphold "morality" by dictating a dress code women are required to adhere to.

In the United States, the government thinks it right to uphold "morality" by disallowing its citizens from gambling over the internet.

The United States have just arrested a non-US citizen while he was transferring between international flights on US soil for the crime of running an internet gambling business outside the United States that, while being 100% legal where it's based, took online bets from US citizens.

Many things are illegal in China that are not illegal elsewhere. Is China entitled to enforce its laws worldwide? Is it entitled to jail foreign citizens for providing Chinese citizens with online access to things that are prohibited in China?

Suppose that China took upon itself to enforce its laws internationally and jailed Google executives while on visit in Beijing. Suppose China sentenced Larry Page to 30 years in jail for the crime of providing online search results that include anti-communist links to Chinese citizens.

What would the American reaction be? Would the United States send a stern warning to the Chinese government? Sure it would. Would it punish the Chinese one way or another if it didn't free Mr. Page? Of course it would.

Except that when the tables are turned, the USA thinks it is entitled to doing exactly the same thing it would never let the Chinese do. Arrest a foreign citizen for the crime of providing a service to American citizens that is legal where it is provided, but illegal in the United States.

How hypocritical!


Jesus Christ Superstar

If you ask me - and I'm no expert on Slovenian culture, which would be because I have a prejudice that there isn't much of it worth talking about to begin with - but if you ask me, the single greatest Slovenian contribution to worldwide culture is Laibach's edition of Jesus Christ Superstar.

This song - no, this... work of auditory art - is just so powerful, so awe-inspiring, so strong and so well-executed, I just can't get enough of it. And, don't get me wrong - this is no piece to listen at room volume, or without a solid bass. It's a piece to play at full volume, as loud as you can risk when you're at home alone and most neighbors are away.

Laibach has a bunch of other stuff which I find interesting and OK, but Jesus Christ Superstar I think is very much their best. Then again, that is only my own taste and opinion.

Circumcision as an adult, part 3

In my previous posts about being circumcised (part 1 and part 2) I described my actual circumcision and the first days of healing.

Six weeks later, now that I have had some new sexual experience, I think I can say quite safely that the sensations are way better. Previously, my sensations on penetration were limited to the glans penis and immediately below it when inserting the penis, and very little sensation at all when retracting it. This is because the foreskin would attach itself to the walls of the vagina, where it would mostly stand still - the so called gliding action. Regardless of what it says in the linked Wikipedia article, this gliding action sucked. I have a pretty average width penis, perhaps even a bit below average. Therefore, if the woman had a normal-sized pussy, because of the gliding action, I would feel very little sensation when penetrating, and almost no sensation when using a condom. Because of the lack of sensation, it could be difficult to maintain a hard erection - that is, unless the woman had a very tight pussy; or had very strong vaginal muscles she would exercise; or I was very aroused to begin with.

Now, without the foreskin, the sensations are so much better. My first surprise when inserting the penis was that, with a condom, I didn't feel as much on the head of the penis as I used to. The glans had become desensitized because of constant exposure, so now there is less sensation on the glans, even less with a condom. However, because there is no gliding action, I now feel so much more along the whole shaft of the penis that the sex is just awesome. It used to be that, because of the lack of sensation, I could have not-very-interesting sex for a long time without coming until I became limp from exhaustion. This is no more: now, I can actually feel the vagina along the whole shaft, and this is such a turn on that high arousal and a climax are unavoidable. I can now feel a normal pussy very well, and a tight pussy (which earlier I needed to feel anything much at all!) is now a mind-boggling mix of sensation that leads to a vulcanic climax.

Amazingly, even though the sex is shorter because I'm so much more aroused, my girlfriend says she can feel me so much better and also enjoys sex much more than before!

The change in sensation is undeniable. However, I imagine that some of the extra arousal is also temporary because I've had sex infrequently since the operation, so as not to hinder the healing; and that part of it is because I do not climax alone any more. My earlier techniques now don't work any longer; they are arousing, but they do not take me to an orgasm. And I don't even want to learn masturbation again: I find that my attitude towards sex is more pure, my desire is greater, and my experience is better if I am unable to take care of the tension myself.

In summary:
  • If you want a circumcision for any reason; especially if you feel that gliding action due to the foreskin is depriving you of pleasure; then do it. I can testify that, without the foreskin causing the gliding action, the experience is so much better. Previously, when I penetrated into a vagina, my thought every time was: "Why does this feel so bland? Shouldn't this feel much more intensive?" Now, my thought is: "God this feels good!"

    So - pick the one you prefer. :)
  • With regard to the aesthetics of the operation, you might be much better off going to an aesthetic surgeon than going to a urologist. If I did this again, I wouldn't go to a urologist because, now, my circumcision is seriously lopsided: there's more skin on the right than on the left side. It doesn't bother me functionality, but it's just not as pretty as it could be. I think an aesthetic surgeon would likely have done this better, and I still hold a grudge towards the urologist who operated on me (dr. prim. Marko Stanonik) for failing to do it nicely and symmetrically.

    Still, I am more satisfied with my circumcision than I was without it!


Elastic tabs

A really neat source code editing idea:
"Rather than saying that a tab character (a "hard tab") will move the cursor until the cursor's position is a multiple of N characters, we should say that a tab character is a delimiter between table cells..."


We need to invest way more in space

Finally, a recognized figure speaks out about something I wrote about on my previous blog, years ago: the dire need for colonies in space to improve the chances of human survival.

The CNN article contains a comment about how science won't be up to the challenge in 50 years. But that misses the point. The science won't be up to it because countries spend ridiculously little on space research compared to how much they spend for social transfers, armies, and pork.

Here's a snippet from the estimated US federal spending for 2005:
  • Total federal budget: $2,479 billion
  • Military spending: $466 billion
  • Income security transfers: $313 billion
  • Social security transfers: $456 billion
  • Farmers' subsidies (a complete waste of money): $31 billion
  • General science and basic research: $7 billion
  • NASA: $15 billion
Have you ever wondered why so much technology (like the Internet? GPS? airplanes?) is developed for the military first, and then seeps out to find use in the public?

Just take a look at the spending above.

Humanity is spending just about zero on research that would help us establish a colony on the Moon, let alone other planets. That NASA budget of $15 billion? $3 billion of that is pork - wasted on pet projects of various congressmen.

It took September 11 for people to start taking radical Islam seriously. I guess it's going to take a catastrophe that wipes out half the human population before people get to the wise thought that, hmm, perhaps indeed we should start working on a backup plan in space.