From MAILER-DAEMON Sun Oct  1 19:20:18 2006
Date: 01 Oct 2006 19:20:18 -0400
From: Mail System Internal Data <MAILER-DAEMON@turing.acm.org>
Subject: DON'T DELETE THIS MESSAGE -- FOLDER INTERNAL DATA
X-IMAP: 1159744818 0000000000
Status: RO

This text is part of the internal format of your mail folder, and is not
a real message.  It is created automatically by the mail system software.
If deleted, important folder data will be lost, and it will be re-created
with the data reset to initial values.

From perlman@turing.acm.org Mon Oct  2 15:56:35 2006 -0400
Status: 
X-Status: 
X-Keywords:
Date: Mon, 2 Oct 2006 15:56:35 -0400 (EDT)
From: Gary PERLMAN <perlman@turing.acm.org>
To: Hilary Heuer <heuer@phy.ucsf.edu>
Subject: Re: |STAT request
In-Reply-To: <6.1.0.6.0.20061002113417.0520e0a8@phy.ucsf.edu>
Message-ID: <Pine.LNX.4.64.0610021556001.28376@turing.acm.org>
References: <6.1.0.6.0.20061002113417.0520e0a8@phy.ucsf.edu>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed

Thank you for your interest in |STAT data manipulation and analysis software.

And thanks for the fan mail.

UNIX |STAT for is now (only) available via Web browsers at a secret location.
 	http://www.hcibib.org/stat/xyzzy/

To obtain UNIX |STAT files, please follow the instructions at:
 	http://www.acm.org/~perlman/stat/#access
There are installation notes (e.g., for Mac OS X and Linux) at:
 	http://www.acm.org/~perlman/stat/installation.txt

DOS |STAT executables and documentation are available as a WinZip file:
 	http://www.acm.org/~perlman/stat/DOS-STAT.ZIP

HTML documentation is available from the |STAT home page:
 	http://www.acm.org/~perlman/stat/

On Mon, 2 Oct 2006, Hilary Heuer wrote:

>
>
> I AGREE TO ADHERE TO THE CONDITIONS OF USING |STAT.
> I AGREE NOT TO SHARE THE |STAT LOCATION WITH OTHERS.
>
>
> (I used UnixStat years ago and loved it; looking forward to its flexibility 
> again).
>
> Thanks!
>

From perlman@turing.acm.org Tue Oct  3 16:49:50 2006 -0400
Status: 
X-Status: 
X-Keywords:
Date: Tue, 3 Oct 2006 16:49:49 -0400 (EDT)
From: Gary PERLMAN <perlman@turing.acm.org>
To: Amrith Raghavan <amrith.raghavan@gmail.com>
Subject: Re: |STAT request
In-Reply-To: <dcf37c1a0610031309p256edf68hf6cd47a4ec0c366@mail.gmail.com>
Message-ID: <Pine.LNX.4.64.0610031649430.1474@turing.acm.org>
References: <dcf37c1a0610031309p256edf68hf6cd47a4ec0c366@mail.gmail.com>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed

Thank you for your interest in |STAT data manipulation and analysis software.

UNIX |STAT for is now (only) available via Web browsers at a secret location.
 	http://www.hcibib.org/stat/xyzzy/

To obtain UNIX |STAT files, please follow the instructions at:
 	http://www.acm.org/~perlman/stat/#access
There are installation notes (e.g., for Mac OS X and Linux) at:
 	http://www.acm.org/~perlman/stat/installation.txt

DOS |STAT executables and documentation are available as a WinZip file:
 	http://www.acm.org/~perlman/stat/DOS-STAT.ZIP

HTML documentation is available from the |STAT home page:
 	http://www.acm.org/~perlman/stat/

On Tue, 3 Oct 2006, Amrith Raghavan wrote:

>  I AGREE TO ADHERE TO THE CONDITIONS OF USING |STAT.
>  I AGREE NOT TO SHARE THE |STAT LOCATION WITH OTHERS.
>

From perlman@turing.acm.org Tue Oct  3 16:50:12 2006 -0400
Status: 
X-Status: 
X-Keywords:
Date: Tue, 3 Oct 2006 16:50:12 -0400 (EDT)
From: Gary PERLMAN <perlman@turing.acm.org>
To: Eimear Kenny <ekenny@mail.rockefeller.edu>
Subject: Re: |STAT
In-Reply-To: <6733f6390610031321x35f87873sc99dc3bcedec9969@mail.gmail.com>
Message-ID: <Pine.LNX.4.64.0610031650050.1474@turing.acm.org>
References: <6733f6390610031321x35f87873sc99dc3bcedec9969@mail.gmail.com>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed

Thank you for your interest in |STAT data manipulation and analysis software.

UNIX |STAT for is now (only) available via Web browsers at a secret location.
 	http://www.hcibib.org/stat/xyzzy/

To obtain UNIX |STAT files, please follow the instructions at:
 	http://www.acm.org/~perlman/stat/#access
There are installation notes (e.g., for Mac OS X and Linux) at:
 	http://www.acm.org/~perlman/stat/installation.txt

DOS |STAT executables and documentation are available as a WinZip file:
 	http://www.acm.org/~perlman/stat/DOS-STAT.ZIP

HTML documentation is available from the |STAT home page:
 	http://www.acm.org/~perlman/stat/

On Tue, 3 Oct 2006, Eimear Kenny wrote:

> I AGREE TO ADHERE TO THE CONDITIONS OF USING |STAT.
> I AGREE NOT TO SHARE THE |STAT LOCATION WITH OTHERS.
>

From perlman@turing.acm.org Fri Oct  6 13:16:59 2006 -0400
Status: 
X-Status: 
X-Keywords:
Date: Fri, 6 Oct 2006 13:16:59 -0400 (EDT)
From: Gary PERLMAN <perlman@turing.acm.org>
To: Jacek Gwizdka <jgwizdka@acm.org>
Subject: Re: hcibib - HCI-PEOPLE update request
In-Reply-To: <8fc75e6e0610050702s6e3b3bf9u7a9a00dc1dfb25a@mail.gmail.com>
Message-ID: <Pine.LNX.4.64.0610061316330.11060@turing.acm.org>
References: <8fc75e6e0610050702s6e3b3bf9u7a9a00dc1dfb25a@mail.gmail.com>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed

Done.

On Thu, 5 Oct 2006, Jacek Gwizdka wrote:

> Dear Gary,
>
> I'd like to ask for an update of my affiliation listed on HCI-PEOPLE
> other info stays the same.
>
> Thanks so much
>
> All the best,
> - Jacek
>
> http://www.hcibib.org/hci-sites/PEOPLE.html
>
> OLD
> 31. *Gwizdka, Jacek* <http://www.gwizdka.com/> *University of Toronto
> * hci_research
> AT gwizdka DOT com <hci_research>
>
> NEW:
> 31. *Gwizdka, Jacek* <http://www.gwizdka.com/> *Rutgers University *
> hci_research
> AT gwizdka DOT com <hci_research>
>
>
>
> Jacek Gwizdka, PhD
> Assistant Professor
> Department of Library and Information Science
> School of Communication, Information and Library Studies
> Rutgers University
> www.gwizdka.com
> Room 331                               +1 732 932 7500 x 8236
> 4 Huntington St., New Brunswick, NJ 08901, USA
>

From perlman@turing.acm.org Mon Oct  9 21:42:29 2006 -0400
Status: 
X-Status: 
X-Keywords:
Date: Mon, 9 Oct 2006 21:42:29 -0400 (EDT)
From: Gary PERLMAN <perlman@turing.acm.org>
To: "Green, Julia" <Julia_Green@brown.edu>
Subject: Re: | stat
In-Reply-To: <00FC7CB8B6D2B9409C62F24EE9143028051DA9C4@MAIL2.AD.Brown.Edu>
Message-ID: <Pine.LNX.4.64.0610092142230.25395@turing.acm.org>
References: <00FC7CB8B6D2B9409C62F24EE9143028051DA9C4@MAIL2.AD.Brown.Edu>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed

Thank you for your interest in |STAT data manipulation and analysis software.

UNIX |STAT for is now (only) available via Web browsers at a secret location.
 	http://www.hcibib.org/stat/xyzzy/

To obtain UNIX |STAT files, please follow the instructions at:
 	http://www.acm.org/~perlman/stat/#access
There are installation notes (e.g., for Mac OS X and Linux) at:
 	http://www.acm.org/~perlman/stat/installation.txt

DOS |STAT executables and documentation are available as a WinZip file:
 	http://www.acm.org/~perlman/stat/DOS-STAT.ZIP

HTML documentation is available from the |STAT home page:
 	http://www.acm.org/~perlman/stat/

On Sun, 8 Oct 2006, Green, Julia wrote:

> Hi,
> I wanted to obtain a unix version of | stat for my computer.
>
> I AGREE TO ADHERE TO THE CONDITIONS OF USING |STAT.
> I AGREE NOT TO SHARE THE |STAT LOCATION WITH OTHERS.
>
> thanks,
> Julia
>

From perlman@turing Wed Oct 11 13:55:23 2006 -0400
Status: 
X-Status: 
X-Keywords:
Date: Wed, 11 Oct 2006 13:55:23 -0400 (EDT)
From: Gary PERLMAN <perlman@turing>
To: Bong-Hyun Kim <Bong-Hyun.Kim@utsouthwestern.edu>
Subject: Re: |STAT request
In-Reply-To: <HHENJPPBNKAFCNEAEBELCEFBCAAA.Bong-Hyun.Kim@utsouthwestern.edu>
Message-ID: <Pine.LNX.4.64.0610111355160.17390@turing>
References: <HHENJPPBNKAFCNEAEBELCEFBCAAA.Bong-Hyun.Kim@utsouthwestern.edu>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed

Thank you for your interest in |STAT data manipulation and analysis software.

UNIX |STAT for is now (only) available via Web browsers at a secret location.
 	http://www.hcibib.org/stat/xyzzy/

To obtain UNIX |STAT files, please follow the instructions at:
 	http://www.acm.org/~perlman/stat/#access
There are installation notes (e.g., for Mac OS X and Linux) at:
 	http://www.acm.org/~perlman/stat/installation.txt

DOS |STAT executables and documentation are available as a WinZip file:
 	http://www.acm.org/~perlman/stat/DOS-STAT.ZIP

HTML documentation is available from the |STAT home page:
 	http://www.acm.org/~perlman/stat/

On Tue, 10 Oct 2006, Bong-Hyun Kim wrote:

>   I AGREE TO ADHERE TO THE CONDITIONS OF USING |STAT.
>   I AGREE NOT TO SHARE THE |STAT LOCATION WITH OTHERS.
>
> Bong-Hyun Kim
>

From perlman@turing Thu Oct 12 09:22:57 2006 -0400
Status: 
X-Status: 
X-Keywords:
Date: Thu, 12 Oct 2006 09:22:57 -0400 (EDT)
From: Gary PERLMAN <perlman@turing>
To: Werner Goebl <werner.goebl@mail.mcgill.ca>
Subject: Re: DOS|STAT notice
In-Reply-To: <452D310F.6000309@mail.mcgill.ca>
Message-ID: <Pine.LNX.4.64.0610120922220.30757@turing>
References: <452D310F.6000309@mail.mcgill.ca>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed

Hi Werner,

Convenience is my goal.

Best wishes,

Gary

On Wed, 11 Oct 2006, Werner Goebl wrote:

> Dear Gary,
>
> this is just to tell you that I downloaded your stats package for DOS from 
> your homepage. It is very convenient.
>
> Thanks & greetings
> Werner
>
>

From perlman@turing.acm.org Sun Oct 15 12:52:30 2006 -0400
Status: 
X-Status: 
X-Keywords:
Date: Sun, 15 Oct 2006 12:52:29 -0400 (EDT)
From: Gary PERLMAN <perlman@turing.acm.org>
To: Erik Sherwood <erik.sherwood@gmail.com>
Subject: Re: |STAT
In-Reply-To: <d365cc5f0610131055m5a0cd895u86f65585b6cbdc83@mail.gmail.com>
Message-ID: <Pine.LNX.4.64.0610151252230.6166@turing.acm.org>
References: <d365cc5f0610131055m5a0cd895u86f65585b6cbdc83@mail.gmail.com>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed

Thank you for your interest in |STAT data manipulation and analysis software.

UNIX |STAT for is now (only) available via Web browsers at a secret location.
 	http://www.hcibib.org/stat/xyzzy/

To obtain UNIX |STAT files, please follow the instructions at:
 	http://www.acm.org/~perlman/stat/#access
There are installation notes (e.g., for Mac OS X and Linux) at:
 	http://www.acm.org/~perlman/stat/installation.txt

DOS |STAT executables and documentation are available as a WinZip file:
 	http://www.acm.org/~perlman/stat/DOS-STAT.ZIP

HTML documentation is available from the |STAT home page:
 	http://www.acm.org/~perlman/stat/

On Fri, 13 Oct 2006, Erik Sherwood wrote:

> I AGREE TO ADHERE TO THE CONDITIONS OF USING |STAT.
> I AGREE NOT TO SHARE THE |STAT LOCATION WITH OTHERS.
>

From perlman@turing.acm.org Sun Oct 15 19:22:57 2006 -0400
Status: 
X-Status: 
X-Keywords:
Date: Sun, 15 Oct 2006 19:22:57 -0400 (EDT)
From: Gary PERLMAN <perlman@turing.acm.org>
To: Gary perlman <perlman@turing.acm.org>
Subject: desc.cgi
Message-ID: <Pine.LNX.4.64.0610151922500.2996@turing.acm.org>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed

Listing of files in this pack:
   desc.cgi
