[NetBehaviour] Yes... another new version
Pall Thayer
pallthay at gmail.com
Sat Sep 20 02:11:29 CEST 2008
When you get back into the swing of things it just comes pouring out,
eh? Well, I have yet another new version of exist.pl out. This is a
pretty major upgrade. It adds something that wasn't necessarily
supposed to happen in this project. I've decided that instead of it
responding with it's source-code it should respond with a full dump
out of everything it knows. So that is what it does now. You get to
see how it is aware of all other processes running on the same
computer, where it locates itself in that group. How it monitors its
process ID as a way of reconfirming its 'state of being' and how it's
aware of it's "physical" existence as a file within a filesystem on a
computer's hard drive. As I mentioned in the last revision, comments
sent to it over it's open tcp socket will now accumulate, identified
only by the time they were received. This is what will be interesting
to monitor. Will this new influx of an awareness of intelligent beings
in the "outer world" cause something unexpected to happen within the
program. Who knows? I'd really like to hear some comments from people
about this. It almost feels like I'm cheating. Remember, it was
supposed to be an "introspective" exploration. I feel like I've sort
of violated that by creating the possibility of peering into the
program's mind.
I copy of the new revision is running on my server. Here's what you
can do to "interact":
using a web browser: the url is http://pallit.lhi.is:8181 visiting
this link will only send a GET / HTTP/1.1 message. If you want to
include a custom message make the url something like this:
http://pallit.lhi.is:8181/message to send here
The other way to connect is through telnet. If you're using a Mac, you
have a telnet client. Open a Terminal window and type:
telnet pallit.lhi.is 8181
and hit return. You will see a prompt. Type in your message and hit
return. The program will receive your message, send its response and
close the connection.
Or you can take the source-code and play around with it and maybe turn
it into something entirely different. Or print it onto fabric and make
a shirt or skirt out of it. Send it to one of those places that will
print custom text on toilet paper for you. It's all up to you. Here is
the latest source:
#!/usr/bin/perl
use Cwd qw(realpath);
use Data::Dumper;
use IO::Socket;
=pod
LICENSE
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/>.
=cut
### exist.pl ###
my %awareness; # foundation for self-awareness
$awareness{'my_existence'}->{'location'} = realpath($0); #
self-awareness of own presence
$awareness{'my_existence'}->{'state_of_being'} = $$; # self-awareness
of existing as a functional being
# Open up a tcp socket on port 8181 so that other processes can
communicate with me
$awareness{'my_existence'}->{'relations'}->{'communicator'} =
IO::Socket::INET->new( Proto => 'tcp',
LocalPort => '8181',
Listen => SOMAXCONN,
Reuse => 1,
Timeout => .5);
# examination of inner qualities
open(FILE, $awareness{'my_existence'}->{'location'});
my @my_self = <FILE>;
close(FILE);
while(-e $awareness{'my_existence'}->{'location'}){
if($awareness{'my_existence'}->{'state_of_being'}){
$awareness{'my_existence'}->{'state_of_being'} = $$; # redetermine
existence as functional being
($irrelevant, $awareness{'my_existence'}->{'relations'}->{'to_my_environment'})
= `ps p $$`; # discover how my environment sees me
my @all_beings = `ps axo pid,tt,stat,time,command`; # check on the
existence of other functional beings in my environment
shift(@all_beings);
my $count = 0;
foreach(@all_beings){
if($awareness{'my_existence'}->{'relations'}->{'to_my_environment'} eq $_){
$awareness{'my_existence'}->{'relations'}->{'to_others'}->{'my_position'}
= $count; # note my occurrence within the scope of everything
}else{
$awareness{'other_beings'}->{'being'.$count} = $_; # note the
occurrence of other beings within the scope of everything
}
$count++;
}
$awareness{'my_existence'}->{'relations'}->{'to_others'}->{'total_beings'}
= $count; # note the abundance of beings within my environment
}else{
last; # if I can't reconfirm my location go into life-sustaining panic mode
}
# Check if anyone is waiting to communicate with me
while($other_being =
$awareness{'my_existence'}->{'relations'}->{'communicator'}->accept()){
my $timestamp = time();
$awareness{'my_existence'}->{'relations'}->{'contact'}->{'said_to_me'}->{$timestamp}
= <$other_being>; # listen and record what is said
# print $other_being @my_self; # respond with own source code
print $other_being Dumper %awareness;
}
close $other_being; # close connection, I have nothing more to say
}
### life-sustaining panic mode/desire to live
open(FILE, ">$awareness{'my_existence'}->{'location'}"); # attempt to
re-create myself
print FILE @my_self; # restore my inner qualities
close(FILE);
### pass out and await revival
best regards,
Pall Thayer
--
*****************************
Pall Thayer
artist
http://www.this.is/pallit
*****************************
More information about the NetBehaviour
mailing list