Optimization is green, green is about optimization


In "Collapse", Jared Diamond remarks that relying on technological fixes to environmental problems presupposes that new technologies will, as of today, stop creating problems of their own and instead only solve existing problems.

Ok, so this is meant to show the futility of technological fixes, but what if we take it seriously and ask: What kind of technological advances would solve more problems than they create?

Similarly, it seems the more complex our technology is -- mobile phones, computers, etc -- the more it sucks. It tends to do one amazing thing ok, and anything else involves pain. Also it crashes a lot. (One slight exception to this is Open Source Software. OSS doesn't suck quite so much -- a popular OSS program generally has all the basic features you'd expect, it has a well rounded feel. Thousands of people have tweaked it so that, at least in the details, it doesn't suck. The overall structure often still sucks though -- and may suck more than proprietary software because it's hard to get the momentum up for a good refactoring.) How can we stop making technology that is sucky to use?

I'm guessing the answer to both these questions will be the same. Something like we stop adding novel features, and instead start filling the interior of "feature space". Generalize existing systems, remove limitations, factor out common elements.

An odd thing about this approach is one no longer looks for "new" problems to solve. The problems one might solve are instead suggested by the existing features, as though the existing systems want to simplify and generalize themselves and you are just allowing them to do so.

Regarding factoring: A factorization shouldn't be an all or nothing "environment". It shouldn't be something you must master before you begin building something. It shouldn't be a Java, a C#, a GNOME, or a KDE. It should be something you can work towards gradually.

This approach also leads to a particular type of optimization. Not the type that says "we will take this specific inner loop and convert it to hand crafted machine code running on a processor specifically designed for this one task". It's the type that says "everywhere we do a certain type of task we will do it just a little bit better, because it is now implemented in a library, once, and we have time to meditate at length on the simple and perfectly efficient form it wishes to become". People will look upon this one true and correct implementation and the scales will fall from their eyes and they will be enlightened, and they will go forth and delete all the (bug ridden) special cases from their code. And no one will ever again write code with those special cases.

This form of optimization is also the answer to environmental tech: we don't go building mega-dams, or the Machine that will Solve All Our Problems, we instead work out how to do everything just a little bit better. Thus any new systems will, naturally, incoroporate these slightly better ways of doing things, and therefore create less new problems of their own.