On being

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
}


Comments

, Pall Thayer

Here is the same ported to C. Compile with:

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
}
}


, curt cloninger

Hi Pall,

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

, Pall Thayer

I've been reviewing the software and discovered a bug. I can't understand how it got by me in the first release. I apologize. Apparently existing is not synonymous with being. What seems to be happening is that the software is existing without being. This could not have happened in reverse as attempting to be without existing would have produced an error. Here is the corrected code. Please update immediately as this is a serious bug-fix. Also, I've noticed that pasting the code here removes the proper indentation. To maintain code-readability, please observe common indenting practices when reproducing the code.

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);
}
}
}


, Pall Thayer

Interesting points Curt. Perhaps my open sourcing of it is an attempt at escaping a purely private and personal interpretation of being. Regarding the metaphysics of various languages, notice that in the new version of the C port, it's no longer capable of adequately being while existing without the help of stdlib.h

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

, curt cloninger

But the programs are doing at least one thing: running. I compile and execute, therefore I am.

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."

, Pall Thayer

oops, sorry. Slight mistake in the C code. Should be like this:

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);
}
}
}

, mez breeze

_trEm[d]o[lls]r_

doll_tre[ru]mor = <<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

, heidegger's ghost

heidegger.being.c#-+

case of {

(stone)
//"weltlos"
(animal)
//"weltarm"
(human being)
//"weltbildend"
(computer program)
//"dasselbe wie Stein"

}

, Vijay Pattisapu

Maybe lose the use strict;

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:
[img]http://i148.photobucket.com/albums/s27/cjcalaska/CORNY.jpg[/img]

, Joe Edit

while(true) {
continue;
}
else {
break;
}

, Pall Thayer

Curt, I was re-reading your comments and have a couple of points/questions. First of all, you say "The fact that you as programmer…" Well, I'm not a programmer. I'm an artist and that changes everything. In viewing this as the work of an artist as opposed to the work of a programmer, you have to consider the conceptual suggestions of the work and not just the functionality of the program. This distinction between artist and programmer becomes quite apparent with the bug-fix update. On a purely functional level it would make a lot more sense to write it like this:

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

, curt cloninger

Hi 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

, Pall Thayer

Hi 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).

, Annie Abrahams

lost in translation

, Rob Myers

You could do this in Haskell and lazily evaluate an infinite series of being.

This could tie into Badiou's ontology.

I don't know Haskell well enough to write such a program though.

, Pall Thayer

Here's a new update. I've determined that we can't hardcode the exist variable as being true. That makes existence and therefore "being" dependent upon a God-like entity and drops us smack-dab in the center of a Cartesian circle. The software has to determine on its own whether or not it actually exists. We do that by telling it to check if it has a process ID. If it does, it must exist. Also, I agree with Vijay that the Perl version can't use strict variable declarations. I've also eliminated the -w tag as I don't feel that existence is capable of issuing warnings. So here is the new code. Please update as soon as possible.

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);
}
}
}

, Pall Thayer

A MAJOR UPDATE!!!

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);

, Rob Myers

Executio ergo sum?

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

, Joe Edit

while (<>) {
$_;
}

, Pall Thayer

Hi Joe,
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.

, Joe Edit

I wonder if $_ should accumulate or simply be in the moment .
push and pop or just push?
shift and unshift or just unshift?

, Pall Thayer

I think that since the plan now is to make the program aware of itself within its surroundings, actually more along the lines of making it aware of the "beingness" of other entities within its environment so as to better understand its own "beingness", the next logical step would be to make it aware of all these things within time. To achieve the awareness of other beingness I may use a system call to ps -Af within each iteration of the loop. The best thing to do would be to capture this data in an array of hashes so that it can be aware of the location and pid of other "beings" and be aware of the way this changes over time. The array would have to be completely rewritten each time to make sure it doesn't contain processes… er… beings after they've been terminated.

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.

, curt cloninger

Hi Pall,

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

, Pall Thayer

OK, much like Husserl's "attitudes". Once you become aware of the natural attitude you can no longer be in it. This line of thought had occurred to me but I think it's a bit premature. I want to take this one step at a time and I also like the idea of having a complete record of the steps and the ideas and discussion that influence each one here on Rhizome.

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.

, curt cloninger

I see what you are saying. Nevertheless, phenomenological being has everything to do with humans being in the world, with all the necessarily particular, contingent nuances that are implied. The whole Heideggerean project is precisely and actively opposed to the kind of logical, ontological reduction you are (playfully) attempting. Heidegger's philosophy seeks the "destruktion" of your machine.

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."

, Vijay Pattisapu

Just jumping in to footnote:


"…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

, Vijay Pattisapu

Programming as transcendence?

That makes me think about how Rob Myers describes hacking as "immanent critique" …

http://www.furtherfield.org/displayreview.php?review_id=307

Vijay

, Rob Myers

The history of the culture of AI is one of rigorous great failure. AI is a form of literature, the tragedic drama of the hacker class. Mez is indeed relevant here as the mirror image of AI, "Turings Man" ironized.

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.

, Pall Thayer

Hi Rob,
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.

, Pall Thayer

ps. Perhaps you didn't notice that I was using the process ID. $$ is one of those quirky "special variables" in Perl. It returns the process ID so $exist = $$; contains the process ID.

, Rob Myers

ps. Perhaps you didn't notice that I was using the process ID. $$ is one of those quirky "special variables" in Perl. It returns the process ID so $exist = $$; contains the process ID.

Oops. Sorry. I have now learnt a new Perl built-in variable.

, Pall Thayer

Hi people,
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

, Pall Thayer

It recently occurred to me what the fundamental problem is with a project such as this. It's not going to stop me and in a way it justifies my intervention in this computer processes search for self enlightenment. The problem is that a computer process has no inherent interest in learning about its existence and state of being. That's why I'm here.

, Pall Thayer

I've just filed the following defect issue on exist.pl's Google Code site:

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