fpack:!@#$%^&*(): desc.cgi
#! /usr/local/bin/perl

# TODO add stats on usage, similar to count.pl

print "Content-type: text/html\r\n\r\n";

%F = &formdata ();

$F{'example'} && &example();

&printheader();

$pgm = "desc";
$help = "../doc/$pgm.htm";
$home = "..";
&makecmd();

&printform();

&docmd();

print"</body></html>\n";

sub printform {
print "
<form name=desc method=POST action=desc.cgi>

<input type=submit accesskey=r title=\"accesskey: r\" value=\"Run $pgm\"> (options: $options)
<a target=new title=\"Display the manual entry for $pgm in another window\" href=\"$help\">Help</a>
|
<a target=new title=\"Show an example in a new window\" href=\"$ENV{'SCRIPT_NAME'}?example=true\">Example</a>
|
<a target=new title=\"Display the |STAT home page in another window\" href=\"$home\">Home</a>
|
<a title=\"Download Linux binary\" type=\"application/octet-stream\" href=\"desc\">Binary</a>
<br>
<fieldset class=top>
<legend>Descriptive Statistics</legend>
<input type=checkbox name=s id=s value=checked $F{'s'}><label class=normal for=s>Show Statistics</label>
<input type=checkbox name=o id=o value=checked $F{'o'}><label class=normal for=o>Order Statistics</label>
<nobr>
<input type=checkbox name=v id=v value=checked $F{'v'}><label class=normal for=v>Name=Value Format</label>
</nobr>

<fieldset class=inner>
<legend>Significance Tests</legend>
<nobr>
<label class=normal for=t>t-test against:</label><input type=text size=4 name=t id=t value=\"$F{'t'}\" >
</nobr>
<nobr>
<label class=normal for=Ftest>F-test against:</label><input type=text size=4 name=F id=Ftest value=\"$F{'F'}\" 
</nobr>
</fieldset>
</fieldset>

<fieldset class=top>
<legend>Histograms and Tables</legend>
<input type=checkbox name=h id=h value=checked $F{'h'}><label class=normal for=h>Histogram</label>
<input type=checkbox name=f id=f value=checked $F{'f'}><label class=normal for=f>Frequencies</label>
<input type=checkbox name=p id=p value=checked $F{'p'}><label class=normal for=p>Proportions</label>
<input type=checkbox name=c id=c value=checked $F{'c'}><label class=normal for=c>Cumulative</label>
</div>

<div>
<fieldset class=inner>
<legend>Formatting and Filtering</legend>
<nobr>
<label class=normal for=i>Interval:</label><input type=text size=4 name=i id=i value=\"$F{'i'}\" >
</nobr>
<nobr>
<label class=normal for=min>Minimum:</label><input type=text size=4 name=m id=min value=\"$F{'m'}\" >
</nobr>
<nobr>
<label class=normal for=Max>Maximum:</label><input type=text size=4 name=M id=Max value=\"$F{'M'}\" >
</nobr>
</fieldset>
</fieldset>

<fieldset class=top>
<legend>Help Options</legend>
<input type=checkbox name=L id=Lim value=checked $F{'L'}><label class=normal for=Lim>Show Limits</label>
<input type=checkbox name=O id=Opts value=checked $F{'O'}><label class=normal for=Opts>Show Options</label>
<input type=checkbox name=V id=Ver value=checked $F{'V'}><label class=normal for=Ver>Show Version</label>
</fieldset>
";

$F{'rows'} = 5 unless $F{'rows'};
$F{'cols'} = 50 unless $F{'cols'};

print "
<fieldset>
<legend><label for=data>Data</label></legend>
<textarea title=\"Enter numbers separated by space or newlines\" name=data id=data rows=$F{'rows'} cols=$F{'cols'} wrap=virtual>$F{'data'}</textarea>
<div>
<fieldset class=inner>
<legend>Data Entry Area</legend>
<!-- TODO: use JavaScript onChange to change size instead of going back to server -->
<label class=normal for=rows>Rows:</label><input type=text name=rows id=rows size=2 value=\"$F{'rows'}\">
<label class=normal for=cols>Cols:</label><input type=text name=cols id=cols size=2 value=\"$F{'cols'}\">
</fieldset>
</div>
</fieldset>
";

print "</form>\n";
}

sub makecmd {

$options .= " -s" if $F{'s'};
$options .= " -o" if $F{'o'};
$options .= " -v" if $F{'v'};
$options .= " -t $F{'t'}" if $F{'t'};
$options .= " -F $F{'F'}" if $F{'F'};

$options .= " -h" if $F{'h'};
$options .= " -f" if $F{'f'};
$options .= " -p" if $F{'p'};
$options .= " -c" if $F{'c'};
$options .= " -i $F{'i'}" if $F{'i'};
$options .= " -m $F{'m'}" if $F{'m'};
$options .= " -M $F{'M'}" if $F{'M'};

$options .= " -L" if $F{'L'};
$options .= " -O" if $F{'O'};
$options .= " -V" if $F{'V'};

$dir = "./";
$cmd = "/bin/echo \"$F{'data'}\" | $dir$pgm $options |";
}

sub docmd() {
 	if ($F{'data'} || $F{'L'} || $F{'O'} || $F{'V'}) {
 		open (PIPE, $cmd) or die "can't open pipe";
 		print "<pre>\n";
 		while (<PIPE>) {
 			print;
 		}
 		print "</pre>\n";
 		close PIPE;
 	}
}

