I am Jack’s raging anger

I find myself studying in the Kimmel Center for my Linear Algebra final, which is this Thursday. There I am, minding my own business on the second-floor study lounge.

But then, a group of three girls shows up in the seating area right near me, and starts chatting about whatever inane topic comes to mind. They are then followed by a German foreign student whom they know, who asks them if they know words like blitzkrieg and rammstein. They respond with blank stares and Southern accents conceding they never heard the terms. The German boy responds, “Surely you must know blitzkrieg, I heard you use the term when you study German military history.” Indeed, they probably know the words, but have never heard them pronounced properly by a German, and thus cannot make the connection.

Well enough, however, slowly more and more girls file in. A few guys show up as well. They ask to have the extra chairs around the desk at which I’m working, and make a lot of noise chatting and chatting. After a few minutes, there are probably twenty people, 15 girls and five guys. And they begin their club meeting. What’s the club? Bible study.

Is there a floor dedicated to clubs at Kimmel? Yes, floor seven. Is the second floor meant for study? Yes. Could I possibly focus on Linear Algebra with talk of Leviticus and Genesis in the air? Certainly not. What the hell is wrong with these people?

Xorg goes modular, is now approachable

It seems that Xorg, as of the 7.0 release, has been split into monolithic and modular development trees. The modular model allows you to compile individual components related to Xorg separately from the whole X server, so that you don’t need to do a two-hour compilation just to work on this or that driver or this or that library.

This is good news for me. My biggest craving lately was to put my C skills to use by diving into a big project that has effects on the Linux desktop, and Xorg is certainly the biggest in that sense. However, in the past I was always put off by the huge amount of groking one needs to do just to understand the Xorg compilation process. After class is over, I’m gonna start diving in.

The Potentiality Argument

In my first philosophy class, I remember putting forth an argument for why abortion cannot be defended on the “potentiality principle,” that is, that the human fetus has the potential to be a human being, and thus must be saved.

Someone on /. recently replied to an article about stem cell research, with some nice observations about the abusers of this principle:

Now, someone might argue that a process is started at conception which would end up with a functioning human. The potential is critical. There are a few problems with that position:

  • When a fertile woman smiles back at me, there is a potential for a new human.
  • The use of condoms stops the potential for a new human being.
  • Soon, all our cells will be potential humans with a little “twist”…
  • Half of all conceptions ends soon with a spontaneous abortion. That means, according to the bible belt, that half of all people dies at an age of a few days. To be consistent, the believers should argue that half of all medical research should try to stop this mass death!

The retort often flung back is that a fetus doesn’t merely have potential to be a human being, but it is a human being. This, however, is interesting when taking this poster’s last point about “spontaneous abortions.” If you’re willing to save a fetus from a willing abortion, shouldn’t you also see spontaneous abortions (and miscarriages, for example) as equally tragic, and thus deserving of serious medical research?

Ah, the arguments against early-term abortions really amaze me. How can you be so philosophically inconsistent?

Amdahl’s Law

Gene Amdahl once applied the law of diminishing returns to computation. He pointed out that when optimizing part of a computer program or computer system, one must take into account what percent of the overall task at hand that optimization affects.

I recently read some articles comparing the speed of Python to Java, most of which concluded that about the only place that Java beats Python is in actual interpreter speed (i.e. how fast statements and parsed and executed), and that since Python opts to provide thin wrappers for standard C libraries, Python performance ends up being really good.

A good comparison of the language features between Java and Python can be found online, along with a nice comparison of code simplicity and efficiency.

I think I agree with the first author: Python is a better high-level language, and should thus be used for higher-level tasks, and especially for one-offs. What’s interesting is that a lot of people look at Python, say “Man, Python is slow, I could do this better in C,” but then forget about Amdahl’s Law. If your program is accessing the network, the disk, or any other non-CPU/non-memory resource, no amount of optimization through lower-level languages will save you an order of magnitude on performance. So why waste the programmer time, when it can be done in a few lines of Python?

(I think one forgotten benefit of Python in both these articles is SWIG: if you’re truly a performance-oriented engineer, you can always profile your code, find the bottleneck algortihm/code fragment, rewrite it in C, and wrap it with SWIG so that you can access it as an object in Python. Not hard to do, and potentially huge performance gains. OTOH, you can even write Python-accessible code directly in C, using the same abstractions the Python interpreter uses.)

