Wisdom in Algorithms, Part I – Be Careful What You Wish For

I’m not sure whether or not to be surprised when computer programming and philosophy collide. The two disciplines seem so incompatible, yet are both based on an ability to look at the world and discern truisms in the way things behave. It is always fascinating to me when I discover some fundamental truism in life that is reflected in, or uncovered by, a piece of software. This will hopefully be the first in a series of articles on the subject.

The most philosophically influential software I’ve encountered was a Plague applet I wrote about 8 years ago while working on a more realistic variation of the Game of Life. Among other things, the applet reveals the cyclic nature of a natural system that is balanced by opposing forces. Which, I suppose, is where the saying, “The only constant is change” comes from.

However, the most important thing it revealed to me was how balanced systems react when attempts are made to suppress one or more of the forces at work. Such suppression will work for a little while but the system eventually adapts and returns to more or less the same state as before. The only problem being that maintaining the that state now requires you to keep the suppression measure in place; as soon as you remove it, the opposing force – now stronger and more evolved – will run rampant.

The real-world example – the one on which the applet is based – is our modern dependency on antibiotics. They worked great when initially developed. But as their use has become pervasive, we are starting to see reduced efficacy and the emergence of “super germs”.

It’s not just medicine where we see such behavior. Virtually every aspect of our modern world behaves this way to some degree: the Cuban Trade embargo, the fight for water in the American Southwest, carpool lanes, rent controlled apartments and most especially the War on Terror. All are dynamic systems that react in unpredictable ways to attempts to influence them.

Thus, as a society we need to be much more critical of the policies and infrastructure we develop because short term fixes that are simply responses to a surge in public opinion or an anomalous event, create political, social, and technological dependencies that last for generations.

Broofa’s Toolbar

Speaking of little projects (see prev. post), I humbly present Broofa’s Toolbar, a nifty little utility that gathers various scripts I’ve found useful in years past into one tidy little bookmark. If you’re running IE or a Mozilla-like browser, you can open it right this very instant.

This is still a work in progress, but it’s certainly useable. And DHTML geeks out there may get a kick out of how it’s implemented. I’ll just be giving myself a little pat on the back for packing that much information into one tiny little link. Enjoy.

Flashy Bugs

I suspect we all occasionally get an urge to pursue some little project that people might find fun or interesting and make it available to the masses. Heck, this is what a lot of the WWW is about. But I don’t often actually follow up on these urges, so it’s fun to discover people who do.

For example, here’s a nifty little find. Adrian Laford put together some Flash code to do bug animations. He’s got a bunch of variations he’s experimented with, and you can even build you’re own and put them on your website, like so:

Trac Application

I just stumbled across a new code repository/bug tracking system called Trac. It’s still in it’s infancy, but it’s nice to see someone synthesizing the code managment and bug tracking experiences. And they have a built-in Wiki engine to boot, which means your comments and bug reports can have rich text… something that’s been missing from these tools for a *very* long time.

To get a feel for what a Trac project looks like, check out the Subway project. The bugs are just downright pretty!