Tuesday, November 21, 2006

Aristotle and the Soul of the Internet

I remember my fascination while reading Barabasi's Linked: The New Science of Networks and learning that the physical architecture of the Internet (scale-free networks) is similar to that of an organic system. I bring this up because with every passing day the distinctions between the man and the machine, the organic and the mechanic, are getting blurred, to the point that some are asking when will the Internet wake up.


Being a layman, I am not equipped with the scientific tools to seriously answer this question, but on the other hand, being a layman allows me to share with you some unserious thoughts about Aristotle and the Soul of the Internet. I think that Aristotle gives us some definitions that can help us understand why we have this eerie sensation that the Internet is live and kicking.

Aristotle, a GrEEK Philosopher

Aristotle determines what an organic living object is using the following criteria:

a. Growth, nutrition, (reproduction)
b. Autonomous Locomotion (i.e. auto-generated movement in space)
c. Perception
d. Intellect (= thought)

Using these four criteria, Aristotle creates a hierarchy of souls, as follow:

a. Nutritive soul (plants), which complies only with A above, i.e. Nutrition
b. Sensitive soul (all animals), which complies with A, B and C above
c. Rational soul (human beings), which complies with all of the above.

Pretty straight forward, I would say.

Now, what I'd like to show is that these Aristotelian criteria reinforce and probably explain the feelings we're having about the Internet, Asimov's Robot and other cyborgs. I will do so by referring to that system's architecture known as scale-out.

Scale-Out Architecture


Scale-out is an architecture used more and more in those cases where computer systems are required to scale ad-infinitum in order to sustain an unknown yet massive amount of online users. Amazon, eBay, Google etc. are all companies specializing in both the deployment and the optimization of scale-out architecture. Many large enterprises are employing this kind of architecture as well, and a whole new field, known as Utility Computing, has been created in order to formalize and productize the scale-out principles.

The following conceptual components and processes make part of the scale-out architecture:

The Brain (or mind, or manager, or controller)

The Brain constantly senses (or monitors) the system's environment: how many users are currently on-line? What is the overall CPU consumption of the system? What is the status of each of the hardware/software components that make the system? and so on. This function of the brain adheres to Aristotle's criterion C: perception.

The Brain performs real-time compilation of all this sensual data and meditates about the current state of things. In case a faulty situation is either identified or anticipated, the Brain reacts by self-adapting itself to the newly created situation. To better visualize this adaptation process, I will use the following scenario:

A given system consists of 4 servers, an application that runs on them etc. The Brain identifies a dangerous increase in users' load – something that can be solved by adding a fifth server. The brain then launches some dynamic, self-healing/self-nutrition processes that take a bare metal – a hardware-only box – attache it to storage and network devices, install the required operating system and applications and finally make the server fully operational.

We have just witnessed two Aristotelian criteria in motion:

Criterion A: Nutrition, Self-feeding and reproduction

The system just "ate" an external bare metal, digested it and turned it into an integral part of its organs. In many cases, what the system is actually doing is cloning itself into the new server – clearly, a reproduction process.

Criterion B: Autonomous locomotion - movement in space

The system now occupies five servers. It occupies more physical space than it has occupied a minute before. In that sense it demonstrated movement in physical space.
Needless to say, all these operations occur without any human intervention. They are completely autonomous. Hence, we can say that the system has performed all these actions voluntarily, autonomously.

We have successfully :-) demonstrated Criterion A, B, C. I would argue that the Brain and the algorithms inside it could well be seen as thought, i.e. Criterion D. But regardless of this last criterion, I think we can agree that Aristotle could live with the statement that The Internet has a soul.

Q.E.D.

Even Agent Smith Gets The Blues
Copyright ©2005, Eugene Donohoe


2 Comments

By Anonymous murcia, at 4:45 PM  

The internet has clearly realized an appropriate environment for the full blooming of human soul. Internet is the brain itself?

By Blogger Muli Koppel, at 5:08 PM  

Can you really make this distinction, soul vs. reason?
It's a host for anything human(body, soul, reason), and my attention here is to the host - not the human. Maybe our host is conscious, just like we are - at least that's what I had in mind when reading those Aristotelian criteria.

Post a Comment

Monday, November 06, 2006

Fanedited By Marcel Duchamp



"A fan edit is a version of a film modified by a viewer, that removes, reorders, or adds material in order to create a new interpretation of the film. This includes the removal of scenes or dialog, replacement of audio and/or visual elements, and adding material from sources such as deleted scenes or even other films", from Fanedited.org

0 Comments

Post a Comment