sub printheader {
 	print '<html lang="en">
 	<head>
 	<title>desc: Descriptive Statistics</title>
 	<style type="text/css">
 	ul{margin-bottom:8px;}
 	label.normal {font-size: 75%; font: sans-serif; color: green; }
 	legend {font-size: 75%; font: sans-serif; color: #999999 }
 	fieldset {width: 90%}
 	textarea {font-size: 75%}
 	h1 {font-size: 125%; background: #EEFFEE}
 	</style>
 	</head>
 	<h1>desc: Descriptive Statistics</h1>
 	<body>
 	';
}

sub example {
 	$F{'data'} = "1 5 2 3 6 4 4 3 4 2 6 5 7 7 6 7 4 7 6 5 6 7 5 7 7 6 5 3 NA";
 	$F{'i'} = 1;
 	$F{'m'} = '-.5';
 	$F{'M'} = '10';
 	$F{'L'} = $F{'O'} = $F{'V'} = "";
 	$F{'o'} = $F{'h'} = $F{'c'} = $F{'f'} = $F{'p'} = 'checked';
 	$F{'F'} = 4;
 	$F{'rows'} = 3;
 	$F{'cols'} = 40;
}

sub formdata { # nil -> %F
     local (*formdata);
     if ($ENV{'REQUEST_METHOD'} eq 'POST') {
         read (STDIN, $F, $ENV{'CONTENT_LENGTH'});
     } else {
         $F = $ENV{'QUERY_STRING'};
     }
     @formdata = split (/&/, $F);
     for (@formdata) {
         local ($name, $value) = split (/=/, $_, 2);
         $value =~ s/\+/ /g;
         $value =~ s/%([\dA-Fa-f][\dA-Fa-f])/pack ("C", hex ($1))/eg;
         $F{$name} .= "\n" if $F{$name};
         $F{$name} .= $value;
     }
     return (%F);
}
fpack:!@#$%^&*():

From perlman@turing.acm.org Mon Oct 16 10:06:43 2006 -0400
Status: 
X-Status: 
X-Keywords:
Date: Mon, 16 Oct 2006 10:06:43 -0400 (EDT)
From: Gary PERLMAN <perlman@turing.acm.org>
To: Andrew Bogecho <andrewb@cs.mcgill.ca>
Subject: Re: |STAT
In-Reply-To: <57793.132.206.2.68.1161007083.squirrel@mail.cs.mcgill.ca>
Message-ID: <Pine.LNX.4.64.0610161006360.6221@turing.acm.org>
References: <57793.132.206.2.68.1161007083.squirrel@mail.cs.mcgill.ca>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed

Thank you for your interest in |STAT data manipulation and analysis software.

UNIX |STAT for is now (only) available via Web browsers at a secret location.
 	http://www.hcibib.org/stat/xyzzy/

To obtain UNIX |STAT files, please follow the instructions at:
 	http://www.acm.org/~perlman/stat/#access
There are installation notes (e.g., for Mac OS X and Linux) at:
 	http://www.acm.org/~perlman/stat/installation.txt

DOS |STAT executables and documentation are available as a WinZip file:
 	http://www.acm.org/~perlman/stat/DOS-STAT.ZIP

HTML documentation is available from the |STAT home page:
 	http://www.acm.org/~perlman/stat/

On Mon, 16 Oct 2006, Andrew Bogecho wrote:

> I AGREE TO ADHERE TO THE CONDITIONS OF USING |STAT.
> I AGREE NOT TO SHARE THE |STAT LOCATION WITH OTHERS.
>

From perlman@turing.acm.org Mon Oct 16 15:32:27 2006 -0400
Status: 
X-Status: 
X-Keywords:
Date: Mon, 16 Oct 2006 15:32:25 -0400 (EDT)
From: Gary PERLMAN <perlman@turing.acm.org>
To: Harriet Fell <fell@ccs.neu.edu>
Subject: Re: ASSETS 2006 is next week
In-Reply-To: <7.0.1.0.2.20061016140206.03eefb58@ccs.neu.edu>
Message-ID: <Pine.LNX.4.64.0610161530290.8156@turing.acm.org>
References: <7.0.1.0.2.20061016140206.03eefb58@ccs.neu.edu>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed

I put in a banner on this link page:
 	http://www.hcibib.org/accessibility/
For the next conference, for which I will try to pay more attention,
it would be great if someone asked me to add a banner six months before.

Gary Perlman, Director, HCI Bibliography Project
mailto:director@hcibib.org  http://hcibib.org/

On Mon, 16 Oct 2006, Harriet Fell wrote:

> The 8th ACM SIGACCESS Conference on Computers and Accessibility (ASSETS 2006) 
> will be held this year from the 23rd to 25th of October, at the Embassy 
> Suites Downtown in Portland Oregon.
>        ASSETS is the principal forum for discussions and information 
> exchange between researchers, clinicians, educators, rehabilitation 
> personnel, and policy makers concerned with information technologies for 
> people with disabilities. The conference addresses issues associated with 
> computing/information technology in relation to:
>        * Hearing, sight and other sensory impairments,
>        * Motor impairments,
>        * Memory, learning and cognitive disabilities, and
>        * Aging.
>
> Register now for ASSETS 2006!
>
> This year's conference will be the largest ASSETS on record.
>
> The technical program is now on-line at:
>
>     http://www.acm.org/sigaccess/assets06/technicalprogram/
>
> The direct link for conference registration is:
>
>     http://www.regonline.com/Checkin.asp?EventId=93825
>
> and the accommodation link is:
>
>     http://www.acm.org/sigaccess/assets06/accommodation/
>
> I hope to see you in Portland at ASSETS 2006.
>
> Harriet Fell
> ASSETS Publicity Chair
>

From perlman@turing.acm.org Tue Oct 17 00:42:16 2006 -0400
Status: 
X-Status: 
X-Keywords:
Date: Tue, 17 Oct 2006 00:42:16 -0400 (EDT)
From: Gary PERLMAN <perlman@turing.acm.org>
To: Hoy Loper <hloper@gmail.com>
Subject: Re: |STAT download
In-Reply-To: <e474c0c30610161752r116c1398gb97d65897a245d39@mail.gmail.com>
Message-ID: <Pine.LNX.4.64.0610170041550.25217@turing.acm.org>
References: <e474c0c30610161752r116c1398gb97d65897a245d39@mail.gmail.com>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed

Thank you for your interest in |STAT data manipulation and analysis software.

UNIX |STAT for is now (only) available via Web browsers at a secret location.
 	http://www.hcibib.org/stat/xyzzy/

To obtain UNIX |STAT files, please follow the instructions at:
 	http://www.acm.org/~perlman/stat/#access
There are installation notes (e.g., for Mac OS X and Linux) at:
 	http://www.acm.org/~perlman/stat/installation.txt

DOS |STAT executables and documentation are available as a WinZip file:
 	http://www.acm.org/~perlman/stat/DOS-STAT.ZIP

HTML documentation is available from the |STAT home page:
 	http://www.acm.org/~perlman/stat/

On Mon, 16 Oct 2006, Hoy Loper wrote:

>  I AGREE TO ADHERE TO THE CONDITIONS OF USING |STAT.
>  I AGREE NOT TO SHARE THE |STAT LOCATION WITH OTHERS.
>

From perlman@turing.acm.org Tue Oct 17 15:27:28 2006 -0400
Status: 
X-Status: 
X-Keywords:
Date: Tue, 17 Oct 2006 15:27:28 -0400 (EDT)
From: Gary PERLMAN <perlman@turing.acm.org>
To: director@hcibib.org, infodir_sigchi@acm.org, ishelpdesk@hq.acm.org
Subject: Re: HCIBIB.ORG: please fix file permissions
In-Reply-To: <200610171925.k9HJPoRh027015@turing.acm.org>
Message-ID: <Pine.LNX.4.64.0610171526350.27036@turing.acm.org>
References: <200610171925.k9HJPoRh027015@turing.acm.org>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed

I'm sorry, but this message was sent in error. Please ignore.

Gary Perlman, Director, HCI Bibliography Project
mailto:director@hcibib.org  http://hcibib.org/

On Tue, 17 Oct 2006, Gary PERLMAN wrote:

>
> I need the ownership changed on the hcibib.org directory:
>
> 	drwxrwsr-x  34 root web 12288 Jul 23 10:41 /acminfo/5/hcibib/
>
> Ideally, the group would be hcibib and the owner would be perlman.
>
> 	chown perlman:hcibib /acminfo/5/hcibib
>
>

From perlman@turing.acm.org Thu Oct 19 09:25:07 2006 -0400
Status: 
X-Status: 
X-Keywords:
Date: Thu, 19 Oct 2006 09:25:06 -0400 (EDT)
From: Gary PERLMAN <perlman@turing.acm.org>
To: HCI Webliography <apache@turing.acm.org>
cc: director@hcibib.org, karin.pettersson@mandator.com
Subject: Re: SUGGEST-A-LINK!: Mandator
In-Reply-To: <200610111807.k9BI7Kre018254@turing>
Message-ID: <Pine.LNX.4.64.0610190924540.29257@turing.acm.org>
References: <200610111807.k9BI7Kre018254@turing>
MIME-Version: 1.0
Content-Type: MULTIPART/MIXED; BOUNDARY="1983844359-1961046749-1161264306=:29257"

--1983844359-1961046749-1161264306=:29257
Content-Type: TEXT/PLAIN; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 8BIT

I am sorry, but the site below does not have specific HCI
content and will not be included in the HCI Bibliography.
 	http://hcibib.org/faq.html#Data-5

Gary Perlman, Director, HCI Bibliography Project
mailto:director@hcibib.org  http://hcibib.org/

On Wed, 11 Oct 2006, HCI Webliography wrote:

> Reply-To: director@hcibib.org
>
> This data is being sent to director@hcibib.org
> to be considered for inclusion in the HCI Bibliography
>
> %M U.mandator.com   217.10.116.159
> %0 INTERNET
> %D 2006-10-11
> %K hci-sites:companies hci-sites:consultants
> %A Karin Pettersson
> %C Sweden, Västra Götaland, Gothenburg
> %I Mandator
> %K Consultancy firm, Usability, Interaction Design
> %L English, Swedish
> %T Mandator
> %U karin.pettersson@mandator.com
> %W http://www.mandator.com
> %X Consultancy firm with its own Usability/Interaction design group.
>
--1983844359-1961046749-1161264306=:29257--

From perlman@turing.acm.org Fri Oct 20 11:17:48 2006 -0400
Status: 
X-Status: 
X-Keywords:
Date: Fri, 20 Oct 2006 11:17:47 -0400 (EDT)
From: Gary PERLMAN <perlman@turing.acm.org>
To: James Smith <jsmith@denver.lib.co.us>
cc: director@hcibib.org
Subject: Re: Receiving SPAM and Virus Files From Your E-mail Address
In-Reply-To: <s53890f2.016@FSDPL01.denver.lib.co.us>
Message-ID: <Pine.LNX.4.64.0610201111280.21952@turing.acm.org>
References: <s53890f2.016@FSDPL01.denver.lib.co.us>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed

Sorry about the spam and virus files. They are not originating from
hcibib.org. I think they are a malicious person spoofing hcibib.org
email. Of course, then, your email might not have come from you,
but it appears to be ligit. If you like, you could send me the
complete header for one of the nasty messages and I'll see if
there is anything that can be done. I would not get my hopes up.

The complete header shows how the message was routed.
I have appended yours to the end of this message.

Gary Perlman, Director, HCI Bibliography Project
mailto:director@hcibib.org  http://hcibib.org/

On Fri, 20 Oct 2006, James Smith wrote:

> Just to let you know, I'm getting a lot of SPAM from your address with
> attached virus files. The only reason I'm writing is that your site
> seems to be legitimate and I thought I'd let you know so you can take
> steps to address the problem.
>
> Thanks,
>
> James
>

Return-Path: <jsmith@denver.lib.co.us>
Received: from acm26-4.acm.org (acm26-4.acm.org [63.118.7.109])
     by turing.acm.org (8.13.1/8.13.1) with ESMTP id k9KF3mg7021660
     for <perlman@turing.acm.org>; Fri, 20 Oct 2006 11:03:49 -0400
Received: from psmtp.com ([64.18.2.73])
         by acm26-4.acm.org (ACM Email Forwarding Service) with SMTP id YZX32848
         for <director@hcibib.org>; Fri, 20 Oct 2006 11:03:48 -0400
Received: from source ([169.133.253.41]) by exprod7mx71.postini.com ([64.18.6.14]) with SMTP;
     Fri, 20 Oct 2006 08:03:47 PDT
Received: from FSDPL01.denver.lib.co.us (fsdpl01.denver.lib.co.us [10.140.243.1])
     by denver.lib.co.us (8.13.6/8.13.6) with ESMTP id k9KF3k5G004903
     for <director@hcibib.org>; Fri, 20 Oct 2006 09:03:47 -0600 (MDT)
Received: from GWDPL_DM-MTA by FSDPL01.denver.lib.co.us
     with Novell_GroupWise; Fri, 20 Oct 2006 09:03:46 -0600
Message-Id: <s53890f2.016@FSDPL01.denver.lib.co.us>
X-Mailer: Novell GroupWise Internet Agent 6.5.3 
Date: Fri, 20 Oct 2006 09:03:40 -0600
From: "James Smith" <jsmith@denver.lib.co.us>
To: <director@hcibib.org>
Subject: Receiving SPAM and Virus Files From Your E-mail Address
Mime-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
X-pstn-levels:     (S:41.32690/99.90000 P:95.9108 )
X-pstn-settings: 3 (1.0000:1.0000) s gt3 gt2 gt1 p 
X-pstn-addresses: from <jsmith@denver.lib.co.us> [db-null]


From perlman@turing.acm.org Sat Oct 21 00:43:43 2006 -0400
Status: 
X-Status: 
X-Keywords:
Date: Sat, 21 Oct 2006 00:43:42 -0400 (EDT)
From: Gary PERLMAN <perlman@turing.acm.org>
To: "Gary Perlman @ Yahoo" <garyperlman@yahoo.com>
Subject: web|STAT
Message-ID: <Pine.LNX.4.64.0610210043120.14862@turing.acm.org>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed

Listing of files in this pack:
   stat.pl
   stat.js
   stat.css
   calc.cgi
   desc.cgi
   oneway.cgi
   pair.cgi
   rankind.cgi
   rankrel.cgi
   regress.cgi
   makefile
fpack:!@#$%^&*(): stat.pl
# TODO save settings in cookies - $BIB/mysearch
#     needs to save options with program name to make unique
#     need to add option to save option?
#     need a clear button

sub getTime # [yearonly]
{
 	local ($yearonly) = (@_);
 	local ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) =
 		localtime;
 	return($year+1900) if $yearonly;
 	local ($timestring);
 	$timestring = sprintf ("%02d-%02d-%02d %02d:%02d:%02d",
 		$year+1900, $mon+1, $mday, $hour, $min, $sec);
 	return ($timestring, $wday);
}

sub encode {
 	local ($str) = (@_);
 	# $str =~ s/([^A-Za-z0-9])/sprintf("%%%02X", ord($1))/seg;
 	$str =~ s/(\W)/sprintf("%%%02X", ord($1))/seg;
 	return $str;
}

sub formdata1 { # nil -> %F
     local (*formdata);
     if ($ENV{'REQUEST_METHOD'} eq 'POST') {
         read (STDIN, $F, $ENV{'CONTENT_LENGTH'});
     } else {
         $F = $ENV{'QUERY_STRING'};
     }
     @formdata = split (/&/, $F);
     for (@formdata) {
         local ($name, $value) = split (/=/, $_, 2);
         $value =~ s/\+/ /g;
         $value =~ s/%([\dA-Fa-f][\dA-Fa-f])/pack ("C", hex ($1))/eg;
         $F{$name} .= "\n" if $F{$name};
         $F{$name} .= $value;
     }
     return (%F);
}

sub formdata { # [ident] -> %F
 	local ($ident) = (@_);
     local (*formdata);
     if ($ENV{'REQUEST_METHOD'} eq 'POST') {
         read (STDIN, $F, $ENV{'CONTENT_LENGTH'});
     } else {
         $F = $ENV{'QUERY_STRING'};
 		if (($F eq "") && $ident) {
 			$F = $ENV{'HTTP_COOKIE'};
 			# print "<pre>xyzzy got cookie: $F</pre>\n";
 			if ($F =~ /.*$ident=([^;]*)/) { # $ident is cookie name
 				$F = $1;
 				$F =~ s/%([\dA-Fa-f][\dA-Fa-f])/pack ("C", hex ($1))/eg; # decode
 				# now $F looks like a=xxx&b=yyy&c=zzz
 			}
 		}
     }
     @formdata = split (/&/, $F);
     for (@formdata) {
         local ($name, $value) = split (/=/, $_, 2);
         $value =~ s/\+/ /g;
         $value =~ s/%([\dA-Fa-f][\dA-Fa-f])/pack ("C", hex ($1))/eg;
         $F{$name} .= "\n" if $F{$name};
         $F{$name} .= $value;
     }
     return (%F);
}

sub clean {
 	local ($s) = (@_);
 	$s =~ s/['"<>!|\\;]//g;
}

sub makeCmd { # must be run after form has been displayed
 	local ($options, $cmd, $opt);
 	$options = "";
 	for $opt (@options) {
 		if ($isBoolean{$opt}) {
 			$options .= " -$opt" if $F{$opt};
 		} elsif ($opt ne "parms") {
 			$options .= " -$opt '$F{$opt}'" if $F{$opt};
 		}
 	}
 	if ($F{'parms'}) {
 		local ($parm, @parms);
 		@parms  = split /\s+/, $F{'parms'};
 		for $parm (@parms) {
 			$options .= " '$parm'";
 		}
 	}
 	local ($dir) = "./";
 	$cmd = "/bin/echo \"$F{'data'}\" | $dir$pgm $options |";
 	return ($options, $cmd);
}

sub runCmd { # pgm cmd F
 	local ($pgm, $cmd) = (@_);
 	if ($F{'data'} || $F{'L'} || $F{'O'} || $F{'V'}) {
 		open (PIPE, $cmd) or die "can't open pipe";
 		local ($lines) = 0;
 		print "<pre title=\"$pgm $options\">\n";
 		while (<PIPE>) {
 			print;
 			$lines++;
 		}
 		close PIPE;
 		if ($lines) { # successful analysis
 			if (open (LOG, ">>.$pgm.cgi")) {
 				local ($NOW, $wday) = &getTime ();
 				print LOG $wday; # save the day of the week for tracking usage
 				close LOG;
 			}
 		} else {
 			print "<font color=red><b>No output from $pgm. Maybe there is an error in the data?</b></font>\n";
 		}
 		print "</pre>\n";
 	}
}

sub beginPage {
 	local ($pgm, $desc) = (@_);
 	print "Content-type: text/html\r\n\r\n";
 	print "<html lang=\"en\">
 	<head>
 		<title>$pgm: $desc</title>
 		<link rel=\"stylesheet\" href=\"stat.css\" type=\"text/css\"/>
 		<script language=\"JavaScript\" src=\"stat.js\" type=\"text/javascript\"></script>
 	</head>
 	<body bgcolor= \"#FFFFFF\">
 	<h1>$pgm: $desc</h1>
 	";
 	&saveCookie($pgm);
}

sub endPage {
 	print "</body></html>\n";
}

sub optVal { # name label size
 	local ($name, $label, $size) = (@_);
 	@options = (@options, $name);
 	$size = 4 unless $size;
 	print "<nobr>";
 	print "<label class=\"normal\" for=\"$label\">";
 	print "$label:";
 	print "</label>";
 	print "<input type=\"text\" size=\"$size\" name=\"$name\" id=\"$label\" value=\"$F{$name}\" >";
 	print "</nobr>\n";
}

sub optBool { # name label
 	local ($name, $label) = (@_);
 	$isBoolean{$name} = 1;
 	@options = (@options, $name);
 	print "<nobr>";
 	print "<input type=\"checkbox\" name=\"$name\" value=\"checked\" id=\"$label\" $F{$name} />";
 	print "<label class=\"normal\" for=\"$label\">";
 	print "$label";
 	print "</label>";
 	print "</nobr>\n";
}

sub beginSection { # label
 	local ($label, $level) = (@_);
 	$level = "top" unless $level;
 	print "<fieldset class=\"$level\"> <legend>$label</legend>\n";
}

sub endSection {
 	print "</fieldset>\n";
}

sub dataArea {
 	local ($msg, $rand) = (@_);
 	$msg = "Enter numbers separated by space or newlines" unless $msg;
 	$F{'rows'} = 5 unless $F{'rows'};
 	$F{'cols'} = 50 unless $F{'cols'};
 	$plus = "<tt style=\"border: 1px solid blue\">+</tt>";
 	$minus = "<tt style=\"border: 1px solid blue\">-</tt>";
 	$or = " ";

 	print "
 	<fieldset>
 	<legend><label for=data>Data</label></legend>
 	<textarea title=\"$msg\" name=data id=data rows=$F{'rows'} cols=$F{'cols'} wrap=virtual>$F{'data'}</textarea>
 	<div>

 	<fieldset class=inner>
 	<legend>Data Entry Options</legend>
 	<label class=normal for=rows>Height:</label><input type=text name=rows onChange=\"update(0,0);\" id=rows size=2 value=\"$F{'rows'}\">
 	<a title=\"add a row\" onclick=\"update(1,0);\">$plus</a>
 		$or
 	<a title=\"delete a row\" onclick=\"update(-1,0);\">$minus</a>
 	&nbsp;
 	<nobr>
 		<label class=normal for=cols>Width:</label><input type=text name=cols onChange=\"update(0,0);\" id=cols size=2 value=\"$F{'cols'}\">
 		<a title=\"wider\" onclick=\"update(0,5);\">$plus</a>
 			$or
 		<a title=\"narrower\" onclick=\"update(0,-5);\">$minus</a>
 	</nobr>
 	";
 	$rand && print "
 		&nbsp;
 		<nobr>
 			<label class=normal for=rand title=\"Use this many random normal values as the data\">Random Cases:</label><input type=text name=rand id=rand size=3 value=\"$F{'rand'}\">
 		</nobr>
 		&nbsp;
 		<nobr>
 			<label class=normal for=vars title=\"Use this many variables per case\">Variables:</label><input type=text name=vars id=vars size=2 value=\"$F{'vars'}\">
 		</nobr>
 	";
 	print "</fieldset>
 	</fieldset>
 	</div>\n";
}

sub beginForm {
local ($pgm, $desc, $other) = (@_);
print "
<form name=form method=POST onLoad=\"setFocus();\" action=\"$pgm.cgi\">
 	<input type=submit accesskey=r title=\"accesskey: r\" value=\"Run $pgm\">
 	<font size=2>
 	<a target=new title=\"Display the manual entry for $pgm in another window\" href=\"../doc/$pgm.htm\">Help</a>
|
 	<a target=new title=\"Show an example in a new window\" href=\"$ENV{'SCRIPT_NAME'}?example=true\">Example</a>
|
 	<a target=new title=\"Display the |STAT home page in another window\" href=\"..\">Home</a>
<!--|
 	<a title=\"Download Linux binary\" type=\"application/octet-stream\" href=\"$pgm\">Binary</a>
 	-->
|
 	<a title=\"Privacy Policy\" href=\"index.htm#privacy\">Privacy</a>
";

 	if ($other) { # another program
 		local (@others) = split (/,/, $other);
 		for $other (@others) {
 			local ($pgm) = $other;
 			$pgm =~ s/[&].*$//;
 			print "|
 				<a href=\"$pgm.cgi\" title=\"Copy this screen to $pgm\" onClick=\"other('$other'); return false;\">$pgm</a>\n";
 		}
 	}
 	print "</font><p>\n";
}

sub endForm { # showData
 	local ($showData, $rand) = (@_);
 	if ($never) {
 	  &beginSection("Help Options", "top");
 		&optBool("L", "Show Limits");
 		&optBool("O", "Show Options");
 		&optBool("V", "Show Version");
 	  &endSection();
 	}
 	&dataArea($showData, $rand) if $showData;
 	print "</form>\n";
}

sub isSaved {
 	local ($opt) = (@_);
 	($opt eq 'parms') && return true;
 	($opt eq 'rows') && return true;
 	($opt eq 'cols') && return true;
 	($opt eq 'data') && return false; # check size?
 	($opt =~ /^\w$/) && return true;
 	return false;
}

sub saveCookie {
 	local ($ident) = (@_);
 	$ident = "stat" unless $ident;
 	local ($f);
 	for $f (keys (%F)) {
 		if (&isSaved($f)) {
 			$url .= "$f=" . &encode($F{$f}) . "&";
 		}
 	}
 	print "<script language=\"JavaScript\">
 		setCookie(\"$ident\", \"$url\");
 	</script>\n";
}

sub getRand { # n
 	local ($n, $vars) = (@_);
 	local ($total) = $n * $vars;
 	local ($cmd) = "./probdist r n $total |";
 	local ($data, $value);
 	if (open (RAND, $cmd)) {
 		while (<RAND>) {
 			chop;
 			$data .= sprintf("%10.6f", $_);
 			$total--;
 			if (($total % $vars) == 0) {
 				$data .= "\n";
 			} else {
 				$data .= " ";
 			}
 		}
 		# print "<div>$data</div>";
 		close RAND;
 		return $data;
 	}
}

1;
fpack:!@#$%^&*(): stat.js
function other(pgmspec) {
 	var parms = pgmspec.split('&');
 	var pgm = parms[0];
 	var url = pgm + '.cgi?';
 	if (document.form.data.value.length < 1000) {
 		url += 'data=' + escape(document.form.data.value);
 	} else {
 		url += 'data=' + escape('too much data to copy');
 	}
 	for (var i=1; i < parms.length; i++) {
 		// alert('Adding to ' + pgm + ' ' + parms[i]);
 		var tmpname = 'document.form.' + parms[i] + '.value';
 		url += '&' + parms[i] + '=' + escape(eval(tmpname));
 	}
 	location = url;
}

function update(dr,dc) {
 	if (dr) {
 		var rows = parseInt(document.form.rows.value) + dr;
 		if (rows < 1)
 			rows = 1;
 		document.form.rows.value = rows;
 	}
 	document.form.data.rows = document.form.rows.value;
 	if (dc) {
 		var cols = parseInt(document.form.cols.value) + dc
 		if (cols < 5)
 			cols = 5;
 		document.form.cols.value = cols;
 	}
 	document.form.data.cols = document.form.cols.value;
 	document.form.data.focus();
}

function setFocus() {
 	if (document.form.data.value.length == 0)
 		document.form.data.focus();
}

function getCookie(Name) {
    var search = Name + "=";
    if (document.cookie.length > 0) {
 	  offset = document.cookie.indexOf(search);
 	  if (offset != -1) {
 		 offset += search.length;
 		 end = document.cookie.indexOf(";", offset);
 		 if (end == -1)
 			end = document.cookie.length;
 		 return unescape(document.cookie.substring(offset, end));
 	  }
    }
}

function setCookie(name, value) {
    var nextyear = new Date();
    nextyear.setFullYear(nextyear.getFullYear()+1);
    document.cookie = name + "=" + escape(value)+";"+"path=/"+
 		";expires=" + nextyear.toGMTString();
}

fpack:!@#$%^&*(): stat.css
h1 {
 	font-size: 150%;
 	color:green;
 	border: 3px solid gray;
 	background: #FFFFEE;
 	padding: 3px
 	}

h2 {
 	font-size: 125%;
 	color:green;
 	border: 2px solid gray;
 	background: #FFFFEE;
 	padding: 3px
 	}

 	ul{margin-bottom:8px;}
 	label.normal {font-size: 75%; font: sans-serif; color: green; }
 	legend {font-size: 75%; font: sans-serif; color: #999 }
 	fieldset {width: 90%}
 	textarea {font-size: 75%}

fpack:!@#$%^&*(): calc.cgi
#! /usr/local/bin/perl

require "./stat.pl";

$pgm = "calc";
$desc = "Algebraic Calculator";

%F = &formdata ($pgm);

$F{'rows'} = 10 unless $F{'rows'};

$F{'example'} && &example(); # defined below

&beginPage($pgm, $desc);

 	&beginForm($pgm, $desc);
 	&endForm("Enter one expression per line");

 	($options, $cmd) = &makeCmd();
 	&runCmd($pgm, $cmd);

&endPage();

sub example {
 	local ($data) = "; quadratic roots\na = 1\nb = 3\nc = 1\n";
 	$data .= "s = b^2 - 4 * a * c\nr = sqrt(s)\n";
 	$data .= "root1 = (-b - r) / (2 * a)\n";
 	$data .= "root2 = (-b + r) / (2 * a)\n";
 	$F{'data'} = $data;
}

fpack:!@#$%^&*(): desc.cgi
#! /usr/local/bin/perl

require "./stat.pl";

$pgm = "desc";
$desc = "Descriptive Statistics";

%F = &formdata ($pgm);

$F{'vars'} = 1 unless $F{'vars'};

$F{'example'} && &example(); # defined below
$F{'data'} = &getRand($F{'rand'}, $F{'vars'}) if $F{'rand'};

&beginPage($pgm, $desc);

 	&beginForm($pgm, $desc);
 	&middleForm(); # defined below
 	&endForm("Enter values separated by spaces or newlines", 1); # include data entry area

 	($options, $cmd) = &makeCmd();
 	&runCmd($pgm, $cmd);

&endPage();

sub middleForm {
 	&beginSection($desc, "top");
 		&optBool("s", "Show Statistics");
 		&optBool("o", "Order Statistics");
 		&optBool("v", "Name=Value Format");
 		&beginSection("Significance Tests", "inner");
 			&optVal("t", "t-test against");
 			&optVal("F", "F-test against");
 		&endSection();
 	&endSection();
 	&beginSection("Histograms and Tables", "top");
 		&optBool("h", "Histogram");
 		&optBool("f", "Frequencies");
 		&optBool("p", "Proportions");
 		&optBool("c", "Cumulative");
 		&beginSection("Formatting and Filtering", "inner");
 			&optVal("i", "Interval");
 			&optVal("m", "Minimum");
 			&optVal("M", "Maximum");
 		&endSection();
 	&endSection();
}

sub example {
 	$F{'rand'} = 250;
 	$F{'i'} = 0.5;
 	$F{'m'} = '-3.75';
 	$F{'M'} = '3.75';
 	$F{'L'} = $F{'O'} = $F{'V'} = "";
 	$F{'o'} = $F{'h'} = $F{'c'} = $F{'f'} = $F{'p'} = 'checked';
 	$F{'F'} = 0;
 	$F{'rows'} = 3;
 	$F{'cols'} = 40;
}

fpack:!@#$%^&*(): oneway.cgi
#! /usr/local/bin/perl

require "./stat.pl";

$pgm = "oneway";
$desc = "One Way Anova";

%F = &formdata ($pgm);

$F{'vars'} = 3 unless $F{'vars'};
$F{'s'} = -1 unless $F{'s'};

$F{'example'} && &example(); # defined below
if ($F{'rand'}) {
 	$F{'data'} = &getRand($F{'rand'}, $F{'vars'});
 	$F{'parms'} = "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z";
}

&beginPage($pgm, $desc);

 	&beginForm($pgm, $desc, "rankind&s&p");
 	&middleForm(); # defined below
 	&endForm("Enter values separated by spaces or newlines. Separate groups with the splitter value.", 1); # include data entry area

 	($options, $cmd) = &makeCmd();
 	&runCmd($pgm, $cmd);

&endPage();

sub middleForm {
 	&beginSection($desc, "top");
 		&optBool("p", "Error Bar Plots");
 		&optBool("u", "Unweighted Means");
 		print "\n<br>";
 		&optVal("s", "Splitter Value");
 		# &optVal('w', "Plot Width", 2);
 		print "\n<br>";
 		&optVal("parms", "Group Names", 60);
 	&endSection();
}

sub example {
 	local ($i, $group, $data);
 	local ($bart) = 20 + int(rand(30));
 	local ($lisa) = 20 + int(rand(20));
 	local ($maggie) = 20 + int(rand(40));
 	for $group ($bart, $lisa, $maggie) {
 		for $i (1 .. $group) {
 			$data .= sprintf("%6.3f ", rand);
 		}
 		$data .= "$F{'s'}\n";
 	}
 	$F{'data'} = $data;
 	$F{'L'} = $F{'O'} = $F{'V'} = "";
 	$F{'parms'} = "bart lisa maggie";
 	$F{'p'} = "checked";
 	$F{'rows'} = 3;
 	$F{'cols'} = 50;
}

fpack:!@#$%^&*(): pair.cgi
#! /usr/local/bin/perl

require "./stat.pl";

$pgm = "pair";
$desc = "Paired Data Analysis";

%F = &formdata ($pgm);

$F{'vars'} = 2 unless $F{'vars'};

$F{'example'} && &example(); # defined below
$F{'data'} = &getRand($F{'rand'}, $F{'vars'}) if $F{'rand'};

&beginPage($pgm, $desc);

 	&beginForm($pgm, $desc, "rankrel,regress");
 	&middleForm(); # defined below
 	&endForm("Enter two values per line, separated by spaces", 1); # include data entry area

 	($options, $cmd) = &makeCmd();
 	&runCmd($pgm, $cmd);

&endPage();

sub middleForm {
 	&beginSection($desc, "top");
 		&optBool("s", "Show Statistics");
 		&optBool("p", "Show Plot");
 		&optBool("f", "Hide Plot Frame");
 		&beginSection("Data Names", "inner");
 			&optVal("x", "X-axis Name", 20);
 			&optVal("y", "Y-axis Name", 20);
 		&endSection();
 		&beginSection("Plot Size", "inner");
 			&optVal("w", "Width");
 			&optVal("h", "Height");
 			&optVal("c", "Plotting Character", 1);
 		&endSection();
 		&beginSection("Minimum Values", "inner");
 			&optVal("l", "Min X-axis Value");
 			&optVal("b", "Min Y-axis Value");
 		&endSection();
 		&beginSection("Maximum Values", "inner");
 			&optVal("r", "Max X-axis Value");
 			&optVal("t", "Max Y-axis Value");
 		&endSection();
 	&endSection();
}

sub example {
 	local ($data);
 	for $i (1 .. 100) {
 		$data .= "$i	" . 15*log($i) . "\n";
 	}
 	$F{'data'} = $data;
 	$F{'L'} = $F{'O'} = $F{'V'} = "";
 	$F{'p'} = $F{'s'} = "checked";
 	$F{'x'} = "Linear";
 	$F{'y'} = "Natural Logarithm";
 	$F{'rows'} = 3;
 	$F{'cols'} = 30;
}

fpack:!@#$%^&*(): rankind.cgi
#! /usr/local/bin/perl

require "./stat.pl";

$pgm = "rankind";
$desc = "Rank Order Analysis for Independent Groups";

%F = &formdata ($pgm);

$F{'vars'} = 3 unless $F{'vars'};
$F{'s'} = -1 unless $F{'s'};

$F{'example'} && &example(); # defined below
if ($F{'rand'}) {
 	$F{'data'} = &getRand($F{'rand'}, $F{'vars'});
 	$F{'parms'} = "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z";
}

&beginPage($pgm, $desc);

 	&beginForm($pgm, $desc, "oneway&s&p");
 	&middleForm(); # defined below
 	&endForm("Enter values separated by spaces or newlines. Separate groups with the splitter value.", 1); # include data entry area

 	($options, $cmd) = &makeCmd();
 	&runCmd($pgm, $cmd);

&endPage();

sub middleForm {
 	&beginSection($desc, "top");
 		&optBool("p", "Plot Conditions");
 		&optBool("r", "Report Average Ranks");
 		# &optBool("y", "Do Not Use Yates' Correction");
 		print "\n<br>";
 		&optVal("s", "Splitter Value");
 		# &optVal('w', "Plot Width", 2);
 		print "\n<br>";
 		&optVal("parms", "Group Names", 60);
 	&endSection();
}

sub example {
 	local ($i, $group, $data);
 	local ($bart) = 20 + int(rand(30));
 	local ($lisa) = 20 + int(rand(20));
 	local ($maggie) = 20 + int(rand(40));
 	for $group ($bart, $lisa, $maggie) {
 		for $i (1 .. $group) {
 			$data .= sprintf("%6.3f ", rand);
 		}
 		$data .= "$F{'s'}\n";
 	}
 	$F{'data'} = $data;
 	$F{'L'} = $F{'O'} = $F{'V'} = "";
 	$F{'parms'} = "bart lisa maggie";
 	$F{'p'} = "checked";
 	$F{'rows'} = 3;
 	$F{'cols'} = 50;
}

fpack:!@#$%^&*(): rankrel.cgi
#! /usr/local/bin/perl

# TODO automatically increase -c to accept data

require "./stat.pl";

$pgm = "rankrel";
$desc = "Rank Order Analysis for Related Samples";

%F = &formdata ($pgm);

$F{'vars'} = 4 unless $F{'vars'};
$F{'c'} = 100 unless $F{'c'};

$F{'example'} && &example(); # defined below
if ($F{'rand'}) {
 	$F{'data'} = &getRand($F{'rand'}, $F{'vars'});
 	$F{'parms'} = "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z";
}

&beginPage($pgm, $desc);

 	&beginForm($pgm, $desc, "regress&parms,pair");
 	&middleForm(); # defined below
 	&endForm("Enter N values (one for each variables) per line, separated by spaces, starting with the predicted variable.", 1); # include data entry area

 	($options, $cmd) = &makeCmd();
 	&runCmd($pgm, $cmd);

&endPage();

sub middleForm {
 	&beginSection($desc, "top");
 		&optBool("r", "Report Average Ranks");
 		&optBool("s", "Stop Significance Tests");
 		# &optBool("y", "Do Not Use Yates' Correction");
 		print "\n<br>";
 		&optVal('c', "Cases", 3);
 		print "\n<br>";
 		&optVal("parms", "Variable Names", 60);
 	&endSection();
}

sub example {
 	local ($data);
 	for $i (1 .. 100) {
 		$data .= sprintf("%4d %8.4f %8.4f %8.4f\n", $i, log($i), 1/$i, sqrt($i));
 	}
 	$F{'data'} = $data;
 	$F{'r'} = 'checked';
 	$F{'L'} = $F{'O'} = $F{'V'} = "";
 	$F{'parms'} = "x   log(x)   1/x   sqrt(x)";
 	$F{'rows'} = 3;
 	$F{'cols'} = 50;
}

fpack:!@#$%^&*(): regress.cgi
#! /usr/local/bin/perl

require "./stat.pl";

$pgm = "regress";
$desc = "Multiple Regression";

%F = &formdata ($pgm);

$F{'vars'} = 4 unless $F{'vars'};
# $F{'F'} = 10 unless $F{'F'};

$F{'example'} && &example(); # defined below
if ($F{'rand'}) {
 	$F{'data'} = &getRand($F{'rand'}, $F{'vars'});
 	$F{'parms'} = "A B C D E F G H I J";
}

&beginPage($pgm, $desc);

 	&beginForm($pgm, $desc, "rankrel&parms");
 	&middleForm(); # defined below
 	&endForm("Enter N values (one for each variables) per line, separated by spaces, starting with the predicted variable.", 1); # include data entry area

 	($options, $cmd) = &makeCmd();
 	&runCmd($pgm, $cmd);

&endPage();

sub middleForm {
 	&beginSection($desc, "top");
 		&optBool("p", "Partial Correlation");
 		&optBool("r", "Hide Regression");
 		&optBool("c", "Covariance Matrix");
 		&optBool("s", "Sums of Squares");
 		# print "\n<br>";
 		# &optVal('F', "Format Width", 2);
 		print "\n<br>";
 		&optVal("parms", "Variable Names", 60);
 	&endSection();
}

sub example {
 	local ($data);
 	for $i (1 .. 100) {
 		$data .= sprintf("%4d %8.4f %8.4f %8.4f\n", $i, log($i), 1/$i, sqrt($i));
 	}
 	$F{'data'} = $data;
 	$F{'L'} = $F{'O'} = $F{'V'} = "";
 	$F{'parms'} = "x   log(x)   1/x   sqrt(x)";
 	$F{'rows'} = 3;
 	$F{'cols'} = 50;
}

fpack:!@#$%^&*(): makefile
files= stat.pl stat.js stat.css *.cgi makefile
bu:
 	ci -l ${files}

install: bu
 	cp ${files} ../

fpack:
 	fpack ${files} | pine yahoo
fpack:!@#$%^&*():

From perlman@turing.acm.org Sun Oct 22 13:58:36 2006 -0400
Status: 
X-Status: 
X-Keywords:
Date: Sun, 22 Oct 2006 13:58:36 -0400 (EDT)
From: Gary PERLMAN <perlman@turing.acm.org>
To: xiehb03 <xiehb03@gmail.com>
Subject: Re: |STAT
In-Reply-To: <200610220916446406450@gmail.com>
Message-ID: <Pine.LNX.4.64.0610221358300.30898@turing.acm.org>
References: <200610220916446406450@gmail.com>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed

Thank you for your interest in |STAT data manipulation and analysis software.

UNIX |STAT for is now (only) available via Web browsers at a secret location.
 	http://www.hcibib.org/stat/xyzzy/

To obtain UNIX |STAT files, please follow the instructions at:
 	http://www.acm.org/~perlman/stat/#access
There are installation notes (e.g., for Mac OS X and Linux) at:
 	http://www.acm.org/~perlman/stat/installation.txt

DOS |STAT executables and documentation are available as a WinZip file:
 	http://www.acm.org/~perlman/stat/DOS-STAT.ZIP

HTML documentation is available from the |STAT home page:
 	http://www.acm.org/~perlman/stat/

On Sun, 22 Oct 2006, xiehb03 wrote:

>   I AGREE TO ADHERE TO THE CONDITIONS OF USING |STAT.
>   I AGREE NOT TO SHARE THE |STAT LOCATION WITH OTHERS.
>

From perlman@turing.acm.org Sun Oct 22 16:01:30 2006 -0400
Status: 
X-Status: 
X-Keywords:
Date: Sun, 22 Oct 2006 16:01:29 -0400 (EDT)
From: Gary PERLMAN <perlman@turing.acm.org>
To: "Gary Perlman @ Yahoo" <garyperlman@yahoo.com>
Subject: web|stat
Message-ID: <Pine.LNX.4.64.0610221601220.5707@turing.acm.org>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed

Listing of files in this pack:
   stat.pl
   stat.js
   stat.css
   calc.cgi
   desc.cgi
   oneway.cgi
   pair.cgi
   rankind.cgi
   rankrel.cgi
   regress.cgi
   makefile
   index.htm
fpack:!@#$%^&*(): stat.pl
sub getTime # [yearonly]
{
 	local ($yearonly) = (@_);
 	local ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) =
 		localtime;
 	return($year+1900) if $yearonly;
 	local ($timestring);
 	$timestring = sprintf ("%02d-%02d-%02d %02d:%02d:%02d",
 		$year+1900, $mon+1, $mday, $hour, $min, $sec);
 	return ($timestring, $wday);
}

sub encode {
 	local ($str) = (@_);
 	# $str =~ s/([^A-Za-z0-9])/sprintf("%%%02X", ord($1))/seg;
 	$str =~ s/(\W)/sprintf("%%%02X", ord($1))/seg;
 	return $str;
}

sub formdata1 { # nil -> %F
     local (*formdata);
     if ($ENV{'REQUEST_METHOD'} eq 'POST') {
         read (STDIN, $F, $ENV{'CONTENT_LENGTH'});
     } else {
         $F = $ENV{'QUERY_STRING'};
     }
     @formdata = split (/&/, $F);
     for (@formdata) {
         local ($name, $value) = split (/=/, $_, 2);
         $value =~ s/\+/ /g;
         $value =~ s/%([\dA-Fa-f][\dA-Fa-f])/pack ("C", hex ($1))/eg;
         $F{$name} .= "\n" if $F{$name};
         $F{$name} .= $value;
     }
 	$F{'clear'} && clearForm();
     return (%F);
}

sub clearForm {
 	local ($f);
 	for $f (keys (%F)) {
 		$F{$f} = "";
 	}
}

sub formdata { # [ident] -> %F
 	local ($ident) = (@_);
     local (*formdata);
     if ($ENV{'REQUEST_METHOD'} eq 'POST') {
         read (STDIN, $F, $ENV{'CONTENT_LENGTH'});
     } else {
         $F = $ENV{'QUERY_STRING'};
 		if (($F eq "") && $ident) {
 			$F = $ENV{'HTTP_COOKIE'};
 			# print "<pre>xyzzy got cookie: $F</pre>\n";
 			if ($F =~ /.*$ident=([^;]*)/) { # $ident is cookie name
 				$F = $1;
 				$F =~ s/%([\dA-Fa-f][\dA-Fa-f])/pack ("C", hex ($1))/eg; # decode
 				# now $F looks like a=xxx&b=yyy&c=zzz
 			}
 		}
     }
     @formdata = split (/&/, $F);
     for (@formdata) {
         local ($name, $value) = split (/=/, $_, 2);
         $value =~ s/\+/ /g;
         $value =~ s/%([\dA-Fa-f][\dA-Fa-f])/pack ("C", hex ($1))/eg;
         $F{$name} .= "\n" if $F{$name};
         $F{$name} .= $value;
     }
 	$F{'clear'} && clearForm();
     return (%F);
}

sub clean {
 	local ($s) = (@_);
 	$s =~ s/['"<>!|\\;]//g;
}

sub makeCmd { # must be run after form has been displayed
 	local ($options, $cmd, $opt);
 	$options = "";
 	for $opt (@options) {
 		if ($isBoolean{$opt}) {
 			$options .= " -$opt" if $F{$opt};
 		} elsif ($opt ne "parms") {
 			$options .= " -$opt '$F{$opt}'" if $F{$opt};
 		}
 	}
 	if ($F{'parms'}) {
 		local ($parm, @parms);
 		@parms  = split /\s+/, $F{'parms'};
 		for $parm (@parms) {
 			$options .= " '$parm'";
 		}
 	}
 	local ($dir) = "./";
 	$cmd = "/bin/echo \"$F{'data'}\" | $dir$pgm $options |";
 	return ($options, $cmd);
}

sub runCmd { # pgm cmd F
 	local ($pgm, $cmd) = (@_);
 	if ($F{'data'} || $F{'L'} || $F{'O'} || $F{'V'}) {
 		open (PIPE, $cmd) or die "can't open pipe";
 		local ($lines) = 0;
 		print "<pre title=\"$pgm $options\">\n";
 		while (<PIPE>) {
 			print;
 			$lines++;
 		}
 		close PIPE;
 		if ($lines) { # successful analysis
 			if (open (LOG, ">>.$pgm.cgi")) {
 				local ($NOW, $wday) = &getTime ();
 				print LOG $wday; # save the day of the week for tracking usage
 				close LOG;
 			}
 		} else {
 			print "<font color=red><b>No output from $pgm. Maybe there is an error in the data?</b></font>\n";
 		}
 		print "</pre>\n";
 	}
}

sub beginPage {
 	local ($pgm, $desc) = (@_);
 	print "Content-type: text/html\r\n\r\n";
 	print "<html lang=\"en\">
 	<head>
 		<title>$pgm: $desc</title>
 		<link rel=\"stylesheet\" href=\"stat.css\" type=\"text/css\"/>
 		<script language=\"JavaScript\" src=\"stat.js\" type=\"text/javascript\"></script>
 	</head>
 	<body bgcolor= \"#FFFFFF\">
 	<h1>$pgm: $desc</h1>
 	";
 	&saveCookie($pgm);
}

sub endPage {
 	print "</body></html>\n";
}

sub optVal { # name label size
 	local ($name, $label, $size) = (@_);
 	@options = (@options, $name);
 	$size = 4 unless $size;
 	print "<nobr>";
 	print "<label class=\"normal\" for=\"$label\">";
 	print "$label:";
 	print "</label>";
 	print "<input type=\"text\" size=\"$size\" name=\"$name\" id=\"$label\" value=\"$F{$name}\" >";
 	print "</nobr>\n";
}

sub optBool { # name label
 	local ($name, $label) = (@_);
 	$isBoolean{$name} = 1;
 	@options = (@options, $name);
 	print "<nobr>";
 	print "<input type=\"checkbox\" name=\"$name\" value=\"checked\" id=\"$label\" $F{$name} />";
 	print "<label class=\"normal\" for=\"$label\">";
 	print "$label";
 	print "</label>";
 	print "</nobr>\n";
}

sub beginSection { # label
 	local ($label, $level) = (@_);
 	$level = "top" unless $level;
 	print "<fieldset class=\"$level\"> <legend>$label</legend>\n";
}

sub endSection {
 	print "</fieldset>\n";
}

sub dataArea {
 	local ($msg, $rand) = (@_);
 	$msg = "Enter numbers separated by space or newlines" unless $msg;
 	$F{'rows'} = 5 unless $F{'rows'};
 	$F{'cols'} = 50 unless $F{'cols'};
 	$plus = "<tt style=\"border: 1px solid blue\">+</tt>";
 	$minus = "<tt style=\"border: 1px solid blue\">-</tt>";
 	$or = " ";

 	print "
 	<fieldset>
 	<legend><label for=data>Data</label></legend>
 	<textarea title=\"$msg\" name=data id=data rows=$F{'rows'} cols=$F{'cols'} wrap=virtual>$F{'data'}</textarea>
 	<div>

 	<fieldset class=inner>
 	<legend>Data Entry Options</legend>
 	<label class=normal for=rows>Height:</label><input type=text name=rows onChange=\"update(0,0);\" id=rows size=2 value=\"$F{'rows'}\">
 	<a title=\"add a row\" onclick=\"update(1,0);\">$plus</a>
 		$or
 	<a title=\"delete a row\" onclick=\"update(-1,0);\">$minus</a>
 	&nbsp;
 	<nobr>
 		<label class=normal for=cols>Width:</label><input type=text name=cols onChange=\"update(0,0);\" id=cols size=2 value=\"$F{'cols'}\">
 		<a title=\"wider\" onclick=\"update(0,5);\">$plus</a>
 			$or
 		<a title=\"narrower\" onclick=\"update(0,-5);\">$minus</a>
 	</nobr>
 	";
 	$rand && print "
 		&nbsp;
 		<nobr>
 			<label class=normal for=rand title=\"Use this many random normal values as the data\">Random Cases:</label><input type=text name=rand id=rand size=3 value=\"$F{'rand'}\">
 		</nobr>
 		&nbsp;
 		<nobr>
 			<label class=normal for=vars title=\"Use this many variables per case\">Variables:</label><input type=text name=vars id=vars size=2 value=\"$F{'vars'}\">
 		</nobr>
 	";
 	print "</fieldset>
 	</fieldset>
 	</div>\n";
}

sub beginForm {
local ($pgm, $desc, $other) = (@_);
print "
<form name=form method=POST onLoad=\"setFocus();\" action=\"$pgm.cgi\">
 	<input type=submit accesskey=r title=\"accesskey: r\" name=run value=\"Run $pgm\">
 	<input type=submit accesskey=c title=\"accesskey: c\" name=clear onClick=\"clearForm('$pgm', document.form); return false;\" value=\"Clear\">
 	<font size=2>
 	<a target=new title=\"Display the manual entry for $pgm in another window\" href=\"../doc/$pgm.htm\">Help</a>
|
 	<a target=new title=\"Show an example in a new window\" href=\"$ENV{'SCRIPT_NAME'}?example=true\">Example</a>
|
 	<a target=new title=\"Display the |STAT home page in another window\" href=\"..\">Home</a>
<!--|
 	<a title=\"Download Linux binary\" type=\"application/octet-stream\" href=\"$pgm\">Binary</a>
 	-->
|
 	<a title=\"Privacy Policy\" href=\"index.htm#privacy\">Privacy</a>
";

 	if ($other) { # another program
 		local (@others) = split (/,/, $other);
 		for $other (@others) {
 			local ($pgm) = $other;
 			$pgm =~ s/[&].*$//;
 			print "|
 				<a href=\"$pgm.cgi\" title=\"Copy this screen to $pgm\" onClick=\"other('$other'); return false;\">$pgm</a>\n";
 		}
 	}
 	print "</font><p>\n";
}

sub endForm { # showData
 	local ($showData, $rand) = (@_);
 	if ($never) {
 	  &beginSection("Help Options", "top");
 		&optBool("L", "Show Limits");
 		&optBool("O", "Show Options");
 		&optBool("V", "Show Version");
 	  &endSection();
 	}
 	&dataArea($showData, $rand) if $showData;
 	print "</form>\n";
}

sub isSaved {
 	local ($opt) = (@_);
 	($opt eq 'parms') && return 1;
 	($opt eq 'rows') && return 1;
 	($opt eq 'cols') && return 1;
 	($opt eq 'data') && return 0; # TODO: check size?
 	($opt eq 'rand') && return 0;
 	($opt eq 'vars') && return 0;
 	($opt =~ /^\w$/) && return 1;
 	return false;
}

sub saveCookie {
 	local ($ident) = (@_);
 	$ident = "stat" unless $ident;
 	local ($f);
 	for $f (keys (%F)) {
 		if (&isSaved($f)) {
 			$url .= "$f=" . &encode($F{$f}) . "&";
 		}
 	}
 	print "<script language=\"JavaScript\">
 		setCookie(\"$ident\", \"$url\");
 	</script>\n";
}

sub getRand { # n
 	local ($n, $vars) = (@_);
 	local ($total) = $n * $vars;
 	local ($cmd) = "./probdist r n $total |";
 	local ($data, $value);
 	if (open (RAND, $cmd)) {
 		while (<RAND>) {
 			chop;
 			$data .= sprintf("%10.6f", $_);
 			$total--;
 			if (($total % $vars) == 0) {
 				$data .= "\n";
 			} else {
 				$data .= " ";
 			}
 		}
 		# print "<div>$data</div>";
 		close RAND;
 		return $data;
 	}
}

1;
fpack:!@#$%^&*(): stat.js
function other(pgmspec) {
 	var parms = pgmspec.split('&');
 	var pgm = parms[0];
 	var url = pgm + '.cgi?';
 	if (document.form.data.value.length < 1000) {
 		url += 'data=' + escape(document.form.data.value);
 	} else {
 		url += 'data=' + escape('too much data to copy');
 	}
 	for (var i=1; i < parms.length; i++) {
 		// alert('Adding to ' + pgm + ' ' + parms[i]);
 		var tmpname = 'document.form.' + parms[i] + '.value';
 		url += '&' + parms[i] + '=' + escape(eval(tmpname));
 	}
 	location = url;
}

function update(dr,dc) {
 	if (dr) {
 		var rows = parseInt(document.form.rows.value) + dr;
 		if (rows < 1)
 			rows = 1;
 		document.form.rows.value = rows;
 	}
 	document.form.data.rows = document.form.rows.value;
 	if (dc) {
 		var cols = parseInt(document.form.cols.value) + dc
 		if (cols < 5)
 			cols = 5;
 		document.form.cols.value = cols;
 	}
 	document.form.data.cols = document.form.cols.value;
 	document.form.data.focus();
}

function setFocus() {
 	if (document.form.data.value.length == 0)
 		document.form.data.focus();
}

function getCookie(Name) {
    var search = Name + "=";
    if (document.cookie.length > 0) {
 	  offset = document.cookie.indexOf(search);
 	  if (offset != -1) {
 		 offset += search.length;
 		 end = document.cookie.indexOf(";", offset);
 		 if (end == -1)
 			end = document.cookie.length;
 		 return unescape(document.cookie.substring(offset, end));
 	  }
    }
}

function setCookie(name, value) {
    var nextyear = new Date();
    nextyear.setFullYear(nextyear.getFullYear()+1);
    document.cookie = name + "=" + escape(value)+";"+"path=/"+
 		";expires=" + nextyear.toGMTString();
}

function isClearable(e) {
 	if (!e.name)
 		return false;
 	if (e.name == "data" || e.name == "parms" || e.name == 'rand' || e.name == 'vars')
 		return true;
 	if (e.name.length == 1)
 		return true;
 	return false;
}

function clearForm(pgm, form) {
 	setCookie(pgm, "");
 	for (var i = 0; i < form.elements.length; i++) {
 		var e = form.elements[i];
 		if (isClearable(e)) {
 			if (e.type == "text" || e.type == "textarea" || e.type == "password") {
 				e.value = "";
 			} else if (e.type == "radio" || e.type == "checkbox") {
 				e.checked = false;
 			} else if (e.type == "select-one" || e.type == "select-multiple") {
 				for (var o = 1; o < e.options.length; o++)
 					e.options[o].selected = false;
 				e.options[0].selected = true;
 			}
 		}
 	}
}
fpack:!@#$%^&*(): stat.css
h1 {
 	font-size: 150%;
 	color:green;
 	border: 3px solid gray;
 	background: #FFFFEE;
 	padding: 3px
 	}

h2 {
 	font-size: 125%;
 	color:green;
 	border: 2px solid gray;
 	background: #FFFFEE;
 	padding: 3px
 	}

 	ul{margin-bottom:8px;}
 	label.normal {font-size: 75%; font: sans-serif; color: green; }
 	legend {font-size: 75%; font: sans-serif; color: #999 }
 	fieldset {width: 90%}
 	textarea {font-size: 75%}

fpack:!@#$%^&*(): calc.cgi
#! /usr/local/bin/perl

require "./stat.pl";

$pgm = "calc";
$desc = "Algebraic Calculator";

%F = &formdata ($pgm);

$F{'rows'} = 10 unless $F{'rows'};

$F{'example'} && &example(); # defined below

&beginPage($pgm, $desc);

 	&beginForm($pgm, $desc);
 	&endForm("Enter one expression per line");

 	($options, $cmd) = &makeCmd();
 	&runCmd($pgm, $cmd);

&endPage();

sub example {
 	local ($data) = "; quadratic roots\na = 1\nb = 3\nc = 1\n";
 	$data .= "s = b^2 - 4 * a * c\nr = sqrt(s)\n";
 	$data .= "root1 = (-b - r) / (2 * a)\n";
 	$data .= "root2 = (-b + r) / (2 * a)\n";
 	$F{'data'} = $data;
}

fpack:!@#$%^&*(): desc.cgi
#! /usr/local/bin/perl

require "./stat.pl";

$pgm = "desc";
$desc = "Descriptive Statistics";

%F = &formdata ($pgm);

$F{'vars'} = 1 unless $F{'vars'};

$F{'example'} && &example(); # defined below
$F{'data'} = &getRand($F{'rand'}, $F{'vars'}) if $F{'rand'};

&beginPage($pgm, $desc);

 	&beginForm($pgm, $desc);
 	&middleForm(); # defined below
 	&endForm("Enter values separated by spaces or newlines", 1); # include data entry area

 	($options, $cmd) = &makeCmd();
 	&runCmd($pgm, $cmd);

&endPage();

sub middleForm {
 	&beginSection($desc, "top");
 		&optBool("s", "Show Statistics");
 		&optBool("o", "Order Statistics");
 		&optBool("v", "Name=Value Format");
 		&beginSection("Significance Tests", "inner");
 			&optVal("t", "t-test against");
 			&optVal("F", "F-test against");
 		&endSection();
 	&endSection();
 	&beginSection("Histograms and Tables", "top");
 		&optBool("h", "Histogram");
 		&optBool("f", "Frequencies");
 		&optBool("p", "Proportions");
 		&optBool("c", "Cumulative");
 		&beginSection("Formatting and Filtering", "inner");
 			&optVal("i", "Interval");
 			&optVal("m", "Minimum");
 			&optVal("M", "Maximum");
 		&endSection();
 	&endSection();
}

sub example {
 	$F{'rand'} = 250;
 	$F{'i'} = 0.5;
 	$F{'m'} = '-3.75';
 	$F{'M'} = '3.75';
 	$F{'L'} = $F{'O'} = $F{'V'} = "";
 	$F{'o'} = $F{'h'} = $F{'c'} = $F{'f'} = $F{'p'} = 'checked';
 	$F{'F'} = 0;
 	$F{'rows'} = 3;
 	$F{'cols'} = 40;
}

fpack:!@#$%^&*(): oneway.cgi
#! /usr/local/bin/perl

require "./stat.pl";

$pgm = "oneway";
$desc = "One Way Anova";

%F = &formdata ($pgm);

$F{'vars'} = 3 unless $F{'vars'};
$F{'s'} = -1 unless $F{'s'};

$F{'example'} && &example(); # defined below
if ($F{'rand'}) {
 	$F{'data'} = &getRand($F{'rand'}, $F{'vars'});
 	$F{'parms'} = "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z";
}

&beginPage($pgm, $desc);

 	&beginForm($pgm, $desc, "rankind&parms&s&p");
 	&middleForm(); # defined below
 	&endForm("Enter values separated by spaces or newlines. Separate groups with the splitter value.", 1); # include data entry area

 	($options, $cmd) = &makeCmd();
 	&runCmd($pgm, $cmd);

&endPage();

sub middleForm {
 	&beginSection($desc, "top");
 		&optBool("p", "Error Bar Plots");
 		&optBool("u", "Unweighted Means");
 		print "\n<br>";
 		&optVal("s", "Splitter Value");
 		# &optVal('w', "Plot Width", 2);
 		print "\n<br>";
 		&optVal("parms", "Group Names", 60);
 	&endSection();
}

sub example {
 	local ($i, $group, $data);
 	local ($bart) = 20 + int(rand(30));
 	local ($lisa) = 20 + int(rand(20));
 	local ($maggie) = 20 + int(rand(40));
 	for $group ($bart, $lisa, $maggie) {
 		for $i (1 .. $group) {
 			$data .= sprintf("%6.3f ", rand);
 		}
 		$data .= "$F{'s'}\n";
 	}
 	$F{'data'} = $data;
 	$F{'L'} = $F{'O'} = $F{'V'} = "";
 	$F{'parms'} = "bart lisa maggie";
 	$F{'p'} = "checked";
 	$F{'rows'} = 3;
 	$F{'cols'} = 50;
}

fpack:!@#$%^&*(): pair.cgi
#! /usr/local/bin/perl

require "./stat.pl";

$pgm = "pair";
$desc = "Paired Data Analysis";

%F = &formdata ($pgm);

$F{'vars'} = 2 unless $F{'vars'};

$F{'example'} && &example(); # defined below
$F{'data'} = &getRand($F{'rand'}, $F{'vars'}) if $F{'rand'};

&beginPage($pgm, $desc);

 	&beginForm($pgm, $desc, "rankrel,regress");
 	&middleForm(); # defined below
 	&endForm("Enter two values per line, separated by spaces", 1); # include data entry area

 	($options, $cmd) = &makeCmd();
 	&runCmd($pgm, $cmd);

&endPage();

sub middleForm {
 	&beginSection($desc, "top");
 		&optBool("s", "Show Statistics");
 		&optBool("p", "Show Plot");
 		&optBool("f", "Hide Plot Frame");
 		&beginSection("Data Names", "inner");
 			&optVal("x", "X-axis Name", 20);
 			&optVal("y", "Y-axis Name", 20);
 		&endSection();
 		&beginSection("Plot Size", "inner");
 			&optVal("w", "Width");
 			&optVal("h", "Height");
 			&optVal("c", "Plotting Character", 1);
 		&endSection();
 		&beginSection("Minimum Values", "inner");
 			&optVal("l", "Min X-axis Value");
 			&optVal("b", "Min Y-axis Value");
 		&endSection();
 		&beginSection("Maximum Values", "inner");
 			&optVal("r", "Max X-axis Value");
 			&optVal("t", "Max Y-axis Value");
 		&endSection();
 	&endSection();
}

sub example {
 	local ($data);
 	for $i (1 .. 100) {
 		$data .= "$i	" . 15*log($i) . "\n";
 	}
 	$F{'data'} = $data;
 	$F{'L'} = $F{'O'} = $F{'V'} = "";
 	$F{'p'} = $F{'s'} = "checked";
 	$F{'x'} = "Linear";
 	$F{'y'} = "Natural Logarithm";
 	$F{'rows'} = 3;
 	$F{'cols'} = 30;
}

fpack:!@#$%^&*(): rankind.cgi
#! /usr/local/bin/perl

require "./stat.pl";

$pgm = "rankind";
$desc = "Rank Order Analysis for Independent Groups";

%F = &formdata ($pgm);

$F{'vars'} = 3 unless $F{'vars'};
$F{'s'} = -1 unless $F{'s'};

$F{'example'} && &example(); # defined below
if ($F{'rand'}) {
 	$F{'data'} = &getRand($F{'rand'}, $F{'vars'});
 	$F{'parms'} = "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z";
}

&beginPage($pgm, $desc);

 	&beginForm($pgm, $desc, "oneway&parms&s&p");
 	&middleForm(); # defined below
 	&endForm("Enter values separated by spaces or newlines. Separate groups with the splitter value.", 1); # include data entry area

 	($options, $cmd) = &makeCmd();
 	&runCmd($pgm, $cmd);

&endPage();

sub middleForm {
 	&beginSection($desc, "top");
 		&optBool("p", "Plot Conditions");
 		&optBool("r", "Report Average Ranks");
 		# &optBool("y", "Do Not Use Yates' Correction");
 		print "\n<br>";
 		&optVal("s", "Splitter Value");
 		# &optVal('w', "Plot Width", 2);
 		print "\n<br>";
 		&optVal("parms", "Group Names", 60);
 	&endSection();
}

sub example {
 	local ($i, $group, $data);
 	local ($bart) = 20 + int(rand(30));
 	local ($lisa) = 20 + int(rand(20));
 	local ($maggie) = 20 + int(rand(40));
 	for $group ($bart, $lisa, $maggie) {
 		for $i (1 .. $group) {
 			$data .= sprintf("%6.3f ", rand);
 		}
 		$data .= "$F{'s'}\n";
 	}
 	$F{'data'} = $data;
 	$F{'L'} = $F{'O'} = $F{'V'} = "";
 	$F{'parms'} = "bart lisa maggie";
 	$F{'p'} = "checked";
 	$F{'rows'} = 3;
 	$F{'cols'} = 50;
}

fpack:!@#$%^&*(): rankrel.cgi
#! /usr/local/bin/perl

# TODO automatically increase -c to accept data

require "./stat.pl";

$pgm = "rankrel";
$desc = "Rank Order Analysis for Related Samples";

%F = &formdata ($pgm);

$F{'vars'} = 4 unless $F{'vars'};
$F{'c'} = 100 unless $F{'c'};

$F{'example'} && &example(); # defined below
if ($F{'rand'}) {
 	$F{'data'} = &getRand($F{'rand'}, $F{'vars'});
 	$F{'parms'} = "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z";
}

&beginPage($pgm, $desc);

 	&beginForm($pgm, $desc, "regress&parms,pair");
 	&middleForm(); # defined below
 	&endForm("Enter N values (one for each variables) per line, separated by spaces, starting with the predicted variable.", 1); # include data entry area

 	($options, $cmd) = &makeCmd();
 	&runCmd($pgm, $cmd);

&endPage();

sub middleForm {
 	&beginSection($desc, "top");
 		&optBool("r", "Report Average Ranks");
 		&optBool("s", "Stop Significance Tests");
 		# &optBool("y", "Do Not Use Yates' Correction");
 		print "\n<br>";
 		&optVal('c', "Maximum Cases", 3);
 		print "\n<br>";
 		&optVal("parms", "Variable Names", 60);
 	&endSection();
}

sub example {
 	local ($data);
 	for $i (1 .. 25) {
 		$data .= sprintf("%4d %8.4f %8.4f %8.4f\n", $i, log($i), 1/$i, sqrt($i));
 	}
 	$F{'data'} = $data;
 	$F{'r'} = 'checked';
 	$F{'L'} = $F{'O'} = $F{'V'} = "";
 	$F{'parms'} = "x   log(x)   1/x   sqrt(x)";
 	$F{'rows'} = 3;
 	$F{'cols'} = 50;
}

fpack:!@#$%^&*(): regress.cgi
#! /usr/local/bin/perl

require "./stat.pl";

$pgm = "regress";
$desc = "Multiple Regression";

%F = &formdata ($pgm);

$F{'vars'} = 4 unless $F{'vars'};
# $F{'F'} = 10 unless $F{'F'};

$F{'example'} && &example(); # defined below
if ($F{'rand'}) {
 	$F{'data'} = &getRand($F{'rand'}, $F{'vars'});
 	$F{'parms'} = "A B C D E F G H I J";
}

&beginPage($pgm, $desc);

 	&beginForm($pgm, $desc, "rankrel&parms");
 	&middleForm(); # defined below
 	&endForm("Enter N values (one for each variable) per line, separated by spaces, starting with the predicted variable.", 1); # include data entry area

 	($options, $cmd) = &makeCmd();
 	&runCmd($pgm, $cmd);

&endPage();

sub middleForm {
 	&beginSection($desc, "top");
 		&optBool("p", "Partial Correlation");
 		&optBool("r", "Hide Regression");
 		&optBool("c", "Covariance Matrix");
 		&optBool("s", "Sums of Squares");
 		# print "\n<br>";
 		# &optVal('F', "Format Width", 2);
 		print "\n<br>";
 		&optVal("parms", "Variable Names", 60);
 	&endSection();
}

sub example {
 	local ($data);
 	for $i (1 .. 25) {
 		$data .= sprintf("%4d %8.4f %8.4f %8.4f\n", $i, log($i), 1/$i, sqrt($i));
 	}
 	$F{'data'} = $data;
 	$F{'L'} = $F{'O'} = $F{'V'} = "";
 	$F{'parms'} = "x   log(x)   1/x   sqrt(x)";
 	$F{'rows'} = 3;
 	$F{'cols'} = 50;
}

fpack:!@#$%^&*(): makefile
files= stat.pl stat.js stat.css *.cgi makefile index.htm
bu:
 	ci -l ${files}

install: bu
 	cp ${files} ../

fpack:
 	fpack ${files} | pine yahoo
fpack:!@#$%^&*(): index.htm
<html lang="en">
<head>
<link rel="stylesheet" href="/perlman/stat/form/stat.css" type="text/css" media="all" />
<title>|STAT Web Forms</title>
</head>
<body>

<h1><a title="|STAT Home Page" href="..">|STAT</a> Web Forms</h1>

<p>
There are web forms for several |STAT programs.
<ul>
 	<li><b><a href="/perlman/stat/form/calc.cgi">calc</a></b>: (Algebraic Calculator)
 		<div>
 		</div>
 	<li><b><a href="/perlman/stat/form/desc.cgi">desc</a></b>: (Descriptive Statistics)
 		<div>
 		</div>
 	<li><b><a href="/perlman/stat/form/pair.cgi">pair</a></b>: (Paired Data Analysis)
 		<div>
 		</div>
 	<li><b><a href="/perlman/stat/form/regress.cgi">regress</a></b>: (Multiple Regression)
 		<div>
 		</div>
 	<li><b><a href="/perlman/stat/form/rankrel.cgi">rankrel</a></b>: (Rank Order Analysis for Related Samples)
 		<div>
 			This program does rank ordinal (non-parametric) analyses of related samples.
 			When there is paired data, <tt>rankrel</tt> is the non-parametric
 			counterpart to <tt>pair</tt>.
 			With more variables, it corresponds most closely with <tt>regress</tt>.
 		</div>
 	<li><b><a href="/perlman/stat/form/oneway.cgi">oneway</a></b>: (One Way Analysis of Variance)
 		<div>
 		</div>
 	<li><b><a href="/perlman/stat/form/rankind.cgi">rankind</a></b>: (Rank Order Analysis for Independent Groups)
 		<div>
 			This program does rank ordinal (non-parametric) analyses of independent
 			groups, and is the non-paramteric counterpart to <tt>oneway</tt>.
 		</div>
</ul>

<a name="privacy">
<h2>|STAT Web Form Privacy Policy</h2>
</a>
<p>
The day-of-the-week of successful analyses is recorded in a log file.
Choice of options may at some time be recorded.
No records of data are kept.

<p>
Your most recent settings are stored in a cookie on your computer.
Pressing the <b>Clear</b> button clears the form and the cookie.

</body>
</html>
fpack:!@#$%^&*():

From perlman@turing.acm.org Wed Oct 25 10:24:03 2006 -0400
Status: 
X-Status: 
X-Keywords:
Date: Wed, 25 Oct 2006 10:24:03 -0400 (EDT)
From: Gary PERLMAN <perlman@turing.acm.org>
To: Christine Watson <christine.watson@gmail.com>
Subject: Re: |STAT request
In-Reply-To: <f8fe2e40610241759p5c3ee38di8e17fc641efd756b@mail.gmail.com>
Message-ID: <Pine.LNX.4.64.0610251023560.1718@turing.acm.org>
References: <f8fe2e40610241759p5c3ee38di8e17fc641efd756b@mail.gmail.com>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed

Thank you for your interest in |STAT data manipulation and analysis software.

UNIX |STAT for is now (only) available via Web browsers at a secret location.
 	http://www.hcibib.org/stat/xyzzy/

To obtain UNIX |STAT files, please follow the instructions at:
 	http://www.acm.org/~perlman/stat/#access
There are installation notes (e.g., for Mac OS X and Linux) at:
 	http://www.acm.org/~perlman/stat/installation.txt

DOS |STAT executables and documentation are available as a WinZip file:
 	http://www.acm.org/~perlman/stat/DOS-STAT.ZIP

HTML documentation is available from the |STAT home page:
 	http://www.acm.org/~perlman/stat/

On Tue, 24 Oct 2006, Christine Watson wrote:

> Please send the Web address of |STAT.  Thanks!
>
> I AGREE TO ADHERE TO THE CONDITIONS OF USING |STAT.
> I AGREE NOT TO SHARE THE |STAT LOCATION WITH OTHERS.
>

From perlman@turing.acm.org Wed Oct 25 14:39:48 2006 -0400
Status: 
X-Status: 
X-Keywords:
Date: Wed, 25 Oct 2006 14:39:48 -0400 (EDT)
From: Gary PERLMAN <perlman@turing.acm.org>
To: Nick Gerner <ngerner@microsoft.com>
Subject: Re: |STAT request
In-Reply-To: <D10544C1E629B344A0AF1BF7D2A84D05A7287D52@NA-EXMSG-C109.redmond.corp.microsoft.com>
Message-ID: <Pine.LNX.4.64.0610251439410.26973@turing.acm.org>
References: <D10544C1E629B344A0AF1BF7D2A84D05A7287D52@NA-EXMSG-C109.redmond.corp.microsoft.com>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed

Thank you for your interest in |STAT data manipulation and analysis software.

UNIX |STAT for is now (only) available via Web browsers at a secret location.
 	http://www.hcibib.org/stat/xyzzy/

To obtain UNIX |STAT files, please follow the instructions at:
 	http://www.acm.org/~perlman/stat/#access
There are installation notes (e.g., for Mac OS X and Linux) at:
 	http://www.acm.org/~perlman/stat/installation.txt

DOS |STAT executables and documentation are available as a WinZip file:
 	http://www.acm.org/~perlman/stat/DOS-STAT.ZIP

HTML documentation is available from the |STAT home page:
 	http://www.acm.org/~perlman/stat/

On Wed, 25 Oct 2006, Nick Gerner wrote:

>   I AGREE TO ADHERE TO THE CONDITIONS OF USING |STAT.
>   I AGREE NOT TO SHARE THE |STAT LOCATION WITH OTHERS.
>
>
>
> Nick Gerner
> SDET Real Time Media
> Still using e-mail?? Get Live!  http://otgweb/rtc
> We're hiring: http://rtcjobs<http://rtcjobs/>
>

From perlman@turing.acm.org Wed Oct 25 21:45:32 2006 -0400
Status: 
X-Status: 
X-Keywords:
Date: Wed, 25 Oct 2006 21:45:32 -0400 (EDT)
From: Gary PERLMAN <perlman@turing.acm.org>
To: Cory Hicks <cmhicks@acm.org>
Subject: Re: |STAT 5.4
In-Reply-To: <Pine.LNX.4.58.0610251547160.30362@webby.spider.lan>
Message-ID: <Pine.LNX.4.64.0610252145250.25337@turing.acm.org>
References: <Pine.LNX.4.58.0610251547160.30362@webby.spider.lan>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed

Thank you for your interest in |STAT data manipulation and analysis software.

UNIX |STAT for is now (only) available via Web browsers at a secret location.
 	http://www.hcibib.org/stat/xyzzy/

To obtain UNIX |STAT files, please follow the instructions at:
 	http://www.acm.org/~perlman/stat/#access
There are installation notes (e.g., for Mac OS X and Linux) at:
 	http://www.acm.org/~perlman/stat/installation.txt

DOS |STAT executables and documentation are available as a WinZip file:
 	http://www.acm.org/~perlman/stat/DOS-STAT.ZIP

HTML documentation is available from the |STAT home page:
 	http://www.acm.org/~perlman/stat/

On Wed, 25 Oct 2006, Cory Hicks wrote:

> I AGREE TO ADHERE TO THE CONDITIONS OF USING |STAT.
> I AGREE NOT TO SHARE THE |STAT PASSWORD WITH OTHERS.
>

From perlman@turing.acm.org Thu Oct 26 19:32:16 2006 -0400
Status: 
X-Status: 
X-Keywords:
Date: Thu, 26 Oct 2006 19:32:15 -0400 (EDT)
From: Gary PERLMAN <perlman@turing.acm.org>
To: Jedediah Allen <jwa204@lehigh.edu>
Subject: Re: |STAT request
In-Reply-To: <abba9a4b25376cab7783761e2a60e236@lehigh.edu>
Message-ID: <Pine.LNX.4.64.0610261932050.29472@turing.acm.org>
References: <abba9a4b25376cab7783761e2a60e236@lehigh.edu>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed

Thank you for your interest in |STAT data manipulation and analysis software.

UNIX |STAT for is now (only) available via Web browsers at a secret location.
 	http://www.hcibib.org/stat/xyzzy/

To obtain UNIX |STAT files, please follow the instructions at:
 	http://www.acm.org/~perlman/stat/#access
There are installation notes (e.g., for Mac OS X and Linux) at:
 	http://www.acm.org/~perlman/stat/installation.txt

DOS |STAT executables and documentation are available as a WinZip file:
 	http://www.acm.org/~perlman/stat/DOS-STAT.ZIP

HTML documentation is available from the |STAT home page:
 	http://www.acm.org/~perlman/stat/

On Thu, 26 Oct 2006, Jedediah Allen wrote:

> Dr. Perlman,
>
> I agree to adhere to the conditions of using |STAT.
> I agree not to share the |STAT location with others.
>
> Thank you,
> Jed
>

From perlman@turing.acm.org Fri Oct 27 11:38:38 2006 -0400
Status: 
X-Status: 
X-Keywords:
Date: Fri, 27 Oct 2006 11:38:38 -0400 (EDT)
From: Gary PERLMAN <perlman@turing.acm.org>
To: Ken Seergobin <kseergobin@gmail.com>
Subject: Re: |STAT
In-Reply-To: <47a917a60610262348r13668ee1ge79a256f073f2076@mail.gmail.com>
Message-ID: <Pine.LNX.4.64.0610271138300.3672@turing.acm.org>
References: <47a917a60610262348r13668ee1ge79a256f073f2076@mail.gmail.com>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed

Thank you for your interest in |STAT data manipulation and analysis software.

UNIX |STAT for is now (only) available via Web browsers at a secret location.
 	http://www.hcibib.org/stat/xyzzy/

To obtain UNIX |STAT files, please follow the instructions at:
 	http://www.acm.org/~perlman/stat/#access
There are installation notes (e.g., for Mac OS X and Linux) at:
 	http://www.acm.org/~perlman/stat/installation.txt

DOS |STAT executables and documentation are available as a WinZip file:
 	http://www.acm.org/~perlman/stat/DOS-STAT.ZIP

HTML documentation is available from the |STAT home page:
 	http://www.acm.org/~perlman/stat/

On Fri, 27 Oct 2006, Ken Seergobin wrote:

> I AGREE TO ADHERE TO THE CONDITIONS OF USING |STAT.
> I AGREE NOT TO SHARE THE |STAT LOCATION WITH OTHERS.
>
> Thanks,
> Ken
>

From perlman@turing.acm.org Sun Oct 29 13:24:55 2006 -0500
Status: 
X-Status: 
X-Keywords:
Date: Sun, 29 Oct 2006 13:24:55 -0500 (EST)
From: Gary PERLMAN <perlman@turing.acm.org>
To: "Plaisant, Catherine" <plaisant@cs.umd.edu>
cc: director@hcibib.org
Subject: Re: HCIBIB Search Gone
In-Reply-To: <44ECC48C52C97040BACBB07269CEEE463CA1A9@delegate.pc.cs.umd.edu>
Message-ID: <Pine.LNX.4.64.0610291324470.9243@turing.acm.org>
References: <44ECC48C52C97040BACBB07269CEEE463CA1A9@delegate.pc.cs.umd.edu>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed

Thank you for your interest in searching the HCI Bibliography.
In the week after the search service was turned off, I received
three e-mails, representing four disappointed researchers.
Despite this clear lack of interest, I am willing to put some
effort into reestablishing some sort of service. I have changed
the site's settings so the data files are now indexed in google,
 	http://www.google.com/search?q=site%3Ahcibib.org%2Fbibdata+translation
but that is unfortunately at the file not the record level.
Perhaps I could create a subsite with one record per file.

I am open to suggestions of what kind of search engine I could
install. Given the quirky syntax and years of bug problems,
I am not planning to work with the glimpse search engine that
was used for years. Something simple, free, open source...

Gary Perlman, Director, HCI Bibliography Project
mailto:director@hcibib.org  http://hcibib.org/
On Fri, 20 Oct 2006, Plaisant, Catherine wrote:

> HI Gary... please bring back HCIBIB soon!!!
>
>
>
>  -- from Ben Shneiderman sitting with Catherine...
>
>
>
> Catherine Plaisant, PhD
>
> Human-Computer Interaction Laboratory
>
> University of Maryland
>
> (301) 405-2768
>
> plaisant@umd.edu
>
> http://www.cs.umd.edu/hcil/members/cplaisant/
>
>
>
>

From perlman@turing.acm.org Sun Oct 29 13:25:19 2006 -0500
Status: 
X-Status: 
X-Keywords:
Date: Sun, 29 Oct 2006 13:25:19 -0500 (EST)
From: Gary PERLMAN <perlman@turing.acm.org>
To: Susanne Jul <sjul@acm.org>
cc: director@hcibib.org
Subject: Re: HCIBIB Search Gone
In-Reply-To: <45398B89.5030507@acm.org>
Message-ID: <Pine.LNX.4.64.0610291325010.9243@turing.acm.org>
References: <45398B89.5030507@acm.org>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed

Thank you for your interest in searching the HCI Bibliography.
In the week after the search service was turned off, I received
three e-mails, representing four disappointed researchers.
Despite this clear lack of interest, I am willing to put some
effort into reestablishing some sort of service. I have changed
the site's settings so the data files are now indexed in google,
 	http://www.google.com/search?q=site%3Ahcibib.org%2Fbibdata+translation
but that is unfortunately at the file not the record level.
Perhaps I could create a subsite with one record per file.

I am open to suggestions of what kind of search engine I could
install. Given the quirky syntax and years of bug problems,
I am not planning to work with the glimpse search engine that
was used for years. Something simple, free, open source...

Gary Perlman, Director, HCI Bibliography Project
mailto:director@hcibib.org  http://hcibib.org/

On Fri, 20 Oct 2006, Susanne Jul wrote:

> Demand, demand, demand...
>
> Thanks,
> -- Susanne
>

From perlman@turing.acm.org Sun Oct 29 13:26:11 2006 -0500
Status: 
X-Status: 
X-Keywords:
Date: Sun, 29 Oct 2006 13:26:11 -0500 (EST)
From: Gary PERLMAN <perlman@turing.acm.org>
To: Stanley Page <PageSR@ldschurch.org>
cc: director@hcibib.org
Subject: Re: HCIBIB Search Gone
In-Reply-To: <45420A990200005800011AB3@inet-wh2.gmhwh.org>
Message-ID: <Pine.LNX.4.64.0610291326010.9243@turing.acm.org>
References: <45420A990200005800011AB3@inet-wh2.gmhwh.org>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed

Thank you for your interest in searching the HCI Bibliography.
In the week after the search service was turned off, I received
three e-mails, representing four disappointed researchers.
Despite this clear lack of interest, I am willing to put some
effort into reestablishing some sort of service. I have changed
the site's settings so the data files are now indexed in google,
 	http://www.google.com/search?q=site%3Ahcibib.org%2Fbibdata+translation
but that is unfortunately at the file not the record level.
Perhaps I could create a subsite with one record per file.

I am open to suggestions of what kind of search engine I could
install. Given the quirky syntax and years of bug problems,
I am not planning to work with the glimpse search engine that
was used for years. Something simple, free, open source...

Gary Perlman, Director, HCI Bibliography Project
mailto:director@hcibib.org  http://hcibib.org/

On Fri, 27 Oct 2006, Stanley Page wrote:

> We need search back.
>
> Stan Page
> pagesr@ldschurch.org
>
>
> ----------------------------------------------------------------------
> NOTICE: This email message is for the sole use of the intended recipient(s) and may contain confidential and privileged information. Any unauthorized review, use, disclosure or distribution is prohibited. If you are not the intended recipient, please contact the sender by reply email and destroy all copies of the original message.

From perlman@turing.acm.org Tue Oct 31 14:14:41 2006 -0500
Status: 
X-Status: 
X-Keywords:
Date: Tue, 31 Oct 2006 14:14:41 -0500 (EST)
From: Gary PERLMAN <perlman@turing.acm.org>
To: "Shneiderman, Ben" <ben@cs.umd.edu>
cc: "Plaisant, Catherine" <plaisant@cs.umd.edu>, 
    Gary perlman <perlman@turing.acm.org>
Subject: RE: HCIBIB Search Gone
In-Reply-To: <44ECC48C52C97040BACBB07269CEEE462A8269@delegate.pc.cs.umd.edu>
Message-ID: <Pine.LNX.4.64.0610311407350.2090@turing.acm.org>
References: <44ECC48C52C97040BACBB07269CEEE463CA413@delegate.pc.cs.umd.edu>
 <44ECC48C52C97040BACBB07269CEEE462A8269@delegate.pc.cs.umd.edu>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed

Thanks for caring, Ben.

SIGCHI can't keep its website running, so I don't know what they would do with
such a request. The HCIBIB website does not have a searchbox because ACM does
not know how to configure its server and does not answer email requests.
Maybe SIGIR. I'll check out: http://www.acm.org/sigs/sigir/resources.html

Gary

On Mon, 30 Oct 2006, Shneiderman, Ben wrote:

> Hi Gary,
>
>  HCIBIB is a valuable service.  If you got three emails that probably means 30-60 people were disappointed.
>
>  I know that you have worked hard to make HCIBIB go and that you can't do much now... so it is time to ask for some help.  I propose you send a note to chi-ec@acm.org  to reach the CHI Executive Council, or others in the SIGCHI leadership.  If you copy to me, then I will write a note encouraging them to seek other volunteers to help out or take over.
>
>  Maybe there are others in the SIGIR community we could draw on for help.
>
>   Let me know how I can help get you the assistance you need to continue this important service.
>
>    Best wishes... Ben S
>
>
> -----Original Message-----
> From: Plaisant, Catherine
> Sent: Sun 10/29/2006 6:38 PM
> To: Shneiderman, Ben
> Subject: FW: HCIBIB Search Gone
>
>
>
> -----Original Message-----
> From: Gary PERLMAN [mailto:perlman@turing.acm.org]
> Sent: Sunday, October 29, 2006 1:25 PM
> To: Plaisant, Catherine
> Cc: director@hcibib.org
> Subject: Re: HCIBIB Search Gone
>
> Thank you for your interest in searching the HCI Bibliography.
> In the week after the search service was turned off, I received
> three e-mails, representing four disappointed researchers.
> Despite this clear lack of interest, I am willing to put some
> effort into reestablishing some sort of service. I have changed
> the site's settings so the data files are now indexed in google,
> 	http://www.google.com/search?q=site%3Ahcibib.org%2Fbibdata+translation
> but that is unfortunately at the file not the record level.
> Perhaps I could create a subsite with one record per file.
>
> I am open to suggestions of what kind of search engine I could
> install. Given the quirky syntax and years of bug problems,
> I am not planning to work with the glimpse search engine that
> was used for years. Something simple, free, open source...
>
> Gary Perlman, Director, HCI Bibliography Project
> mailto:director@hcibib.org  http://hcibib.org/
> On Fri, 20 Oct 2006, Plaisant, Catherine wrote:
>
>> HI Gary... please bring back HCIBIB soon!!!
>>
>>
>>
>>  -- from Ben Shneiderman sitting with Catherine...
>>
>>
>>
>> Catherine Plaisant, PhD
>>
>> Human-Computer Interaction Laboratory
>>
>> University of Maryland
>>
>> (301) 405-2768
>>
>> plaisant@umd.edu
>>
>> http://www.cs.umd.edu/hcil/members/cplaisant/
>>
>>
>>
>>
>
>
>