“We will not negotiate with terrorists”

Writes the Economist about the London bombings:

Mr. Blair’s blank refusal to acknowledge a possible link to Iraq is wrong. But so what if there was one? Those who would go on to conclude that the right course of action in the light of the bombings is for western countries to flee Iraq are in danger of making a very much bigger mistake. [There is] the need to defend the principle that the foreign policy of democracies should be made by representative governments, not by disaffected young men bent on murder.

This is quite stunning. The last line in particular.

Immediately after 9/11, I thought to myself: the worst possible thing we can do is go try to fight these guys guns blazing. It isn’t “war” until both sides agree it is, and up until Bush made the announcement to go into Afghanistan (and then Iraq, later on), we still had the chance to maintain the principle the Economist describes above. These were terrorists, and we were a Western power. We had seen terrorism before: true, not on this scale, but we had seen it. But rather than scream louder than they, we could have responded with silence and strength. That’s the way a proper president would have responded. We elect public officials to be wiser than we are: we can respond with the knee-jerk “I want revenge,” but policymakers need exercise more restraint.

But it is because neither the Economist nor most of the Western world understands modern terrorism that the Economist doesn’t realize the irony in saying that we have an obligation to preserve this principle now. And that can be seen by the second part of that last sentence, where terrorists who attacked London are described as “disaffected young men bent on murder.”

If one believes that all terrorists are simply people “bent on murder,” or people who “hate the American way of life,” as Bush sometimes puts it, then one misses the whole point.

More important perhaps is that these terrorists, before 9/11, constituted a radical minority, that believed the only way to solve the problems of the invasion of materialism and godlessness from the East was to engage in a holy war. This, this minority thought, was the only way this could come to an end: a battle of epic proportions.

There was a major problem for this epic battle though: no one else was willing to fight it. The radical Islamists constituted a minority: the great majority of Muslims did not believe in violence, and did not consider Westerners “at large” to be “guilty” and “murderable” under Allah. They wanted health and prosperity for their countries, economic advancement, and of course the respect for basic Muslim traditions and morality. But they were by no means energized and galvanized to fight a holy war.

But this radical minority also realized something: what if they committed an act that was so spectacular, symbolic, and violent, that the other side would see it as a great attack and respond in kind? The damage done in the vengeful response might just be enough to convince the moderate Muslims that the “holy war has begun,” and that it’s senseless to debate it any further. Pick sides, they probably said: you’re either with us, or you’re with them.

And so also the President said: you’re with us, or you’re with them.

After September 11, America had a choice. We could have focused to study the problem of terrorism, and root out the conditions that cause it in the world. We could have tried to eliminate the political power and clout of Islamist movements. We could have worked with governments to make sure law enforcement in every country is up to snuff so that intelligence is good and solid for prevention.

Instead? We went on a bounty hunt. We went in, guns blazing. And then we pretended that Iraq, a longtime pet peeve of ours, was involved in terrorism. So we went guns-blazing in there too. We rolled in our tanks, we treated Iraqi civilians like prisoners of war, and we declared martial law. And in our wake, we left a shitload of angry Easterners, who we’re still fighting today. Not only that, we loaded the country up with corporate contracts, almost inviting Easterners to see us an evil imperialist power.

And now that the moderate Muslims have seen what evil people we are, they are ready to fight us. We declared war on them, and they’re not going to step down now.

So, what the heck is the Economist talking about? The age of “We will not negotiate with terrorists” is over. We played right into their hands, and anyone who doesn’t think so just isn’t seeing straight. They wanted this war, they wanted this global hysteria, they wanted this exaggeration of threat. Now they are a force to be reckoned with, even if only symbolically. The symbol is strong enough: the people, in large numbers, are coming, and will continue to come, so long as we keep giving them a reason to.

Joel Spolsky on programmer creativity

Joel has a new article entitled “Hitting the High Notes”, which probably deserves a link.

I happen to fully agree with Joel, that good programming is about finding that “clever solution,” not just a solution that “barely works.” These little epiphanies may not just be the best product of good programming, but also the reward–another striking similarity to conventional artists. I started to realize this similarity myself a few years ago, when I scribbled in one of my notebooks that programming actually seems a lot like sculpting, in that the task is both highly creative and highly technical, where the goals are simultaneously to solve a complex problem and produce something “beautiful” (or, in programmerspeak, one might say “elegant”).