Thursday, November 02, 2006

Choosing Your Goggles: Ruby or Perl, Python or Rails

Choosing Your Goggles

Matz (Ruby), Larry Wall (Perl) , Guido van Rossum (Python) , DHH (Rails)

While listening to Yukihiro "Matz" Matsumoto, the creator of Ruby, I realized that the process of selecting a programming language has a brand new and highly important step, more important even than downloading the tutorials and experiencing with some sporadic scripting. This essential step is listening to the language's creator talking about his creation.

And why is that so important?

Because languages are far more than just tools; they are the operating systems of our thoughts, with each language forcing a different view of the world and allowing different thought processes to take place. While "language=reality" is an "old" idea in the natural languages realm it still got only loose associations to artificial and synthetic languages. But as our current era formidably proves (see notes), artificial languages, standards, and even tags, can and should be seen as Goggles that force a certain perception of reality.

Yukihiro "Matz" Matsumoto asserts in his talk that "language influences human thoughts more than you think. The important question is - do programming languages influence human thoughts as well?"

Assuming they do, it should be evident that listening to the programming language's creator, before opting in and using his/her language, is a necessity. Any language creator should be rightly viewed as a sociologist or as a philosopher, aspiring at the creation of a different world to live in. As potential residents of this new world, we must be aware of its credo.

So I listened to four language creators - Matz (Ruby), Larry Wall (Perl), Guido van Rossum (Python) and David Heinemeier Hansson, aka DHH (Rails) - in an attempt to figure out what do these creators actually want; how do they see their world and, more importantly, what role do they envision for their residents, i.e. the programmers: what are their rights and what are their duties; what is the degree of freedom and so forth.

The following is a summary of my personal impressions, whose value to others is questionable. Nevertheless, I think that the process described hereafter is meaningful and highly important.

Ruby

Matz has a lovely personality. It's not that common, so this is a huge plus already. On the theoretical level, Matz is emphasizing what I call Simplexity: doing complex things the simple way.

Simplexity is, imho, an extremely important trait, as it acknowledges the existence of complexity rather than sweeping it under the carpet. Google is a great example of simplexity (and not of simplicity), providing a simple access to the complex information of the world. SOA is another great example for Simplexity, but this you already know.

I enjoyed getting to know the spirit of Ruby through Matz and his "Ruby Design Principles" talk. I feel that the Ruby world is human, realistic, cautious, helpful and... with a sense of humor. I'm in.

Perl

Larry Wall is a challenging intellectual. His talk, titled "Perl A to Z", works simultaneously on three parallel layers: the linguistic layer, where pragmatics (a linguistic theory) plays a major part; the philosophical layer, where post-modernism is used to explain different human, social and Perl-related behaviors; and lastly, the Perl language itself, which is used as a use case layer for the other two tracks. It's a challenging but fascinating talk.

As a true post-modernist, Wall believes not only in the paradoxical co-existence of usually contradicting forces (such as early and late binding), but also in the fragility and ephemeral essence of the entire "Perl world", when confronted with other language worlds, or point of views. From this inherent, post-modern fragility, comes a very interesting approach to future development of the Perl language. New versions of Perl do not seek to solve new technological challenges; rather their aim is to make Perl... survive. "I'm just trying to make Perl survive the next asteroid or plague", says Wall, in what I believe to be an existential position, rather than an opportunistic one.

It was only natural to re-encounter the concept of simplexity in Wall's talk, because Complexity, just like any other unclear, blurred, error prone and imperfect idea, should have its own legitimate space in the world. And if you keep on reading, you'll see that there are others who reject this approach.

As it turned out, I have been using Perl for more than a decade now so it would be just fair to suppose that… I'm in.

Python

I wanted to learn Python since a friend of mine, who's a brilliant programmer, praised its clean, aesthetic, and robust features. He simply adores Python. I also know that Google is using Python quite extensively, and that Joel Spolsky thinks that Python has crossed the chasm. Briefly - high expectations.

But, the higher are the expectations, the greater is the disappointment. In his talk "Building an Open Source Project and Community", Guido van Rossum sounds like a crafted toolsmith that happened to have created an optimized version of other language worlds. OK, so? The only design-related information is heard in the beginning of the 2nd hour (!) and it is related to a Python's fans t-shirt that says on its back "There's only one way to do it", a contra to Perl's "There's more than one way to do it". Geeks' humor, I suppose.

As I couldn't figure out why Python has been created, I decided to leave it aside, until it would become clearer. So in the meantime, I'm out.

Rails

