On being
Posted by Pall Thayer on July 21, 2008 5:20 pm
Hi Rhizomers,
Lately I've been working on a piece of software art that focuses on the act of being. I've managed to narrow it down to what I feel is a pretty precise algorithm but would like to open source it and see what a community of computer savvy artists might add to (or subtract from) such a piece. Here's the code (with license):
exist.pl
#!/usr/bin/perl -w
use strict;
# exist.pl is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# exist.pl is distributed in the hope that it will be enlightening,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# ENLIGHTENMENT, MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
while(1){
# exist
}
Lately I've been working on a piece of software art that focuses on the act of being. I've managed to narrow it down to what I feel is a pretty precise algorithm but would like to open source it and see what a community of computer savvy artists might add to (or subtract from) such a piece. Here's the code (with license):
exist.pl
#!/usr/bin/perl -w
use strict;
# exist.pl is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# exist.pl is distributed in the hope that it will be enlightening,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# ENLIGHTENMENT, MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
while(1){
# exist
}

gcc -o exist exist.c
exist.c
// exist is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// exist is distributed in the hope that it will be enlightening,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// ENLIGHTENMENT, MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
// See the GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
/* exist */
main()
{
while(1){
//exist
}
}
Mine is more of a philosophical comment, but it seems like you're approach favors a kind of reductivist Cartesian goal. It would be interesting to see the code for Heideggerean Dasein, for what Graham Harman calls "tool-being," for a Deleuzean conception of subjective being as merely the habit of saying "I." In other words, multiple programs for multiple philosophical conceptions of being.
Also, I wonder if being ports without getting modulated. To write a program for being in pseudocode would be to embrace a kind of Platonic, metaphysical conception of being. Then each specific programming language would be more or less particularly suitable for describing one or another conception of being (actionScript for a pragmatic model, lingo for a semiotic model, javaScript for a limited/deterministic model, etc). The fact that you as programmer are always the one writing the program inescapably presumes some sort of transcendence. A purely immanent program for being would perpetually write itself. The fact that you think being can be abstracted and modeled inescapably presumes some sort of metaphysics.
A provocative project.
Curt
exist.pl (C port follows)
#!/usr/bin/perl -w
use strict;
# exist.pl is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# exist.pl is distributed in the hope that it will be enlightening,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# ENLIGHTENMENT, MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
### exist 0.11 ###
my $exist = 1;
while(1){
if($exist){
# be
}else{
last;
}
}
exist.c
#include <stdlib.h>
// exist is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// exist is distributed in the hope that it will be enlightening,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// ENLIGHTENMENT, MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
// See the GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
/* exist 0.11 */
main()
{
int exist = 1;
while(1){
if(exist = 1){
//be
}else{
exit(0);
}
}
}
Also, I think these programs do escape any cartesian goals because that centers around the idea of actually doing something as a necessary element of being. These programs suggest that a computer program is capable of transcending this by being without doing anything. But it's all open for debate.
Pall
As code transcribed in these posts, they are descriptions of models of being. As running binary programs, they are models of being. I don't think they ever get around to performing the act of being, but that's according to my conception of being.
Pall wrote:
"These programs suggest that a computer program is capable of transcending this by being without doing anything."
exist.c
#include <stdlib.h>
// exist is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// exist is distributed in the hope that it will be enlightening,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// ENLIGHTENMENT, MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
// See the GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
/* exist 0.11 */
main()
{
int exist = 1;
while(1){
if(exist){
//be
}else{
exit(0);
}
}
}
doll_tre[ru]mor[s] = <<TREMORS
<tremor name='the_5th_world'>
<fracture>
<fracture name='post2charinscription'>
<polymers>
<polymer var='user' val='YourDollUserName'/>
<polymer var='3rdperson' val='Your3rdPerson'/>
<polymer var='location' val='YourSoddenSelf'/>
<polymer var='spikey' val='YourSpiKeySelf'/>
</polymers>
</fracture>
<fracture name='post2skin'>
<polymers>
<polymer var='user' val='YourPolyannaUserName'/>
<polymer var='msg' val='YourPleading'/>
<polymer var='lastword' val='YourLastword'/>
</polymers>
</fracture>
</fractures>
</tremor>"
TREMOR
case of {
(stone)
//"weltlos"
(animal)
//"weltarm"
(human being)
//"weltbildend"
(computer program)
//"dasselbe wie Stein"
}
In existence it is sometimes the case that variables don't come predeclared, references turn out to be merely symbolic, or no quotation marks warn you about what turns out to be just a bareword string.
Hey, at least that wasn't as corny as this:
continue;
}
else {
break;
}
while(exist){
# be
}
But as I said, I think something can exist without being but not vise versa. The above code would suggest that being naturally follows existing. Putting the being inside the if(exist) clause creates a degree of separation between the two. The program makes a conscious decision to be as long as it exists. A programmer would see these extra lines as a waste of resources that don't add to the functionality of the program.
I would be interested in hearing what your "conception of being" is to see if we can manage to incorporate that in some way into the program.
Pall
I'll try to clarify by rephrasing. I originally said:
"The fact that you as programmer are always the one writing the program inescapably presumes some sort of transcendence."
I could have said:
"The fact that one (not you but anyone) as a creator (not just programmer, but artist, or simply the initiator of the project) are always the one writing the program inescapably presumes some sort of transcendence.
The program can only begin to run once it exists, and it can only exist once someone writes it. So there must always be some transcendent force outside of the existence of the program required for its immanent existence. This is not a proper model of Deleuzean being; to Deleuze everything is pure immanence. Which is fine. I'm just making the observation.
My own conception of being is probably closest to Jean-Luc Marion's, who begins with Heidegger and adds the idea of "givennness" or "donation." Being is given. cf: Marion's "Being Given" and "God Without Being," and Heidegger's "Being and Time." If this kind of being ("saturated phenomena") were ever reducible to a model, it wouldn't be being. It might perhaps be a caricature of being.
Curt
The whole project is a bit tongue in cheek so let's try not to get too carried away with "reality". Deleuze's immanence has to do with life if I recall correctly. I'm not suggesting that a computer program has any semblance of life but am wondering if we can approach some sort of semblance of philosophical "being" within the context of a computer program. That being said, the program is evolving towards an inner relational "awareness" (that would be machine awareness as opposed to human awareness) of itself within its "universe" (the computer).
I think it is important to distinguish between a programmer and an artist in a project like this because I'm pretty sure it would mean very different things to a "programmer" (that is, aside from it being entirely pointless from a programming perspective).
This could tie into Badiou's ontology.
I don't know Haskell well enough to write such a program though.
exist.pl (C port follows)
#!/usr/bin/perl
# exist.pl is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# exist.pl is distributed in the hope that it will be enlightening,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# ENLIGHTENMENT, MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
### exist 0.12 ###
my $exist = $$;
while(1){
if($exist){
# be
}else{
last;
}
}
exist.c
#include <stdlib.h>
// exist is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// exist is distributed in the hope that it will be enlightening,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// ENLIGHTENMENT, MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
// See the GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
/* exist 0.12 */
main()
{
int exist = getpid();
while(1){
if(exist){
//be
}else{
exit(0);
}
}
}
I've been reconsidering a few things as far as the program's "existence" and "being" go. Curt, I believe this ties somewhat in to your mention of Heidegger's "Dasein". The process ID does not indicate existence. It was categorically wrong of me to think so. The existence of the program file indicates existence. The process ID does in fact indicate "being" as it means that the program is "active" or "alive", if you will. So, this new version provides the program with a personal realization of both its existence and its being. I've even added to it the desire to maintain its existence. I've discontinued my own updating of the C port. Someone else can take that over if they wish. It's just getting a little too bothersome for me to maintain two different version in active development. So now what the new Perl version does is to determine its existence and then records that existence by reading its own code into itself. Following this, it enters a loop that is maintained as long as it exists. Through each iteration it checks the process ID to determine its state of being. If it still exists and is still in a state of being, it continues the loop. If for any reason its state of being is interrupted, it simply dies. However, if it's state of existence is interrupted it will attempt to recreate itself by rewriting its own code into a new exist.pl file but it's state of being will be interrupted. To restore its state of being, the script has to be re-run.
And I give you, version 0.13:
exist.pl
#!/usr/bin/perl
use Cwd qw(realpath);
# exist.pl is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# exist.pl is distributed in the hope that it will be enlightening,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# ENLIGHTENMENT, MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
### exist 0.13 ###
my $path = realpath($0);
open(FILE, $path);
my @contents = <FILE>;
close(FILE);
my $exist = $$;
while(-e $path){
if($exist){
$exist = $$;
}else{
last;
}
}
open(FILE, ">$path");
foreach(@contents){
print FILE $_;
}
close(FILE);
Quines are good as well:
http://www.nyx.net/~gthompso/quine.htm
And so are polymorphic computer viruses:
http://en.wikipedia.org/wiki/Polymorphic_code
$_;
}
I'm actually beyond that now. Since I began working on this (yesterday evening) a number of factors have entered into the project. The primary one that I'm dealing with now is "awareness" as a requirement for "being". So in the latest version, the program is endowed with an awareness of both its existence and its being. Put someone offlist just pointed out that Karl Jasper's "existenz" depends on an awareness of one's existence within one's environment. So that's the next step.
push and pop or just push?
shift and unshift or just unshift?
The important thing is that these are all meant to be the program's inward reflections regarding its own existence and being, therefore it should never output any of this data.
Yes, Heideggerean dasein involves the situating of humans within a larger horizon of being (rocks, hammers, cows, milk, etc.) But Heidegger makes a distinction between two different ways a human can relate to this network of relationships. To a human, a given object can be either "vorhanden" (present-at-hand) or "zuhanden" (ready-to-hand). presence-at-hand is a kind of awareness of the isolated object from a classical philosophical analytic perspective, or worse yet, from a reductive scientific perspective. How big is the table? What are its dimensions? How do I feel about it? Am I thinking? Do I exist? To Heidegger, this is a frozen, forced, artificial kind of awareness that doesn't really have anything to do with dasein (human-beingness), although it is has been historically confused with human-beingness. On the other hand (pun intended), readiness-to-hand is a kind "being" where you simply reach for the hammer and it is there and you use it and you don't stop to analyze your relationship with the hammer and with the world, you just "are" in those relationships.
Your version 0.13 seems to be modeling a kind of present-at-hand analytical self-awareness that is not yet Heideggerean dasein.
To Heidegger, being has something to do with the real world and immediate, ordinary living. Once you abstract it, model it, and virtualize it, it becomes something other than dasein.
Curt
One more thing, I also want to avoid the trap of thinking about all this in too human terms. The idea is to get at the notion of "being" as it relates to a computer program existing in a computer as opposed to a computer program that thinks it's a human existing in the Universe.
Then there are post-human philosophers like Donna Haraway and even Deleuze who consider being from alter-human perspectives. I think one of the problems that you will encounter in your project is that a computer is also a thing in the world. When a computer program exists in a computer, it doesn't exist in a metaphysically removed no-man's-lab; it also exists in the world.
I haven't brought up Artificial Intelligence (or more accurately, Artificial Being) because I understand your project as a tongue-in-cheeck absurd model that has more to do with the poetry of programming than with "artificial being" per se. But if you are going to be rigorous about it (as all great failures should be), at some point you will have to account for the inherent irreducibility of phenomenological being to any ontological model whatsoever. Mez eludes this conundrum via poetry (with a wry critique of the cartesian subject thrown in for good measure). But your challenge is to make something that runs. Can executable code be good poetry?
Like I say, an interesting project.
pall wrote:
"The idea is to get at the notion of "being" as it relates to a computer program existing in a computer as opposed to a computer program that thinks it's a human existing in the Universe."
"...post-human philosophers like Donna Haraway and even Deleuze..."
"...Artificial Intelligence (or more accurately, Artificial Being)..."
Maybe add Louis Armand...? (http://www.ctheory.net/articles.aspx?id=496)
"...to be rigorous about it (as all great failures should be)..."
A statement worth chewing on!
Vijay
That makes me think about how Rob Myers describes hacking as "immanent critique" ...
http://www.furtherfield.org/displayreview.php?review_id=307
Vijay
Can a program know whether it exists? It depends what we mean by "know". I have long argued that a problem with e.g. AARON is that computers don't care about the human body or human experience. A program would be interested (if it could be interested) in its own environment. The environment of memory and disk space, of process IDs and processor time.
If consciousness is an emergent property of more complex systems or requires spirit or whatever then it is nonsensical to try to produce a minimal program or any material(ist) system that embodies being. But it may function as as an evocative representation or as a metaphor.
Imagine a program that knows its own process ID (every running program in a system is given a unique number to identify it, this is the process ID), and will watch for the absence of that ID from the list of running processes. Now imagine the conditions under which the program could actually report the absence of its own process ID from the process list. Now imagine being present after your own death. Neither is possible in a materialist universe. So there is an analog there.
Psuedocode:
pid := getpid()
loop (contains (getAllPids(), pid))
..sleep (1)
end loop
print "I have died."
Bolter in "Turings Man" argued that computers are the "enabling technology" of contemporary culture, the defining metaphor of our age as clockwork and fire were for previous generations. Constructing a trivial program to represent/evoke/satirise/deliberately fail to capture the concept of being is like depicting the human figure using charcoal or ceramics or paint or steel or photography or CGI.
'Pataphysic or Meinongian ontology tend to make nonsense of being and existence. So does art. Badiou's ontology is materialist and atheist and yet is based on (mathematical) infinities. If we switch to Haskell we can treat being as lazily evaluated infinities and still fit them in a computer's memory. To fail to do so is more interesting as art than to succeed at many less ambitious tasks.
Excellent comments. My thoughts on AI have, for quite some time, been along the lines of viewing it as one of those impossible myths that can only be realized by redefining "intelligence" as something less than what it is in the human sense. As you may have noticed, the most recent version of exist.pl does in fact use its process ID as an indication of its "being". For the next version I'm working on having it look at the status of all processes running on the computer and comparing its own to those. What is it supposed to glean from that? I don't know. I don't really care, it just seems like a logical step towards allowing it to experience itself as "being" amongst other "beings". I'm finding this a very enlightening and interesting project and I think that the level of the discussion that's emerged so far is more indicative of success than the project actually doing whatever it purports to do.
Oh, and the whole notion of the program realizing that its process ID no longer exists is great.
Oops. Sorry. I have now learnt a new Perl built-in variable.
I've moved the exist.pl development to Google code at:
http://code.google.com/p/existpl
This is mostly done to ease the tracking of changes and version history. I do however intend to post all revisions to this forum as well to maintain a complete record of the development within the context of any discussion.
I would like permission to use any and all comments and suggestions for exhibition purposes (if that occurs). If anyone has a problem with that, let me know. Otherwise I'll assume it's OK.
Pall
Reported by pallthay, Today (moments ago)
Program sees itself as being alone in the universe. Needs to understand
that it is an individual process amongst other processes. It should seek to
discover what differentiates itself from the other processes.
The issue can be seen at:
http://code.google.com/p/existpl/issues/detail?id=1