This ideas of mine didn’t find themselves blooming until I came across Frederick Brooks (who, in fairness, Joel mentions), in whose wonderful collection of essays is a very useful distinction between two components to programming. The more important one, says Brooks, is the essential component, which should be contrasted to the accidental. The essential problem to programming is that it is fundamentally a creative act, and as such it requires long periods of uninterrupted thought and even a spark of inspiration to result in amazing products. The accidental component to programming is everything else that incurs cost in time: dealing with the programming languages, the text editors, the compilers, software revision systems, documentation, and all the other software development tools. Brooks’s theory (which, in my opinion, held) is that there was “no silver bullet” for programmer productivity; that even if major leaps are made to reduce the effect of the accidental problem, the essential problem would remain, and without an improvement in the essential, there would be no order of magnitude improvement in productivity.

In other words (and metaphors), even though word processing is a lot easier than typing–which was itself a lot easier than writing by hand–it doesn’t seem that any of these advancements in “text editing” made the creation of great novels much easier, since it is the content of a novel that matters–presumably–and that comes only from within the author.

But Joel is mostly right: to fight the challenges inherent to the essential problem, one must have:

  • A great work environment
  • Talented colleagues
  • Challenging problems
  • Visionary direction
  • Lots of alone time for each developer
  • Lots of brainstorm time among developers

There are probably a couple of others that deserve to be on there, but that’s a pretty good list in itself.

Mark Shuttleworth on Ubuntu and Debian

I just watched a short talk on Ubuntu Linux given by Mark Shuttleworth. Ubuntu is the distro of Linux I have run for the last year or two. Quite an amazing talk, really. You can watch the whole thing here. He is quite a fascinating figure, but more fascinating is how clear his explanation of the Debian-Ubuntu relationship is.

If Ubuntu reaches the level that Mark hopes it will, it will truly be an amazing distribution. And I had never known about the other things Ubuntu works on, like Bazaar-NG, which allows distributed revision control (probably one of the coolest concepts in Open Source I’ve heard of in awhile). Rosetta is another one of those projects, which is a very cool web-based system for allowing translation of free software projects.

It’s an interesting time to be tracking desktop OSS indeed.

Xenophobia and Politics: Is Protectionism Racism?

I recently found myself digging through a trash can. Why? Well, in it was a discarded Forbes Magazine, with an article visible with the same title as this post. It was written by Steven Landsburg, a professor of Economics at University of Rochester, who is, to put it lightly, criminally insane.

The ideas put forth in this article are quite strange, in the worst kind of way. You can read the entire thing at Forbes.com. His basic premise? That encouraging companies to hire American workers over foreign ones is racism. He points out that our government ranks…

…are infested with protectionist fellow travelers who would discriminate on the basis of national origin no less virulently than David Duke or any other overt racist would discriminate on the basis of skin color. But if racism is morally repugnant-and it is-then so is xenophobia, and for exactly the same reasons.

Apparently Landsburg is received his PhD from University of Chicago in 1979. So, the first question I asked myself was, “Is Landsburg a member of the Chicago School of Economics?” and some quick Googling reviewing his books made it clear that he is. Well, this already answered many of my questions.

For those out of the know, the Chicago school embodies what is known as Neoclassical Economic Theory, in which the idea of a laissez-faire economy is placed in the highest regard. The Chicago school’s theories were based on ultra-mathematical economic modelling and a general rejection of Keynesian economic ideas which took hold in public policies around the world and are still seen as the major reason we haven’t seen another major global recession since the Great Depression. However, economists like Landsburg reject these ideas, opting instead for a neoliberal, neoclassical economic order in which globalization reigns supreme and government power to protect its citizens is quite reduced.

For some examples of Landsburg’s other works, feel free to read his economic explanations of why the minimum wage isn’t necessary and why convicted computer crackers should be executed instead of murderers.

That latter article in particular will let you know what I meant by calling Landsburg “criminally insane.”

Interestingly enough, Landsburg’s viewpoint on protectionism is so patently false, that I even found myself agreeing with Pat Buchanan, of all people, who wrote a stunningly potent and elegant paragraph pointing out the major fallacy in Landsburg’s interpretation of “racism” and “xenophobia”:

To be more concerned about the well-being of one’s fellow Americans is not “xenophobia,” which means a fear or hatred or foreigners. It is patriotism, which entails a special love for one’s own country and countrymen, not a hatred of any other country or people. Preferring Americans no more means hating other peoples than preferring one’s family means hating all other families. An icy indifference as to whether one’s countrymen are winning—be it in a competition for jobs or Olympic medals—is moral treason and the mark of a dead soul.

Why do I think Landsburg’s view is so deranged? Because it fails to see the world for what it is: a whole bunch of groups of people trying to work together to better their collective lot in life. The reason a South American worker shouldn’t have an equal shot at an American employer’s jobs is that South America needs to have its own sustainable businesses. If we allow corporations to hop around the globe, picking the cheapest labor markets with the best political advantages, then we will never see progress. A factory built in South America is worth nothing if it is torn down 5 years later when that factory owner moves shop to China. What did the South American workers gain? Skills, you say? Nope, not if the jobs involve unskilled labor, as in 99% of these cases. Money? Sure, but I guarantee you the little pay they received doesn’t give them enough money to become a real estate developer, as the President of Nike once hilariously suggested. Chances are most of it was spent on making ends meet. But who did gain? Well, the American corporation gained. Its shareholders gained. On the short term, the American consumer gains (though even he will be a victim of globalization’s corporate capital fluidity in the end).

Landsburg writes, “if it’s okay to enrich ourselves by denying foreigners the right to earn a living, why not enrich ourselves by invading peaceful countries and seizing their assets?” Here you can see the major philosophical reason Landsburg’s piece doesn’t hold up. He says protectionism is “denying foreigners the right to earn a living,” but I don’t believe that’s what protectionism is at all.

It is not as if American corporations go to places like Mexico because they are attracted to the skills of the laborers. They go there because it’s cheaper, and let’s not forget that. They go there because the Mexican government won’t restrict them as much when it comes to things like pollution, workers’ rights, and, perhaps most importantly, minimum wage. These are all economic costs of being a business in the United States. But the reason these limitations on business were instituted was because the government is supposed to protect a person’s basic human rights before considering a corporation’s rights. It’s true that from an economic point of view, it would be very efficient and profitable for me to find 10 unemployed Mexican immigrants and let them to work for me for $0.10 a day in unairconditioned rooms, with quotas of 400 units per worker per day, making some product I can sell for a huge profit. But there’s a minor problem: it’s not legal for me to do so. If you think the fact that it would benefit the consumers of my product (in terms of the low price I can sell it for) is worth more than protecting the human rights of those 10 Mexicans I hired, then maybe you can start talking to me about globalization, since that’s just what corporations do if they move to Mexico and open a factory with poor worker conditions and wages that one can barely even live off. If you fail to see that moral connection, you’re failing to see a lot.

So there are really only two choices if you think globalization is inevitable: bring third world country’s laws onto the same level as ours (in terms of minimum wage, pollution, etc.) in which case there truthfully won’t be much of a compelling interest for corporations to move to those countries anyway, or strip away laws that protect laborers across the globe so that even in the United States, laws like minimum wage no longer exist.

Landsburg clearly believes in this second vision of globalization, the one that one can easily label “the race to the bottom.” In this global order, corporations hop around the globe finding the cheapest labor markets and best consumer markets, in a big cycle where the only group that continually prospers is the rich shareholders.

I believe in the third option: reject the vision of globalization entirely. Focus on the local, and in countries where local conditions are desperate, focus energies on political programs which allow laborers to band together to form their own local markets and local economies. Open schools and libraries, not factories. Stop performing economic terrorism on places like Jamaica, where we destroy local markets by forcing our (often lower-quality, but cheaper) exported goods upon them. Track down corporations that run sweatshop factories across the globe and punish them as if those sweatshop factories were in the USA, forcing them to figure out how to profit using humane labor. Encourage trade, but only on fair terms.

Does that really seem like racism?

On Being and Deliciousness

A really interesting article has been written at DrunkenBlog about Delicious Monster’s founder, Wil Shipley.

One of the rules of writing algorithms that I’ve recently been sort of toying with is that we (as programmers) spend too much time trying to find provably correct solutions, when what we need to do is write really fast heuristics that fail incredibly gracefully.

How right he is. But actually, it’s quite an interesting interview. I love engineers who work under OS X, and sometimes consider switching, but I’m convinced that Linux doesn’t have to be a “legacy” OS like it’s described here.