After listening to David Heinemeier Hansson's "Happy Programming and Sustainable Productivity with Ruby on Rails" I decided to never pursue any relations with Rails, because as crazy as this may sounds, I feel that there is a dark and totalitarian ideology behind and around this language (this might even be too much of a credit, as I suspect the whole Rails thing is nothing but a marketing scheme). Here's why:

The common sense and experience show us that every society develops a set of practices to cope with different aspects of life. As life goes on, these practices evolve, get modified, get fortified. This is true to societies as well as to programming language communities. Best practices evolve in every community to solve the problems at stake.

Now often these best practices are wrapped and packaged into ready-made memes, laws, processes, or libraries. This packaging is a common practice as well. There's nothing special here (to echo DHH's motto).

Rails sounds to me like another best practice, aimed at optimizing the development of web applications. There's nothing special here, and yet for one reason or another, Rails wants to be special. And for that reason, I think, an ideology and a system of beliefs have been established, exalting the pre-packaged best practice to the status of a Platonic ideal, or as DHH puts it: Rails is the Angel; it is Right, Beautiful, Clean, and Pure.

When these words are constantly, repeatedly and insistently used, there's clearly no place for the imperfect, for the one with the flaws. DHH explicitly identifies those fallen from grace with the devil, thus explicitly labeling any "other" world as evil, wrong, ugly, dirty and impure. I dare say that this is a linguistic racism.
If you think that these are "cool", harmless wordings, or that I'm seriously lacking a sense of humor, then you lack a sense of history and you are dangerously underestimating the power of words.

And then there's this sentence that sends back the entire talk, on direct rails, to the past: after killing flexibility (i.e. freedom) asserting that it is overrated, DHH says that conventions are constraints and that constraints are liberating.

Probably I'm over-sensitive here, so I'll just say, "no thanks; not my cup of tea".

The Shows:

1. Matz: Ruby Design Principles
2. Larry Wall: Perl A to Z
3. Guido van Rossum: Building an Open Source Project and Community, part 1, Building an Open Source Project and Community, part 2
4. David Heinemeier Hansson: Happy Programming and Sustainable Productivity with Ruby on Rails

Notes:

1. On Tags as Goggles: you can listen to Clay Shirky's talk titled Ontology is Overrated, and read my commentary to have a better overview of the existential power of tags.
2. On standards and Goggles: the standards (conventions...) of the past have been deconstructed and reconstructed as small group and sometimes individual artifacts, that represent a viewpoint on reality. The best case to demonstrate this take is Dave Winer's RSS. A one-man, against the grain, unconventional wisdom, that changed our world.




12 Comments

By Anonymous Anonymous, at 5:28 PM  

What about JavaScript/ECMAScript? I know those of us who recognize it as a viable server-side and desktop language are in the minority, but I think you are really just talking about scripting languages. Sure, there is a lack of some standard services, but not if you make the assumption that a Rhino (or Rhino-like) Java-based interpreter is being used. The world of Java system services is rich and open. I'd like to see the lines between the client-side and server-side, and the desktop-based or web-based, applications get blurred. A Java-based interpreter also allows for nearly instant portability (everything requires testing to know it works). Since JavaScript is the only language currently supported by all major web-browsers, I think it is the only language that can be used in all of those application domains: desktop-only, connected-client, and web-server.

I don't know of a central personality around the formation and promotion of JavaScript. Perhaps it is just a design-by-committee language and that gives it its personality. Alternatively, Douglas Crockford might be worth nominating as promoter #1. Give a listen to his presentation on Adavanced JavaScript and see if you'd be in or out.

--Jadon Kragner

By Anonymous simon, at 10:49 PM  

Before I read your article I was thinking: Ruby no, Perl no, Python yes. And on instinct I was never in for Rails.
After reading your article, I feel exactly the same.
I've done "Learning Perl" twice. I started with the pragmatics' Ruby book before abandoning it. But it wasn't til I went to dive into python that I felt that here was a language I could work with.
It takes two to make a relationship work. It takes communication. It's about the give and take and that is down as much to the developer as to the language creator.
Still, you made me think. Nice one.

By Anonymous RSL, at 12:16 AM  

Rails isn't a language. The language for Rails is Ruby. Interesting article other than that. :)

By Blogger Muli Koppel, at 6:12 AM  

-Jadon:
Thanks for the link to the JavaScript video - I'll look into it.
As for why I picked those languages and not others: that's simply because I didn't listen to all these podcasts now, but rather close to their publication date. And it was only when I listened to Matz (published last week in IT Conversations) that the idea to perform an analysis of the effect by listening to the cause occurred to me.

