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.

London gets attacked, again

London Blast AreaThis is really sad. London has been attacked another time. This time the damage is smaller, as are casualties, but it’s still sad to see what’s going on.

Terrorists figure if they keep on attacking, they’ll keep radicalizing us more and more toward war, fulfilling their dreams of a holy war with the West. It’s going to be hard to reason with people in the next few days.

First Post!

It’s finally done! I have finally managed to get my new and improved pixelmonkey.org site online. I am now fully powered by WordPress and Gallery, two amazing projects (written in PHP) which allow for blog/content management and photo gallery management. I even integrated the two together by having them share stylesheets wherever possible.

Now to begin the actual posts, and the fun.

Good post on OSNews about Linux’s maturity

That’s the truth, be it sad or good, windows XP/XP-Pro they do just work “out of the box”. Install the driver given you by the vendor of the machine (or preinstalled), and voilà, a wifi is automatically detected, acpi works perfectly, soundcard has never been “blocked” (I learned this could happen working with Linux…), and, last but not least, printing is quick, easy, and standard of all the applications, not the nightmarish list of “todos” of the typical linux environment.

Mind you, I used Linux for 8 years, but I give to Cesar what Cesar deserves: for sheer usability of the machines features, for “mindless” operations throughout, there’s no comparison at all…
I can close the lid of my laptop now, go to sleep, and reopen it and everything working in a second; I had to twitch even the kernel sources to get that from Linux, and never reliably…

I think it’s time to stop being geek-minded and be honest: Linux needs a lot to become a viable desktop platform for the masses; the sooner developers realize this, the better.

Otherwise, desktop linux will be only for programmers, curious (and affected by a light form of sadism) people, and people who use its incredible tools and power for something very specific, like simulations, where a Desktop environment is probably useless anyway.
Eugenia is right: why do I have to find a solution to watch Star Wars trailer when it*s obviously supposed to just click&work? is it the computer who has to relieve me of some work, or vice versa?

Lorenzo

Right on. Linux is great for me to work on because everything already “just works” for me. Once you do your tweaking and reading of newsgroups, you can actually get to work. But the second I had to install Linux on my new laptop, I was back to the old tricks.

Linux has a ways to go, but what’s interesting is that it is not that far away, and all these changes are coming. Once Linux gets to the point that things “just work,” then what do we have? Well, we have a free OS that works as well or better than Windows XP, and also comes with tens of gigabytes of free software, excellent package management, a great developers community and powerful new ideas everyday. In other words, computers in the ideal.

Whereas with Microsoft, the “just works” part is there, but all these other elements are missing, and there are no efforts to get to them. Will Microsoft Windows ever have the enormous free and open source software movement that Linux has surrounding it? No. Will it ever get powerful UNIX integration beyond Services for UNIX? No. Will it ever get a development community that is smart, clever, active and passionate? Not so long as IT reigns.

Linux has that glimmer of what computers could be in it, but it’s just missing on some of the basics. But we’ll get there.

Doom 3 and modern gaming

Was over Max’s house, and while he played online poker, I played Doom 3 on his brother’s insanely overpowered Alienware desktop machine. The game is extremely well-done, from graphics to gameplay, but I really have no patience for First Person Shooter games anymore… they get boring so unbelievably quickly, and I just don’t have the time anymore.

The only FPS that might, MIGHT draw some time out of me is Max Payne 2, which I’ve had sitting at home, unopened (except when I tested Cedega by installing it under Linux–it worked), for quite awhile.

Look at me, the old fart at 20, yearning for the days of good adventure games like Full Throttle, Day of the Tentacle, King’s Quest and Curse of Monkey Island… *sigh*