-Simon:
thanks for your insight. It takes two, I fully agree; but my suggestion is to take the creator to a virtual date (one-way iPodialogue in this case) before diving into the techie stuff. Might save you some time.

-RSL:
RoR positions itself as a world apart, with its own motivation and ideology. From that perspective, it’s a language. And that creates many interesting tensions between the Ruby and the RoR worlds, as they go in opposite directions – at least that’s what comes out from those podcasts.

By Anonymous Dibau, at 6:35 PM  

Very interesting & useful post, thanks! (Programming) languages are indeed goggles & maintain the spirit of their creators.

Personally, as a programmer, I'm not so interested in the current languages, as they don't really offer any real simplexity. IMHO, true simplexity can only emerge from higher-level intelligent & knowledge-based architectures, which are not yet available. Till then it doesn't matter so much what language you use.

By Blogger Muli Koppel, at 7:33 PM  

Dibau

If you accept the goggle assumption, it will help you make up your mind, whenever you're in a need to choose. In your private case, this need will arise when knowledge-base architectures will emerge.

see u around

By Anonymous yodke, at 6:58 PM  

Great post, which I find very teasing when I try to think about the historical nature of programming languages. To me personally, from a scholarly perspective (not a as a programmer), the historical background is even more interesting from the good ad-hominem questions you posed. Actually, though "programming language influences human thoughts", I believe first and for most "human thoughts (and action) influence programming languages". For example, how can we explain the rise of OOP in the 80s when the concepts of OO (and even OO languages) where available long before that? I once thought it had something to do with the emergence of the Mac and Windows GUI, but that leads the obvious question: why were they conceived when they did? Also, can we explain the rise of SOA historically? I mean is it just that we try to modulize everything ad-infinitum or is there some zeitgeist behind it? Well, for now, I am just glad someone is looking at programming languages as more then just tools of the trade.

By Blogger Muli Koppel, at 7:32 PM  

Hello Yodke
(I assume you're the same Yodke from the comments on the Toolsmiths' post - so welcome back - I'm glad you're here)

You have touched many issues – which are all of great importance.

Why certain ideas – or memes – appear simultaneously in different places (there are, I believe, endless examples of this phenomenon)?

And why do they choose to appear at that particular time - not before, nor after?

And finally, who's playing the chicken and who's in the role of the egg?

Great questions.

Thanks for this comment.
muli

By Anonymous Anonymous, at 7:46 AM  

Yodke,
I like your existential approach. Your observation are actually quite typical of ideas/use in history. The tank and submarine was depicted by DaVinic. But were not used until much later. The microwave was produced for commercial use in 1946 but didn't become mainstream (in USA) until late 70s early 80's.

Greek scientists thought about natural selection and the origin of life. Anaximander believed that marine life was the first life on Earth and that changes happened to animals when they moved to dry land. Empedocles had the idea of chance combinations of organs arising and dying out because of their lack of adaptation. Way before Darwin. And I'm sure other peoples (Orient, Africa have made similar observations). Why one takes and not the other? Who knows (because it is varied) and who cares. It what we have is what we grow on.

By Blogger Paul Jardine, at 7:28 AM  

Muli, I completely agree that the selection of the tools comes down to how you perceive the creator. I was first attracted to Perl because I liked Larry Walls philosophy and his reasons for creating the language. I'm also drawn to Ruby, because it has some philosophy behind it (I always think of those Japanese sand gardens).
Perhaps it's the difference between buying a well-engineered car compared to one that has a distinct character.
When people talk to me about languages they are always talking about how 'clean/pure' or how fast, or how portable. But if I want to buy a Mini, for example, I don't really buy it because it's the most efficient, or the fastest, or has the most gadgets. I just like the 'feel'.
As Matz says, we should never under-estimate the influence of language (aesthetics) on thought.
Python may be better engineered, but I feel nothing for it.
DHH is Danish, it's not an excuse, just an explanation. Rails should be like CPAN is to Perl, but it seems to think it has a higher function.

By Blogger Muli Koppel, at 4:46 PM  

Hi Paul
It's great to hear from you again.
A good time to wish you a happy new year.
muli

By Anonymous Hafeez Bana, at 8:52 AM  

Hi Muli,

I am interested in your thoughts on Smalltalk. Here is the man, Alan Kay, himself speaking

http://video.google.com/videoplay?docid=-533537336174204822&q=doing+with+images+makes+symbols

and also here is a talk from OOPSLA by the same...

http://video.google.com/videoplay?docid=-2950949730059754521&q=alan+kay+oopsla

regards,
Hafeez

Post a Comment