From MAILER-DAEMON Thu Jun  1 13:16:28 2006
Date: 01 Jun 2006 13:16:28 -0400
From: Mail System Internal Data <MAILER-DAEMON@turing.acm.org>
Subject: DON'T DELETE THIS MESSAGE -- FOLDER INTERNAL DATA
X-IMAP: 1149182188 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 Thu Jun  1 13:17:04 2006 -0400
Status: 
X-Status: 
X-Keywords:
Date: Thu, 1 Jun 2006 13:17:04 -0400 (EDT)
From: Gary PERLMAN <perlman@turing.acm.org>
To: Brian E Mays <bemays@alumni.virginia.edu>
Subject: Re: |STAT request
In-Reply-To: <97664f220606010232p6add1fdodc3f299c2f692700@mail.gmail.com>
Message-ID: <Pine.LNX.4.44.0606011316580.1514-100000@turing.acm.org>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII

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, 1 Jun 2006, Brian E Mays wrote:

> I AGREE TO ADHERE TO THE CONDITIONS OF USING |STAT.
> I AGREE NOT TO SHARE THE |STAT LOCATION WITH OTHERS.
> 
> Sincerely,
> Brian E. Mays
> 


From perlman@turing.acm.org Thu Jun  1 13:22:01 2006 -0400
Status: 
X-Status: 
X-Keywords:
Date: Thu, 1 Jun 2006 13:22:01 -0400 (EDT)
From: Gary PERLMAN <perlman@turing.acm.org>
To: Douglas Rohde <dr@tedlab.mit.edu>
cc: Gary perlman <perlman@turing.acm.org>
Subject: Re: http://tedlab.mit.edu/~dr/UnixStat/
In-Reply-To: <44778024.6030307@tedlab.mit.edu>
Message-ID: <Pine.LNX.4.44.0606011318260.1514-100000@turing.acm.org>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII

I took a look at:
	http://tedlab.mit.edu/~dr/UnixStat/
Please remove the files with the unauthorized downloads:
	Linux - http://tedlab.mit.edu/~dr/UnixStat/unixstat-linux.tgz
	Windows - http://tedlab.mit.edu/~dr/UnixStat/unixstat-win.tgz
	Mac - http://tedlab.mit.edu/~dr/UnixStat/unixstat-macosx.tgz
	Source Code - http://tedlab.mit.edu/~dr/UnixStat/unixstat-src.tgz
Please let me know when these files have been removed.

Gary Perlman
	

On Fri, 26 May 2006, Douglas Rohde wrote:

> Ok.  Well, I would encourage you to develop a validation suite (if you 
> can find the time or a capable undergrad) that could check correctness 
> and speed (and ideally the ability to compile in various environments, 
> but that's more difficult).
> 
> Doug
> 
> 
> Gary PERLMAN wrote:
> 
> >http://www.acm.org/~perlman/stat/history.html#conditions
> >
> >On Thu, 25 May 2006, Douglas Rohde wrote:
> >
> >  
> >
> >>What exactly is the concern?  Are you still trying to sell it?
> >>Can it be repackaged if I include a proper terms-of-service message?
> >>Your website claims "liberal copyright (but can't be distributed for 
> >>gain)".  Sounds like you don't want it distributed at all?
> >>
> >>Doug
> >>
> >>
> >>Gary PERLMAN wrote:
> >>
> >>    
> >>
> >>>Please take down this page
> >>>	http://tedlab.mit.edu/~dr/UnixStat/
> >>>Please stop distributing |STAT source code and binaries.
> >>>
> >>>Gary Perlman
> >>>
> >>>Sender: dr@ux4.sp.cs.cmu.edu
> >>>Message-ID: <3A539AA5.2FA4AEA4@cs.cmu.edu>
> >>>Date: Wed, 03 Jan 2001 16:33:25 -0500
> >>>From: Douglas Rohde <dr+@cs.cmu.edu>
> >>>To: perlman@acm.org
> >>>Subject: (no subject)
> >>>
> >>>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 Fri Jun  2 14:22:44 2006 -0400
Status: 
X-Status: 
X-Keywords:
Date: Fri, 2 Jun 2006 14:22:43 -0400 (EDT)
From: Gary PERLMAN <perlman@turing.acm.org>
To: Roberts Joi-W20962 <joiroberts@motorola.com>
Subject: Re: HCIBIB - PLEASE ADD EVENT TO THE LIST  :-)
In-Reply-To: <4071E01E5DD4A24DA6294840911A836AB7C72B@de01exm65.ds.mot.com>
Message-ID: <Pine.LNX.4.44.0606021421270.22643-100000@turing.acm.org>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII

Hi, there is no list on hcibib.org. You should get on this list:
	http://degraaff.org/hci/conference.html
Send mail to:
	hans@degraaff.org

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

On Fri, 2 Jun 2006, Roberts Joi-W20962 wrote:

>  
> ------------------------------------------------------------------------
> The 5th Convivio International Interaction Design Summer School
> 
> 
> 
> LOCATION: Edinburgh, Scotland
> 
> 
> DATE: August 14th - 25th, 2006
> 
> 
> THEME: Visions, Boundaries and Transformations in Extending or Replacing
> Human capacities.
> 
> 
> ABOUT: Convivio provides a supportive infrastructure for the
> interdisciplinary and international community of designers and
> researchers developing "convivial technologies" - ICT products, systems
> and services that enhance the quality of life and human interaction.The
> Annual Summer School for graduate students of many disciplines and young
> professional designers has been run for the past five years in locations
> throughout Western and Eastern Europe. In 2006 it will be it Napier
> University, Edinburgh, Scotland, coinciding with the two first weeks of
> the Edinburgh Festival. 
> 
> 
> 
> 
> APPROACH: This 2-week intensive summer school brings together (approx.)
> 50 talented young people from many countries and disciplines for ten
> days to deepen their understanding of user-centered design of
> interactive systems for everyday life "Convivial" technologies in the
> sense both of Dante and Illich. The School consists of morning lectures
> and afternoon ateliers, i.e. workshops where teams of students work on
> themes proposed by and discussed with the atelier leaders. Given the
> success of the ateliers in past years we would like to try this year to
> gain value from the work done by students beyond their own learning.
> What do the students gain? To work with professionals on a topic they
> find really interesting and possibly contacts for an eventual job. A
> combination of blue-sky research and contact with the real world of
> research, development or design.  
>  
>  
> PARTICIPANTS: Are you a graduate working in interactive system design?
> Are you a research student or PhD student? Maybe you are a designer,
> systems analyst, programmer, anthropologist, psychologist, architect,
> sociologist, computer scientist, new media artist? Would you like to
> learn how to combine the invention of new interaction patterns,
> attention to user's practice and innovative technology in designing
> interactive systems? This summer school is not solely for people in the
> user experience field.  The ideal candidates are new practitioners in
> the User Experience field as well as Masters and PhD students from any
> of the following disciplines: 
>  
>   --Traditional User Experience fields (HCI, Interaction Design, ID,
> Graphics/Visual Communication Design, Anthropology, Sociology,
> Psychology, etc)
>  
>   --Technical fields such as engineering, computer science, architecture
>  
>   --Other creative design disciplines (i.e. fashion design, etc)
> 
> 
> 
> 
> IMPORTANT DATES:  
>  10 Jun 2006 Participant applications due           
>  
> http://conviviosummerschool.pbwiki.com/Applications%20Call
> <BLOCKED::http://conviviosummerschool.pbwiki.com/Applications Call> 
> 
> 
>  19 Jun 2006 Applicants notified of acceptance
> 
> 
>  10 Jul 2006 Participants submit travel details
> 
> 
>  13 Aug 2006 Participants arrive
> 
> 
>  14 Aug 2006 Summer school begins
> 
> 
>  25 Aug 2006 Summer school ends
>  
> 
> 
> COSTS:
>   Lectures, ateliers (including material), coffee breaks, lunches and
> gala dinner are "free" (paid by an EU grant).
>   
>   Participants have to fund their own travel and accommodation, see wiki
> site (url below) for more details.
>  
> 
> 
> MORE INFO:  For more information and about the 2006 Convivio Summer
> School, click at 'here' on 
> http://www.napier.ac.uk/convivio/
> <BLOCKED::http://www.napier.ac.uk/convivio/> .  The wiki site is updated
> on a regular basis, hence check it often.  
> If you have special requests feel free to email:
> convivio2006_student@napier.ac.uk
> <BLOCKED::mailto:convivio2006_student@napier.ac.uk> 
>  
> 
> ORGANIZERS:  Convivio 2006
>    Yngve Sundblad, KTH, Stockholm, Sweden 
>    Riccardo Antonini, Consorzio Roma Richerche, University of Rome, 
>    Michael Smyth, Local organizer, Napier University, Edinburgh,
> Scotland
> ------------------------------------------------------------------------
> 
>  
> Thanks,
> -Joi Roberts
> 


From perlman@turing.acm.org Mon Jun  5 12:41:11 2006 -0400
Status: 
X-Status: 
X-Keywords:
Date: Mon, 5 Jun 2006 12:41:11 -0400 (EDT)
From: Gary PERLMAN <perlman@turing.acm.org>
To: Jerry John <charmbsd@yahoo.com>
Subject: Re: thanks for your  |STAT 
In-Reply-To: <20060605081445.62832.qmail@web31905.mail.mud.yahoo.com>
Message-ID: <Pine.LNX.4.44.0606051241050.7346-100000@turing.acm.org>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII

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, 5 Jun 2006, Jerry John wrote:

>    I AGREE TO ADHERE TO THE CONDITIONS OF USING |STAT.
>    I AGREE NOT TO SHARE THE |STAT LOCATION WITH OTHERS.
> 
> __________________________________________________
> Do You Yahoo!?
> Tired of spam?  Yahoo! Mail has the best spam protection around 
> http://mail.yahoo.com 
> 


From perlman@turing.acm.org Thu Jun  8 11:18:27 2006 -0400
Status: 
X-Status: 
X-Keywords:
Date: Thu, 8 Jun 2006 11:18:21 -0400 (EDT)
From: Gary PERLMAN <perlman@turing.acm.org>
To: Peter Gordon <Peter.Gordon@newcastle.ac.uk>
Subject: Re: |STAT request
In-Reply-To: <011571DA626E824EA97EF8AD253F5A1C032E5534@moonraker.campus.ncl.ac.uk>
Message-ID: <Pine.LNX.4.44.0606081117590.9439-100000@turing.acm.org>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII

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, 8 Jun 2006, Peter Gordon wrote:

> Please would you let me know how to obtain the current release of |STAT.
> 
>    I AGREE TO ADHERE TO THE CONDITIONS OF USING |STAT.
>    I AGREE NOT TO SHARE THE |STAT LOCATION WITH OTHERS.
> 
> Thanks for your help.
> 
> Peter Gordon
> peter.gordon@ncl.ac.uk
> 


From perlman@turing.acm.org Fri Jun  9 13:53:11 2006 -0400
Status: 
X-Status: 
X-Keywords:
Date: Fri, 9 Jun 2006 13:53:11 -0400 (EDT)
From: Gary PERLMAN <perlman@turing.acm.org>
To: Gary Perlman at OCLC <perlman@oclc.org>
Subject: discolse.cgi
Message-ID: <Pine.LNX.4.44.0606091353010.28704-100000@turing.acm.org>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII

#! /usr/local/bin/perl

# TODO: distribute indexes and execute search (or make search hot)

# TODO: database selection
# TODO: limits: doctype material-type library year
# TODO: rank options
# TODO: number of results per page + other results options
# TODO: appear on results page?
# TODO: save values in cookies
# TODO: let user choose the exact indexes they want

# TODO: add help for each element
# TODO: make help open small window
# TODO: add expand/contract buttons
# TODO: make +/- icons do something useful
# TODO: buttons to call SCRIPTNAME + all options + changes
# TODO: index list on right/left
# TODO: larger index list
# TODO: allow user to edit index list

# TODO: limit langs to those in browser locale

# TODO: add limits with pulldown menu
#       onSelect location=  + name=other

# DONE: apply index across terms to form query
# DONE: images for browse and thes
# DONE: header for search form
# DONE: show index abbreviations in menu
# DONE: language limit with + option

%F = &formdata ();

print "Content-type: text/html\r\n\r\n";
print '<html>
<head>
<script language="JavaScript" src="scripts.js" type="text/javascript"></script>
</head>';

&init();

&query();
&showform();

sub showform() {
	&form(1);
	if ($F{'headers'}) {
		&line(1);
		&header(""); # label column
		&header("Index") if $F{'indexmenu'} && $F{'indexmenuright'} ne "checked";
		&header("Search Terms");
		&header("Index") if $F{'indexmenu'} && $F{'indexmenuright'} eq "checked";
		&header("Browse") if $F{'indexbrowse'};
		&header("Vocab") if $F{'indexthes'};
		&line(0);
	}
	$F{'inputwidth'} = 30 unless $F{'inputwidth'};
	for $i (1..$F{'nboxes'}) {
		&line(1);
			############################### boolean operators
			&label(1);
			if ($i == 1) {
				print "<label for=term$i>Search:</label>";
			} elsif ($F{'boolean'}) {
				&boolean($i);
			}
			&label(0);
			############################### index menu
			if ($F{'indexmenu'} && $F{'indexmenuright'} ne "checked") { # index menu on left
				&element(1);
				&indexmenu($i);
				&element(0);
			}
			############################### search box
			&element(1);
				$termname = "term$i";
				if ($F{'inputheight'} > 1) {
					print "<textarea align=top cols=$F{'inputwidth'} rows=$F{'inputheight'} wrap=virtual id=$termname name=$termname>$F{$termname}</textarea>";
				} else {
					print "<input type=text size=$F{'inputwidth'} value=\"$F{$termname}\" id=$termname name=$termname>";
				}
				if ($i == 1 && $F{'inlinesearch'}) {
					&buttons();
				}
			&element(0);
			############################### index menu
			if ($F{'indexmenu'} && $F{'indexmenuright'} eq "checked") { # index menu on right
				&element(1);
				&indexmenu($i);
				&element(0);
			}
			############################### index browse buttons
			if ($F{'indexbrowse'}) {
				&element(1);
				&indexbrowse($i);
				&element(0);
			}
			############################### thesaurus browse buttons
			if ($F{'indexthes'}) {
				&element(1);
				&indexthes($i);
				&element(0);
			}
		&line(0);
	}

	if ($F{'headers'}) {
		&line(1);
		local ($url, $label, $link, $link2);
		$help = &makehelp();
		$plus = &makeplus();
		$minus = &makeminus();
		$left = &makeleft();
		$right = &makeright();

		############################### boolean
		if ($F{'boolean'}) {
			$url = &optlink("boolean", "");
			$link = "<a href=\"$url\">$minus</a>";
			&header("$link $help"); # label column operators
		} else {
			$url = &optlink("boolean", "checked");
			$link = "<a href=\"$url\">$plus</a>";
			&header("$link $help"); # label column operators
		}
		############################### index menus
		&showindexmenubuttons() unless $F{'indexmenuright'} eq "checked";

		############################### number of boxes
		$url = &optlink("nboxes", $F{'nboxes'}+1);
		$link = "<a href=\"$url\">$plus</a>";
		if ($F{'nboxes'} > 1) {
			$url = &optlink("nboxes", $F{'nboxes'}-1);
			$link2 = "<a href=\"$url\">$minus</a>";
			&header("$link $link2 $help");
		} else {
			&header("$link $help");
		}

		############################### index menus
		&showindexmenubuttons() if $F{'indexmenuright'} eq "checked";

		############################### index browse
		if ($F{'indexbrowse'}) {
			$url = &optlink("indexbrowse", "");
			$link = "<a href=\"$url\">$minus</a>";
			&header("$link $help");
		}
		############################### thesausus browse
		if ($F{'indexthes'}) {
			$url = &optlink("indexthes", "");
			$link = "<a href=\"$url\">$minus</a>";
			&header("$link $help");
		}
		&line(0);
	}
	if ($F{'limitlang'}) {
		&limitlang();
	}
	if (!$F{'inlinesearch'}) {
		&buttonline();
	}
	&options();
	&line(0);
	&form(0);
}

sub showindexmenubuttons {
		local ($url, $link, $link2, $link3);
		if ($F{'indexmenuright'} eq "checked") {
			$url = &optlink("indexmenuright", "");
			$link3 = "<a href=\"$url\">$left</a>";
		} else {
			$url = &optlink("indexmenuright", "checked");
			$link3 = "<a href=\"$url\">$right</a>";
		}
		if ($F{'indexmenu'}) {
			if ($F{'indexexpert'}) {
				$url = &optlink("indexexpert", "");
				$link = "<a href=\"$url\">$minus</a>";
				&header("$link $link3 $help");
			} else {
				$url = &optlink("indexexpert", "checked");
				$link = "<a href=\"$url\">$plus</a>";
				$url = &optlink("indexmenu", "");
				$link2 = "<a href=\"$url\">$minus</a>";
				&header("$link $link2 $link3 $help");
			}
		}
}

sub makehelp {
	return "<img onClick=\"alert('sorry, no help yet')\" alt=Help src=\"help-12.gif\" height=12 width=12 border=0 align=absmiddle/>";
	}

sub makeplus {
	return "<img alt=More src=\"plus-12.gif\" height=12 width=12 border=0 align=absmiddle/>";
}

sub makeminus {
	return "<img alt=Less src=\"minus-12.gif\" height=12 width=12 border=0 align=absmiddle/>";
}

sub makeright {
	return "<img alt=Right src=\"right-12.gif\" height=12 width=12 border=0 align=absmiddle/>";
}

sub makeleft {
	return "<img alt=Left src=\"left-12.gif\" height=12 width=12 border=0 align=absmiddle/>";
}

sub limitlang {
	&line(1);
	&label(1);
		print "<label for=\"limitlang\">Language:</label>\n";
	&label(0);
	&element(1, 5);
		print "<select id=limitlang name=\"limit-la=\">\n";
		if ($F{'limitlangmax'}) {
			print "<option value=\"eng\">English\n";
			print "<option value=\"\">This menu would show over 400 languages\n";
		} else {
			print '<option value="ara">Arabic';
			print '<option value="bul">Bulgarian';
			print '<option value="chi">Chinese';
			print '<option value="scr">Croatian';
			print '<option value="cze">Czech';
			print '<option value="dan">Danish';
			print '<option value="dut">Dutch';
			print '<option value="eng">English';
			print '<option value="fre">French';
			print '<option value="ger">German';
			print '<option value="gre">Greek, Modern [1453- ]';
			print '<option value="heb">Hebrew';
			print '<option value="hin">Hindi';
			print '<option value="hun">Hungarian';
			print '<option value="ind">Indonesian';
			print '<option value="ita">Italian';
			print '<option value="jpn">Japanese';
			print '<option value="kor">Korean';
			print '<option value="lat">Latin';
			print '<option value="nor">Norwegian';
			print '<option value="per">Persian';
			print '<option value="pol">Polish';
			print '<option value="por">Portuguese';
			print '<option value="rum">Romanian';
			print '<option value="rus">Russian';
			print '<option value="spa">Spanish';
			print '<option value="swe">Swedish';
			print '<option value="tha">Thai';
			print '<option value="tur">Turkish';
			print '<option value="ukr">Ukrainian';
			print '<option value="other">Other';
		}
		print "</select>\n";
		local ($url, $label);
		$label = &makeminus();
		if ($F{'limitlangmax'}) {
			$url = &optlink("limitlangmax", ""); # turn off max langs
			print "<a href=\"$url\">$label</a>\n";
		} else {
			$url = &optlink("limitlang", ""); # turn off lang limit
			print "<a href=\"$url\">$label</a>\n";
			$label = &makeplus();
			$url = &optlink("limitlangmax", "checked");
			print "<a href=\"$url\">$label</a>\n";
		}
		print &makehelp();
	&element(0);
	&line(0);
}

sub buttonline {
	&line(1);
	&label(1);
	&label(0);
	&element(1, 5);
		&buttons();
	&element(0);
	&line(0);
}

sub buttons {
	print "<input type=submit value=\"Search\">\n";
	if ($F{'clearbutton'}) {
		print "<input type=reset value=\"Clear\">\n";
	}
}

sub init {
	&addoption('nboxes', "number of search boxes", 2);
	&addoption('inputwidth', "width of input boxes", 2);
	&addoption('inputheight', "height of input boxes", 2);

	&addoption('boolean', "show boolean operators");
	&addoption('indexmenu', "show index menus on search boxes");
	&addoption('indexmenuright', "show index menus on right");
	&addoption('indexexpert', "show long index menus on search boxes");
	&addoption('indexabbreviations', "show index abbreviations in menus");
	&addoption('indexcycle', "cycle through index menu values");
	&addoption('indexbrowse', "show index browse buttons");
	&addoption('indexthes', "show thesaurus buttons");

	&addoption('limitlang', "show language limit");
	&addoption('limitlangmax', "show all languages in language limit");

	&addoption('inlinesearch', "show search button on same line as search box");
	&addoption('clearbutton', "show a clear button");
	&addoption('headers', "show form headers/footers");

	@indexes = split(/\s+/, "kw: ti: au: su: nb: yr:");
	@indexes2 = split(/\s+/, "kw: ti: au: su: nb: yr: no: pb: am: so: ns: mt: li: dt= la=");
	$indexname{"kw:"} = "Keyword";
	$indexname{"au:"} = "Author";
	$indexname{"ti:"} = "Title";
	$indexname{"am:"} = "Access Method";
	$indexname{"su:"} = "Subject";
	$indexname{"no:"} = "Accession Number";
	$indexname{"nb:"} = "ISBN";
	$indexname{"ns:"} = "ISSN";
	$indexname{"mt:"} = "Material Type";
	$indexname{"pb:"} = "Publisher";
	$indexname{"yr:"} = "Year";
	$indexname{"so:"} = "Periodical Title";
	$indexname{"dt="} = "Document Type";
	$indexname{"li:"} = "Library";
	$indexname{"la="} = "Language";
	$operator{'+'} = "and";
	$operator{'|'} = "or";
	$operator{'-'} = "not";
	$label{'none'} = "None";
	$label{'basic'} = "Basic";
	$label{'advanced'} = "Advanced";
	$label{'all'} = "All";
	$label{'xxx'} = "xxx";
	$label{'xxx'} = "xxx";
}


sub boolean {
	local ($n) = (@_);
	local ($varname) = "operator$n";
	local ($value) = $F{$varname};
	$andselected = ($value eq '+') ? "selected" : "";
	$orselected = ($value eq '|') ? "selected" : "";
	$notselected = ($value eq '-') ? "selected" : "";
	print "<select style=\"font-size:90%\" name=operator$n>
		<option value=\"+\" $andselected>and
		<option value=\"|\" $orselected>or
		<option value=\"-\" $notselected>not
	</select>\n";
}

sub indexmenu {
	local ($n) = (@_);
	local ($indexname) = "index$n";
	local (@list) = @indexes;
	if ($F{'indexexpert'}) {
		@list = @indexes2;
	}
	if ($F{'indexcycle'}) {
		$F{$indexname} = $list[$n-1];
	}
	print "&nbsp;<select style=\"font-size:90%\" name=$indexname>\n";
	for $index (@list) {
		$selected = ($F{$indexname} eq $index) ? "selected" : "";
		print "	<option value=\"$index\" $selected>$indexname{$index}";
		if ($F{'indexabbreviations'}) {
			print "&nbsp;($index)";
		print "\n";
		}
	}
	print "</select>\n";
}

sub indexbrowse {
	local ($n) = (@_);
	$icon = "http://firstsearch.oclc.org/images/fs_scanindex.gif";
	print "&nbsp;<a title=\"browse index\" href=\"\"><img align=absmiddle border=0 src=\"$icon\" height=20 width=36></a>";
}

sub indexthes {
	local ($n) = (@_);
	$icon = "http://firstsearch.oclc.org/images/fs_tree.gif";
	print "&nbsp;<a title=\"browse thesaurus\" href=\"\"><img align=absmiddle border=0 src=\"$icon\" height=20 width=36></a>";
}

sub element {
	local ($code, $span) = (@_);
	if ($span) {
		$span = "colspan=$span";
	}
	if ($code) {
		print ("	<td $span bgcolor=\"#CCCCCC\"><font size=2>");
	} else {
		print "</font></td>\n";
	}
}

sub header {
	local ($text) = (@_);
	print ("	<th bgcolor=\"#EEEEEE\" align=left style=\"font-size:70%\">");
	print ($text);
	print "</th>\n";
}

sub label {
	local ($code) = (@_);
	if ($code) {
		print "	<th align=right><font size=2><b>\n"
	} else {
		print "</b></font></th>\n";
	}
}

sub line {
	local ($code) = (@_);
	if ($code) {
		print "<tr valign=top>\n"
	} else {
		print "</tr>\n";
	}
}

sub addoption {
	local ($name, $help, $count) = (@_);
	$help{$name} = $help;
	@options = (@options, $name);
	$count && ($integer{$name} = $count);
}

sub options {
	&line(1);
		&label(1);
		print "Options:";
		&label(0);
		&element(1, 5);
		for $opt (@options) {
			print "<div title=\"$opt\">";
			if ($integer{$opt}) {
				print "<input type=text size=$integer{$opt} id=$opt name=$opt value=\"$F{$opt}\"> <label for=$opt>$help{$opt}</label>\n";
			} else {
				print "<input type=checkbox id=$opt name=$opt value=checked $F{$opt}> <label for=$opt>$help{$opt}</label>\n";
			}
			print "</div>";
		}
		&element(0);
	&line(0);
}

sub form {
	local ($code) = (@_);
	if ($code) {
		print "<table border=0 cellpadding=3 cellspacing=1>\n";
		print "<form name=form method=POST action=\"$ENV{'SCRIPTNAME'}\">\n";
	} else {
		print "</form>\n";
		print "</table>\n";
	}
}

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

sub query {
	local ($oname, $iname, $tname);
	local ($max) = $F{'nboxes'};
	$max = 1 unless $max;
	print "<p>";
	$query = "";
	for $n (1..$max) {
		$oname = "operator$n";
		$iname = "index$n";
		$tname = "term$n";
		if ($F{$tname}) {
			for $t (split (/\s+/, $F{$tname})) {
				$query .= "$F{$oname} $F{$iname} $t ";
			}
		}
	}
	$find = "http://worldcatlibraries.org/wcpa/search?q=";
	print "<a target=new href=\"$find$query\">$query</a>\n";
	print "</p>\n";
}

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

sub optlink {
	local ($name, $value) = (@_);
	local ($url) = "$ENV{'SCRIPTNAME'}?";
	local ($f);
	for $f (keys (%F)) {
		if ($f ne $name) {
			$url .= "$f=" . &encode($F{$f}) . "&";;
		}
	}
	$url .= $name . '=' . &encode($value);
}


From perlman@turing.acm.org Fri Jun  9 17:34:20 2006 -0400
Status: 
X-Status: 
X-Keywords:
Date: Fri, 9 Jun 2006 17:34:20 -0400 (EDT)
From: Gary PERLMAN <perlman@turing.acm.org>
To: Matt Trueman <m.trueman@gmail.com>
Subject: Re: HCI Bibliography : HCI Webliography : Intercultural Issues
In-Reply-To: <3d0cacbc0606090943i1539de89r32fc546e4f7ec7f9@mail.gmail.com>
Message-ID: <Pine.LNX.4.44.0606091733120.1123-100000@turing.acm.org>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII

All fixed.

http://www.hcibib.org/intercultural/

Someday, I will set up an editing capability. Someday.

On Fri, 9 Jun 2006, Matt Trueman wrote:

> Dear Dr. Perlman:
> 
> Thank you very much for adding my site's listing (Quality Language) to the
> 'Intercultural Issues' page of HCI Bibliography.
> 
> When originally filling out the relevant site and contact information, I
> entered my personal e-mail address -- m.trueman@gmail.com. If it's possible,
> I would like to change this to my company's main e-mail address --
> info@qualitylanguage.com.
> 
> I noticed that links can be changed via Suggest-a-Link, but I wasn't sure
> whether it would be necessary to re-enter all information, or just amend
> those fields that are to be modified.
> 
> I apologize for the inconvenience. Thank you again for your support, and for
> your guidance in this matter.
> 
> Sincerely,
> 
> Matt Trueman
> Quality Language
> 


From perlman@turing.acm.org Sun Jun 11 13:49:54 2006 -0400
Status: 
X-Status: 
X-Keywords:
Date: Sun, 11 Jun 2006 13:49:53 -0400 (EDT)
From: Gary PERLMAN <perlman@turing.acm.org>
To: Gary Perlman at OCLC <perlman@oclc.org>
Message-ID: <Pine.LNX.4.44.0606111349490.22488-100000@turing.acm.org>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII

#! /usr/local/bin/perl

# TODO: database selection
# TODO: 	x-db -> quicksearch
# TODO:		db topics 
# TODO: rank options
# TODO: number of results per page + other results options
# TODO: appear on results page?
# TODO: let user choose the exact indexes they want, edit index list

# TODO: add help for each element, open small window

# TODO: limit langs to those in browser locale

# TODO: add limits with pulldown menu
#       onSelect location=  + name=other

# TODO: multiway options (radio button)
# TODO: search box above, below, both, or with searchbox (needs radio)

# TODO: to do locally, need to hide elements and/or learn layers/css

# TODO: need edit option to show edit controls (yahoo edit/x move up/dn
# TODO: make use of limits with limit-dt= names

##########################################################################
# TODO: whoosh menu with options to add/hide
# TODO: checkbox to save UI, checkbox to save search (maybe search history)
# TODO: instead of cookie autosave, add save button
##########################################################################

# DONE: limits: doctype material-type library year
# DONE: save values in cookies
# DONE: add links to apply mysearch to different engines (hide indexes for Google)
# DONE: apply index across terms to form query
# DONE: images for browse and thes
# DONE: header for search form
# DONE: show index abbreviations in menu
# DONE: language limit with + option
# DONE: index list on right/left
# DONE: larger index list
# DONE: buttons to call SCRIPTNAME + all options + changes
# DONE: make +/- icons do something useful
# DONE: add expand/contract buttons
# DONE: distribute indexes and execute search (or make search hot)


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

%F = &formdata ();

print '<html>
<head>
<title>MySearch: Progressive Disclosure Custom Search</title>
<script language="JavaScript" src="scripts.js" type="text/javascript"></script>
</head>';

for $f (keys (%F)) {
	$url .= "$f=" . &encode($F{$f}) . "&";;
}
if ($url) {
	print "<script language=\"JavaScript\">
	setCookie(\"searchoptions\", \"$url\");
	</script>\n";
}
# print "<a href=\"http://hcibib.org/printenv.cgi\" title=printenv>*</a>\n";

&init();

&query();
&showform();

sub showform() {
	&form(1);
	if (!$F{'inlinesearch'} && $F{'buttonsabove'} eq "checked") {
		&buttonline();
	}
	if ($F{'headers'}) {
		&line(1);
		local ($url, $label, $link);
		$label = &makeminus();
		$url = &optlink("headers", ""); # turn off headers
		$link = "<a href=\"$url\">$label</a>";
		&header($link); # label column
		&header("Index") if $F{'indexmenu'} && $F{'indexmenuright'} ne "checked";
		&header("Search Terms");
		&header("Index") if $F{'indexmenu'} && $F{'indexmenuright'} eq "checked";
		&header("Browse") if $F{'indexbrowse'};
		&header("Vocab") if $F{'indexthes'};
		&line(0);
	}
	$F{'inputwidth'} = 30 unless $F{'inputwidth'};
	for $i (1..$F{'nboxes'}) {
		&line(1);
			############################### boolean operators
			&label(1);
			if ($i == 1) {
				if ($F{'buttonlabel'} eq 'checked') {
					$label = "<input type=submit value=\"Search\">";
				} else {
					$label = "Search";
				}
				print "<label for=term$i>$label</label>";
			} elsif ($F{'boolean'}) {
				&boolean($i);
			}
			&label(0);
			############################### index menu
			if ($F{'indexmenu'} && $F{'indexmenuright'} ne "checked") { # index menu on left
				&element(1);
				&indexmenu($i);
				&element(0);
			}
			############################### search box
			&element(1);
				$termname = "term$i";
				if ($F{'inputheight'} > 1) {
					print "<textarea align=top cols=$F{'inputwidth'} rows=$F{'inputheight'} wrap=virtual id=$termname name=$termname>$F{$termname}</textarea>";
				} else {
					print "<input type=text size=$F{'inputwidth'} value=\"$F{$termname}\" id=$termname name=$termname>";
				}
				if ($i == 1 && $F{'inlinesearch'}) {
					&buttons();
				}
			&element(0);
			############################### index menu
			if ($F{'indexmenu'} && $F{'indexmenuright'} eq "checked") { # index menu on right
				&element(1);
				&indexmenu($i);
				&element(0);
			}
			############################### index browse buttons
			if ($F{'indexbrowse'}) {
				&element(1);
				&indexbrowse($i);
				&element(0);
			}
			############################### thesaurus browse buttons
			if ($F{'indexthes'}) {
				&element(1);
				&indexthes($i);
				&element(0);
			}
		&line(0);
	}

	if ($F{'headers'}) {
		&line(1);
		local ($url, $label, $link, $link2);
		$help = &makehelp();
		$plus = &makeplus();
		$minus = &makeminus();
		$left = &makeleft();
		$right = &makeright();

		############################### boolean
		if ($F{'boolean'}) {
			$url = &optlink("boolean", "");
			$link = "<a href=\"$url\">$minus</a>";
			&header("$link $help"); # label column operators
		} else {
			$url = &optlink("boolean", "checked");
			$link = "<a href=\"$url\">$plus</a>";
			&header("$link $help"); # label column operators
		}
		############################### index menus
		&showindexmenubuttons() unless $F{'indexmenuright'} eq "checked";

		############################### number of boxes
		$url = &optlink("nboxes", $F{'nboxes'}+1);
		$link = "<a href=\"$url\">$plus</a>";
		if ($F{'nboxes'} > 1) {
			$url = &optlink("nboxes", $F{'nboxes'}-1);
			$link2 = "<a href=\"$url\">$minus</a>";
			&header("$link $link2 $help");
		} else {
			&header("$link $help");
		}

		############################### index menus
		&showindexmenubuttons() if $F{'indexmenuright'} eq "checked";

		############################### index browse
		if ($F{'indexbrowse'}) {
			$url = &optlink("indexbrowse", "");
			$link = "<a href=\"$url\">$minus</a>";
			&header("$link $help");
		}
		############################### thesausus browse
		if ($F{'indexthes'}) {
			$url = &optlink("indexthes", "");
			$link = "<a href=\"$url\">$minus</a>";
			&header("$link $help");
		}
		&line(0);
	}
	if ($F{'limitlang'}) {
		&limitlang();
	}
	if ($F{'limitnlib'}) {
		&limitnlib();
	}
	if ($F{'limitdt'}) {
		&limitdt();
	}
	if ($F{'limitmt'}) {
		&limitmt();
	}
	if (!$F{'inlinesearch'} && $F{'buttonsabove'} ne "checked") {
		&buttonline();
	}
	&options();
	&line(0);
	&form(0);
}

sub showindexmenubuttons {
		local ($url, $link, $link2, $link3);
		if ($F{'indexmenuright'} eq "checked") {
			$url = &optlink("indexmenuright", "");
			$link3 = "<a href=\"$url\">$left</a>";
		} else {
			$url = &optlink("indexmenuright", "checked");
			$link3 = "<a href=\"$url\">$right</a>";
		}
		if ($F{'indexmenu'}) {
			if ($F{'indexexpert'}) {
				$url = &optlink("indexexpert", "");
				$link = "<a href=\"$url\">$minus</a>";
				&header("$link $link3 $help");
			} else {
				$url = &optlink("indexexpert", "checked");
				$link = "<a href=\"$url\">$plus</a>";
				$url = &optlink("indexmenu", "");
				$link2 = "<a href=\"$url\">$minus</a>";
				&header("$link $link2 $link3 $help");
			}
		}
}

sub makehelp {
	return "<img onClick=\"alert('sorry, no help yet')\" alt=Help src=\"help-12.gif\" height=12 width=12 border=0 align=absmiddle/>";
	}

sub makeplus {
	return "<img alt=More src=\"plus-12.gif\" height=12 width=12 border=0 align=absmiddle/>";
}

sub makeminus {
	return "<img alt=Less src=\"minus-12.gif\" height=12 width=12 border=0 align=absmiddle/>";
}

sub makeright {
	return "<img alt=Right src=\"right-12.gif\" height=12 width=12 border=0 align=absmiddle/>";
}

sub makeleft {
	return "<img alt=Left src=\"left-12.gif\" height=12 width=12 border=0 align=absmiddle/>";
}

sub limitlang {
	&line(1);
	&label(1);
		print "<label for=\"limitlang\">Language:</label>\n";
	&label(0);
	&element(1, 5);
		print "<select id=limitlang name=\"limit-la=\">\n";
		if ($F{'limitlangmax'}) {
			print "<option value=\"eng\">English\n";
			print "<option value=\"\">This menu would show over 400 languages\n";
		} else {
			print '<option value="ara">Arabic';
			print '<option value="bul">Bulgarian';
			print '<option value="chi">Chinese';
			print '<option value="scr">Croatian';
			print '<option value="cze">Czech';
			print '<option value="dan">Danish';
			print '<option value="dut">Dutch';
			print '<option value="eng">English';
			print '<option value="fre">French';
			print '<option value="ger">German';
			print '<option value="gre">Greek, Modern [1453- ]';
			print '<option value="heb">Hebrew';
			print '<option value="hin">Hindi';
			print '<option value="hun">Hungarian';
			print '<option value="ind">Indonesian';
			print '<option value="ita">Italian';
			print '<option value="jpn">Japanese';
			print '<option value="kor">Korean';
			print '<option value="lat">Latin';
			print '<option value="nor">Norwegian';
			print '<option value="per">Persian';
			print '<option value="pol">Polish';
			print '<option value="por">Portuguese';
			print '<option value="rum">Romanian';
			print '<option value="rus">Russian';
			print '<option value="spa">Spanish';
			print '<option value="swe">Swedish';
			print '<option value="tha">Thai';
			print '<option value="tur">Turkish';
			print '<option value="ukr">Ukrainian';
			print '<option value="other">Other';
		}
		print "</select>\n";
		local ($url, $label);
		$label = &makeminus();
		if ($F{'limitlangmax'}) {
			$url = &optlink("limitlangmax", ""); # turn off max langs
			print "<a href=\"$url\">$label</a>\n";
		} else {
			$url = &optlink("limitlang", ""); # turn off lang limit
			print "<a href=\"$url\">$label</a>\n";
			$label = &makeplus();
			$url = &optlink("limitlangmax", "checked");
			print "<a href=\"$url\">$label</a>\n";
		}
		print &makehelp();
	&element(0);
	&line(0);
}

sub limitnlib {
	&line(1);
	&label(1);
		print "<label for=\"limitnlib\">Number of Libraries:</label>\n";
	&label(0);
	&element(1, 5);
	print "<select id=limitnlib name=\"limit-cg:\">\n";
	print '	<option value="" Selected>All</option>
				<option value="05">5 or more</option>
				<option value="07">50 or more</option>
				<option value="09">500 or more</option>';
	print "</select>\n";
	local ($url, $label);
	$label = &makeminus();
	$url = &optlink("limitnlib", ""); # turn off limit
	print "<a href=\"$url\">$label</a>\n";
	print &makehelp();
	&element(0);
	&line(0);
}

sub limitmt {
	&line(1);
	&label(1);
		print "<label for=\"limitmt\">Material Type:</label>\n";
	&label(0);
	&element(1, 5);
			print '<select name="persistent-mt:juv" class="subtype">
	<option value="" Selected class="menuheader">Any Audience</option>
	<option value="juv" class="menuoption">Juvenile</option>
	<option value="~juv" class="menuoption">not Juvenile</option>
</select>
			<select name="persistent-mt:content" class="subtype">
	<option value="" Selected class="menuheader">Any Content</option>
	<option value="fic" class="menuoption">Fiction</option>
	<option value="~fic" class="menuoption">not Fiction</option>
	<option value="bio" class="menuoption">Biography</option>
	<option value="deg" class="menuoption">Thesis/dissertation</option>
	<option value="msr" class="menuoption">Musical recording</option>
	<option value="nsr" class="menuoption">Non-musical recording</option>
</select>
			<select name="persistent-mt:fmt" class="subtype">
	<option value="" Selected class="menuheader">Any Format</option>
	<option value="lpt" class="menuoption">Large print</option>
	<option value="brl" class="menuoption">Braille</option>
	<option value="mss" class="menuoption">Manuscript</option>
	<option value="mic" class="menuoption">Microform</option>
	<option value="~mic" class="menuoption">not Microform</option>
	<option value="*" class="menuoption">-----------</option>
	<option value="cda" class="menuoption">CD audio</option>
	<option value="cas" class="menuoption">Cassette recording</option>
	<option value="lps" class="menuoption">LP recording</option>
	<option value="vca" class="menuoption">VHS tape / Videocassette</option>
	<option value="vdc" class="menuoption">DVD video / Videodisc</option>
</select>';
	local ($url, $label);
	$label = &makeminus();
	$url = &optlink("limitmt", ""); # turn off limit
	print "<a href=\"$url\">$label</a>\n";
	print &makehelp();
	&element(0);
	&line(0);
}

sub limitdt {
	&line(1);
	&label(1);
		print "<label for=\"limitdt\">Document Type:</label>\n";
	&label(0);
	&element(1, 5);
	# list doctypes here
print '
<table border=0 cellpadding=1 cellspacing=0>
			<tr valign=baseline><td nowrap><font size="2" face="Tahoma,Arial,Helvetica" COLOR="#666666"><b>
			<input type=checkbox id="dt-bks" name="limit-dt=" value="bks" &limit-dt=bks;>
				<label for="dt-bks" title="Books, Pamphlets, Technical reports, Manuscripts, Legal papers, Theses and dissertations">
					<a href=""><img height=16 width=16 border=0 align="absmiddle" src="http://firstsearch.org/images/icon-bks.gif" alt="Book"></a>
					Books</label>
			</b></font></td><td nowrap><font size="2" face="Tahoma,Arial,Helvetica" COLOR="#666666"><b>
			<input type=checkbox id="dt-ser" name="limit-dt=" value="ser" &limit-dt=ser;>
				<label for="dt-ser" title="Periodicals, Newspapers, Annuals, Journals, Memoirs, Proceedings">
					<a href=""><img height=16 width=16 border=0 align="absmiddle" src="http://firstsearch.org/images/icon-ser.gif" alt="Serial Publication"></a>
					Serial Publications</label>
			</b></font></td><td nowrap><font size="2" face="Tahoma,Arial,Helvetica" COLOR="#666666"><b>
			<input type=checkbox id="dt-art" name="limit-dt=" value="art" &limit-dt=art;>
				<label for="dt-art" title="Magazine and journal articles, chapters, conference papers">
					<a href=""><img height=16 width=16 border=0 align="absmiddle" src="http://firstsearch.org/images/icon-art.gif" alt="Article"></a>
					Articles</label>
			</b></font></td></tr>
			<tr valign=baseline><td nowrap><font size="2" face="Tahoma,Arial,Helvetica" COLOR="#666666"><b>
			<input type=checkbox id="dt-vis" name="limit-dt=" value="vis" &limit-dt=vis;>
				<label for="dt-vis" title="Motion pictures, Videorecordings, Filmstrips, Slides, Transparencies, Photos, Cards, Charts, Drawings">
					<a href=""><img height=16 width=16 border=0 align="absmiddle" src="http://firstsearch.org/images/icon-vis.gif" alt="Visual Material"></a>
					Visual Materials</label>
			</b></font></td><td nowrap><font size="2" face="Tahoma,Arial,Helvetica" COLOR="#666666"><b>
			<input type=checkbox id="dt-rec" name="limit-dt=" value="rec" &limit-dt=rec;>
				<label for="dt-rec" title="Musical, Spoken, Books on Tape, etc. on DVD, CD, Cassette, and LP recordings">
					<a href=""><img height=16 width=16 border=0 align="absmiddle" src="http://firstsearch.org/images/icon-rec.gif" alt="Sound Recording"></a>
					Sound Recordings</label>
			</b></font></td><td nowrap><font size="2" face="Tahoma,Arial,Helvetica" COLOR="#666666"><b>
			<input type=checkbox id="dt-sco" name="limit-dt=" value="sco" &limit-dt=sco;>
				<label for="dt-sco" title="Musical scores, Anthologies">
					<a href=""><img height=16 width=16 border=0 align="absmiddle" src="http://firstsearch.org/images/icon-sco.gif" alt="Musical Score"></a>
					Musical Scores</label>
			</b></font></td></tr>
			<tr valign=baseline><td nowrap><font size="2" face="Tahoma,Arial,Helvetica" COLOR="#666666"><b>
			<input type=checkbox id="dt-com" name="limit-dt=" value="com" &limit-dt=com;>
				<label for="dt-com" title="Computer files, Data, Software">
					<a href=""><img height=16 width=16 border=0 align="absmiddle" src="http://firstsearch.org/images/icon-com.gif" alt="Computer File"></a>
					Computer Files</label>
			</b></font></td><td nowrap><font size="2" face="Tahoma,Arial,Helvetica" COLOR="#666666"><b>
			<input type=checkbox id="dt-mix" name="limit-dt=" value="mix" &limit-dt=mix;>
				<label for="dt-mix" title="Archival materials">
					<a href=""><img height=16 width=16 border=0 align="absmiddle" src="http://firstsearch.org/images/icon-mix.gif" alt="Archival Material"></a>
					Archival Materials</label>
			</b></font></td><td nowrap><font size="2" face="Tahoma,Arial,Helvetica" COLOR="#666666"><b>
			<input type=checkbox id="dt-map" name="limit-dt=" value="map" &limit-dt=map;>
				<label for="dt-map" title="Maps, Globes">
					<a href=""><img height=16 width=16 border=0 align="absmiddle" src="http://firstsearch.org/images/icon-map.gif" alt="Map"></a>
					Maps</label>
			</b></font></td></tr>
			<tr><td nowrap><font size="2" face="Tahoma,Arial,Helvetica" COLOR="#666666"><b>
			<input type=checkbox id="dt-url" name="limit-dt=" value="url" &limit-dt=url;>
				<label for="dt-url" title="Web sites, Online electronic books, Documents, Sound files, Images, Data">
					<a href=""><img height=16 width=16 border=0 align="absmiddle" src="http://firstsearch.org/images/icon-url.gif" alt="Internet Resource"></a>
					Internet Resources</label>
			</b></font></td><td colspan=2 nowrap>
			<font size="2" face="Tahoma,Arial,Helvetica" COLOR="#666666"><b>
			<input type=checkbox id="dt-int" name="limit-dt=" value="int" &limit-dt=int;>
				<label for="dt-int" title="Databases, websites, updated loose leaf">
					<a href=""><img height=16 width=16 border=0 align="absmiddle" src="http://firstsearch.org/images/icon-int.gif" alt="Continually Updated Resource"></a>
					Continually Updated Resources</label>
			</b></font>
			</td><td nowrap><font size="2" face="Tahoma,Arial,Helvetica" COLOR="#666666"><b>
				<img alt=Less src="minus-12.gif" height=12 width=12 border=0 align=absmiddle/></a>
<img alt=Help src="help-12.gif" height=12 width=12 border=0 align=absmiddle/>
			</b></font>
			</td></tr>
			</table>';
	# local ($url, $label);
	# $label = &makeminus();
	# $url = &optlink("limitdt", ""); # turn off limit
	# print "<a href=\"$url\">$label</a>\n";
	# print &makehelp();
	&element(0);
	&line(0);
}

sub buttonline {
	&line(1);
	&label(1);
	&label(0);
	&element(1, 5);
		&buttons();
	&element(0);
	&line(0);
}

sub buttons {
	print "<input type=submit value=\"Search\">\n";
	if ($F{'clearbutton'}) {
		print "<input type=reset value=\"Clear\">\n";
	}
}

sub init {
	&addoption('nboxes', "number of search boxes", 2);
	&addoption('inputwidth', "width of input boxes", 2);
	&addoption('inputheight', "height of input boxes", 2);

	&addoption('boolean', "show boolean operators");
	&addoption('indexmenu', "show index menus on search boxes");
	&addoption('indexmenuright', "show index menus on right");
	&addoption('indexexpert', "show long index menus on search boxes");
	&addoption('indexabbreviations', "show index abbreviations in menus");
	&addoption('indexcycle', "cycle through index menu values");
	&addoption('indexbrowse', "show index browse buttons");
	&addoption('indexthes', "show thesaurus buttons");

	&addoption('limitlang', "show language limit");
	&addoption('limitlangmax', "show all languages in language limit");
	&addoption('limitnlib', "show limit to number of libraries");
	&addoption('limitdt', "show document type limits");
	&addoption('limitmt', "show material type limits");

	&addoption('inlinesearch', "show search button on same line as search box");
	&addoption('buttonsabove', "show search button above search form");
	&addoption('buttonlabel', "show search button as label for box");
	&addoption('clearbutton', "show a clear button");
	&addoption('headers', "show form headers/footers");

	@indexes = split(/\s+/, "kw: ti: au: su: nb: yr:");
	@indexes2 = split(/\s+/, "kw: ti: au: su: nb: yr: no: pb: am: so: ns: mt: li: dt= la=");
	$indexname{"kw:"} = "Keyword";
	$indexname{"au:"} = "Author";
	$indexname{"ti:"} = "Title";
	$indexname{"am:"} = "Access Method";
	$indexname{"su:"} = "Subject";
	$indexname{"no:"} = "Accession Number";
	$indexname{"nb:"} = "ISBN";
	$indexname{"ns:"} = "ISSN";
	$indexname{"mt:"} = "Material Type";
	$indexname{"pb:"} = "Publisher";
	$indexname{"yr:"} = "Year";
	$indexname{"so:"} = "Periodical Title";
	$indexname{"dt="} = "Document Type";
	$indexname{"li:"} = "Library";
	$indexname{"la="} = "Language";
	$operator{'+'} = "and";
	$operator{'|'} = "or";
	$operator{'-'} = "not";
	$label{'none'} = "None";
	$label{'basic'} = "Basic";
	$label{'advanced'} = "Advanced";
	$label{'all'} = "All";
	$doctype{'bks'} = "Books";
	$doctype{'ser'} = "Serial Publications";
	$doctype{'art'} = "Articles";
	$doctype{'vis'} = "Visual Materials";
	$doctype{'rec'} = "Sound Recordings";
	$doctype{'sco'} = "Musical Scores";
	$doctype{'com'} = "Computer Files";
	$doctype{'mix'} = "Archival Materialsx";
	$doctype{'map'} = "Maps";
	$doctype{'url'} = "Internet Resources";
	$doctype{'int'} = "Continually Updated Resources";
}


sub boolean {
	local ($n) = (@_);
	local ($varname) = "operator$n";
	local ($value) = $F{$varname};
	$andselected = ($value eq '+') ? "selected" : "";
	$orselected = ($value eq '|') ? "selected" : "";
	$notselected = ($value eq '-') ? "selected" : "";
	print "<select style=\"font-size:90%\" name=operator$n>
		<option value=\"+\" $andselected>and
		<option value=\"|\" $orselected>or
		<option value=\"-\" $notselected>not
	</select>\n";
}

sub indexmenu {
	local ($n) = (@_);
	local ($indexname) = "index$n";
	local (@list) = @indexes;
	if ($F{'indexexpert'}) {
		@list = @indexes2;
	}
	if ($F{'indexcycle'}) {
		$F{$indexname} = $list[$n-1];
	}
	print "&nbsp;<select style=\"font-size:90%\" name=$indexname>\n";
	for $index (@list) {
		$selected = ($F{$indexname} eq $index) ? "selected" : "";
		print "	<option value=\"$index\" $selected>$indexname{$index}";
		if ($F{'indexabbreviations'}) {
			print "&nbsp;($index)";
		print "\n";
		}
	}
	print "</select>\n";
}

sub indexbrowse {
	local ($n) = (@_);
	$icon = "http://firstsearch.oclc.org/images/fs_scanindex.gif";
	print "&nbsp;<a title=\"browse index\" href=\"\"><img align=absmiddle border=0 src=\"$icon\" height=20 width=36></a>";
}

sub indexthes {
	local ($n) = (@_);
	$icon = "http://firstsearch.oclc.org/images/fs_tree.gif";
	print "&nbsp;<a title=\"browse thesaurus\" href=\"\"><img align=absmiddle border=0 src=\"$icon\" height=20 width=36></a>";
}

sub element {
	local ($code, $span) = (@_);
	if ($span) {
		$span = "colspan=$span";
	}
	if ($code) {
		print ("	<td $span bgcolor=\"#CCCCCC\"><font size=2>");
	} else {
		print "</font></td>\n";
	}
}

sub header {
	local ($text) = (@_);
	print ("	<th bgcolor=\"#EEEEEE\" align=left style=\"font-size:70%\">");
	print ($text);
	print "</th>\n";
}

sub label {
	local ($code) = (@_);
	if ($code) {
		print "	<th align=right><font size=2><b>\n"
	} else {
		print "</b></font></th>\n";
	}
}

sub line {
	local ($code) = (@_);
	if ($code) {
		print "<tr valign=top>\n"
	} else {
		print "</tr>\n";
	}
}

sub addoption {
	local ($name, $help, $count) = (@_);
	$help{$name} = $help;
	@options = (@options, $name);
	$count && ($integer{$name} = $count);
}

sub options {
	&line(1);
		&label(1);
		print "Options:";
		&label(0);
		&element(1, 5);
		for $opt (@options) {
			print "<div title=\"$opt\">";
			if ($integer{$opt}) {
				print "<input type=text size=$integer{$opt} id=$opt name=$opt value=\"$F{$opt}\"> <label for=$opt>$help{$opt}</label>\n";
				local ($url, $link, $diff);
				$diff = $F{$opt} > 10 ? 5 : 1;
				if ($F{$opt} > 0) {
					$label = &makeminus();
					$url = &optlink($opt, $F{$opt} - $diff);
					print "<a href=\"$url\">$label</a>\n";
				}
				$label = &makeplus();
				$url = &optlink($opt, $F{$opt} + $diff);
				print "<a href=\"$url\">$label</a>\n";
			} else {
				print "<input type=checkbox id=$opt name=$opt value=checked $F{$opt}> <label for=$opt>$help{$opt}</label>\n";
				local ($url, $link);
				if ($F{$opt} eq "checked") {
					$label = &makeminus();
					$url = &optlink($opt, "");
				} else {
					$label = &makeplus();
					$url = &optlink($opt, "checked");
				}
				print "<a href=\"$url\">$label</a>\n";
			}
			print "</div>";
		}
		&element(0);
	&line(0);
}

sub form {
	local ($code) = (@_);
	if ($code) {
		print "<table border=0 cellpadding=3 cellspacing=1>\n";
		print "<form name=form method=POST action=\"$ENV{'SCRIPTNAME'}\">\n";
	} else {
		print "</form>\n";
		print "</table>\n";
	}
}

sub formdata { # nil -> %F
    local (*formdata);
    if ($ENV{'REQUEST_METHOD'} eq 'POST') {
        read (STDIN, $F, $ENV{'CONTENT_LENGTH'});
    } else {
        $F = $ENV{'QUERY_STRING'};
		if ($F eq "") {
			$F = $ENV{'HTTP_COOKIE'};
			# print "<pre>xyzzy got cookie: $F</pre>\n";
			# pick out searchoptions
			if ($F =~ /.*searchoptions=([^;]*)/) {
				$F = $1;
				# print "<pre>xyzzy got searchoptions: $F</pre>\n";
				$F =~ s/%([\dA-Fa-f][\dA-Fa-f])/pack ("C", hex ($1))/eg; # decode
				# print "<pre>xyzzy decoded: $F</pre>\n";
				# now $F looks like a=xxx&b=yyy&c=zzz
			} else {
				# print "<pre>xyzzy no cookie</pre>\n";
			}
		}
    }
    @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 query {
	local ($oname, $iname, $tname);
	local ($max) = $F{'nboxes'};
	$max = 1 unless $max;
	local ($find, $yahoo, $google)  = "";
	for $n (1..$max) {
		$oname = "operator$n";
		$iname = "index$n";
		$tname = "term$n";
		if ($F{$tname}) {
			$google .= "$F{$oname} $F{$tname} ";
			for $t (split (/\s+/, $F{$tname})) {
				$find .= "$F{$oname} $F{$iname} $t ";
			}
		}
	}
	$yahoo = $google;
	$findit = "http://worldcatlibraries.org/wcpa/search?q=";
	$googleit = "http://www.google.com/search?q=";
	$yahooit = "http://search.yahoo.com/search?p=";
	$find = &encode($find);
	$google = &encode($google);
	$yahoo = &encode($yahoo);
	print "<p>";
	print "<a target=find title=\"$find\" href=\"$findit$find\">Find</a>\n";
	print "<a target=google title=\"$google\" href=\"$googleit$google\">Google</a>\n";
	print "<a target=yahoo title=\"$yahoo\" href=\"$yahooit$yahoo\">Yahoo</a>\n";
	print "</p>\n";
}

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

sub optlink {
	local ($name, $value) = (@_);
	local ($url) = "$ENV{'SCRIPTNAME'}?";
	local ($f);
	for $f (keys (%F)) {
		if ($f ne $name) {
			$url .= "$f=" . &encode($F{$f}) . "&";;
		}
	}
	$url .= $name . '=' . &encode($value);
}


From perlman@turing.acm.org Sun Jun 11 14:09:04 2006 -0400
Status: 
X-Status: 
X-Keywords:
Date: Sun, 11 Jun 2006 14:09:04 -0400 (EDT)
From: Gary PERLMAN <perlman@turing.acm.org>
To: Gary Perlman at OCLC <perlman@oclc.org>
Subject: send lang with wiki-request to OWC
Message-ID: <Pine.LNX.4.44.0606111408290.23686-100000@turing.acm.org>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII

Can also land on a better page, now.


From perlman@turing.acm.org Sun Jun 11 21:00:49 2006 -0400
Status: 
X-Status: 
X-Keywords:
Date: Sun, 11 Jun 2006 21:00:49 -0400 (EDT)
From: Gary PERLMAN <perlman@turing.acm.org>
To: "Jason D. Zevin" <jdz2001@med.cornell.edu>
Subject: Re: |STAT location request
In-Reply-To: <861612c67f49.448c34b3@med.cornell.edu>
Message-ID: <Pine.LNX.4.44.0606112100410.31646-100000@turing.acm.org>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII

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, 11 Jun 2006, Jason D. Zevin wrote:

> 
>  I AGREE TO ADHERE TO THE CONDITIONS OF USING |STAT.
>  I AGREE NOT TO SHARE THE |STAT LOCATION WITH OTHERS.
> 
> Thank you,
> J Zevin
> Weill-Cornell Medical College
> 


From perlman@turing.acm.org Sun Jun 11 22:34:44 2006 -0400
Status: 
X-Status: 
X-Keywords:
Date: Sun, 11 Jun 2006 22:34:43 -0400 (EDT)
From: Gary PERLMAN <perlman@turing.acm.org>
To: Gary Perlman at OCLC <perlman@oclc.org>
Subject: mysearch
Message-ID: <Pine.LNX.4.44.0606112234320.425-100000@turing.acm.org>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII

fpack index.html mysearch.cgi
Listing of files in this pack:
  index.html
  mysearch.cgi


From perlman@turing.acm.org Mon Jun 12 08:09:16 2006 -0400
Status: 
X-Status: 
X-Keywords:
Date: Mon, 12 Jun 2006 08:09:16 -0400 (EDT)
From: Gary PERLMAN <perlman@turing.acm.org>
To: Robert Thibadeau <rht@cs.cmu.edu>
Subject: Re: request for stat location to download
In-Reply-To: <LBEAJADOCPCBAOIPKIBIMELAFMAA.rht@cs.cmu.edu>
Message-ID: <Pine.LNX.4.44.0606120809090.13522-100000@turing.acm.org>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII

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, 12 Jun 2006, Robert Thibadeau wrote:

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


From perlman@turing.acm.org Mon Jun 12 08:09:38 2006 -0400
Status: 
X-Status: 
X-Keywords:
Date: Mon, 12 Jun 2006 08:09:37 -0400 (EDT)
From: Gary PERLMAN <perlman@turing.acm.org>
To: Ole-Marius Moe-Helgesen <moehelge@stud.ntnu.no>
Subject: Re: |STAT request
In-Reply-To: <20060612105623.GB18412@stud.ntnu.no>
Message-ID: <Pine.LNX.4.44.0606120809270.13522-100000@turing.acm.org>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII

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, 12 Jun 2006, Ole-Marius Moe-Helgesen 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 Jun 12 10:54:51 2006 -0400
Status: 
X-Status: 
X-Keywords:
Date: Mon, 12 Jun 2006 10:54:50 -0400 (EDT)
From: Gary PERLMAN <perlman@turing.acm.org>
To: ishelpdesk@hq.acm.org
Subject: disk is full
Message-ID: <Pine.LNX.4.44.0606121052270.23626-100000@turing.acm.org>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII

Just today, a lot of space seems to have disappeared:

Filesystem           1K-blocks      Used Available Use% Mounted on
acmweb11000:/acminfo/5
                      78924712  74915544         0 100% /acminfo/5



From perlman@turing.acm.org Mon Jun 12 11:09:53 2006 -0400
Status: 
X-Status: 
X-Keywords:
Date: Mon, 12 Jun 2006 11:09:53 -0400 (EDT)
From: Gary PERLMAN <perlman@turing.acm.org>
To: Gary Perlman at OCLC <perlman@oclc.org>
Subject: mysearch
Message-ID: <Pine.LNX.4.44.0606121109470.24493-100000@turing.acm.org>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII

fpack index.htm mysearch.cgi
Listing of files in this pack:
  index.htm
  mysearch.cgi
fpack:!@#$%^&*(): index.htm
<style type="text/css">
	<!--
		p.display {margin-left: .5in; border: solid gray 1px}
	-->
</style>

<h2>MySearch: Customized Search</h2>

<p>
A common complaint about FirstSearch search screens
is that they are too complex.
The same people who make these complaints ask for more functionality,
often, functionality that is little used.
In efforts to address this conflict,
FirstSearch has developed three search screens
(four, if you count the Home screen).
In this document, I propose creating one search screen --
or more properly, one search <i>form</i> --
that is meant to satisfy all needs for all users.
It is called MySearch, and is configured interactively by each user,
with options for persistence across sessions.
Users would be able to add search boxes, control the number of indexes shown,
show features like index and thesaurus browsing, etc.,
and the next time the search screen is seen,
it would be as the user left it.

<h3>Background</h3>

<p>
In creating different screens to meet the needs of different types of users,
FirstSearch presents more than twice the number of options any user might use.
In addition to cluttering up the screens,
there is added development cost for user interface code and online help.

<h4>Advanced Search</h3>
<p>
The FirstSearch Advanced Search screen, especially for WorldCat, is an example
of a full featured search screen meant to address almost any searcher's needs.
The WorldCat Advanced Search screen features:
<ul>
	<li>three search boxes
	<li>boolean operators between search boxes
	<li>index menus with 30 indexes arranged in a hierarchy	
		(most of which are used in less than 1% of searches)
	<li>buttons for each input field to browse the indexes for specific terms
	<li>limits for Year, Language (default 31 or all 486 languages), and Number of Libraries holding items
		(with reasonable usage for Year and Language, although almost all results
		are ordered with the most widely held items shown first)
	<li>limits by document type, audience, content type, and format
	<li>limits by specific libraries' holdings
	<li>rank options (almost always left to the default)
	<li>a seldom-used single button to access a thesaurus to find subject headings,
</ul>

Although much effort have gone into the design of the search screen,
it is at best imposing and at worst overwhelming to casual users.
Based on usage statistics, more than half of the screen is used
in less than 1% of searches.
That does not include searches that did not happen because users were scared away.

<p class=display>
<img src=advanced.gif alt="WorldCat Advanced Search Screen">
</p>

<h4>Expert Search</h3>
<p>
Compared to the WorldCat Advanced Search screen, the WorldCat Expert Search screen,
which is seldom used, presents:
<ul>
	<li>one large text area instead of three input fields connected by boolean operators,
		the idea being that expert users could edit complex queries
	<li>82 indexes instead of 30, almost all of which are almost never used
		(more indexes are shown when browsing indexes from the Expert Search screen)
	<li>on-screen help for patterns, boolean combinations, and proximity queries
</ul>

<p class=display>
<img src=expert.gif alt="WorldCat Expert Search Screen">
</p>

<h4>Basic Search</h3>
<p>
The WorldCat Basic Search screen hides most of the above
and presents separate boxes for each of the following indexes:
Keyword, Author, Title, ISBN, and Year.
If the user interface language is anything other than English,
a checkbox is shown to allow limiting to that language.
Buttons leading to index-specific help are provided for each field,
along the some format examples.
When FirstSearch 5.0 was released,
the Basic Search screen featured a single box with radio buttons for three indexes
(Keyword, Title, Author).
It was the default search screen, but FirstSearch administrators had the ability
to change that default to Advanced or Expert Search.

<p>
Purposely missing from the Basic Search screen:
<ul>
	<li>Thesaurus
	<li>Browse Index
	<li>Rank Options
	<li>Most Limits (Document type, Subtype, Library)
</ul>

<p class=display>
<img src=basic.gif alt="WorldCat Basic Search Screen">
</p>


<h3>Other Differences</h3>
<p>
There are other differences among the search screens:
<ul>
	<li><b>Persistence</b>: Because the screens differ in the number of search boxes and indexes,
		limits, and so on, it is difficult to maintain search options when switching screens.
	<li><b>Usage</b>: Expert search is not used much
	<li><b>Success</b>: Expert search has a higher zero-hit rate than the other screens
	<li><b>Help</b>: There are many files that customize Help for advanced and expert search
	</ul>

<table border=1 cellpadding=3 cellspacing=0>

<tr bgcolor="#CCCCCC">
<th colspan=4>
	WorldCat Stats for May 2006
</th>
</tr>

<tr valign=top>
	<td>
	</td>
	<th>Basic</th>
	<th>Advanced</th>
	<th>Expert</th>
</tr>

<tr valign=top>
	<th align=left>
		Default Search Screen (Authos/Insts)
	</th>
	<td align=right title="84% / 86%"> 30751 (84%) / 20710 (86%)</td>
	<td align=right title="15% / 14%"> 5427 (15%) / 3411 (14%)</td>
	<td align=right title="0% / 0%"> 37 (0%) / 36 (0%) </td>
</tr>

<tr valign=top>
	<th align=left>
		Queries (among all search types)
	</th>
	<td align=right title="25.9%"> 1,019,204 (25.9%)</td>
	<td align=right title="37.3%"> 1,468,016 (27.3%)</td>
	<td align=right title="1.4%"> 54,317 (1.4%)</td>
</tr>

<tr valign=top>
	<th align=left>
		Zero-Hit Queries
	</th>
	<td align=right title="22.4%"> 228,843 (22.4%)</td>
	<td align=right title="24.5%"> 359,900 (24.5%)</td>
	<td align=right title="31.3%"> 16,998 (31.3%)</td>
</tr>

<tr valign=top>
	<th align=left>
		Help Files (WorldCat)
		<span title="There are over 500 English Help files">*</span>
	</th>
	<td align=right > ? (3)</td>
	<td align=right > 167 (9)</td>
	<td align=right > 135 (8)</td>
</tr>

</table>

<h3>Introducing MySearch</h3>

<ul>
	<li><b>progressive disclosure</b>:
	<li><b>multi-featured search</b>:
	<li><b>single search screen</b>:
	<li><b>customizable</b>:
	<li><b>persistent interface settings</b>:
		big advantage of cookies
	<li><b>saved search terms</b>:
</ul>

<h4>Work To Do</h4>

<ol>
	<li>mechanism for organizing options
	<li>mechanism for editing options (little boxes, menus, forms)
	<li>mechanism for storing options (cookies vs LDAP)
	<li>method to make some/most/all form changes local on the browser
		(currently using a trip to server for changes)
	<li>can allow users to cusotmize which indexes appear in menus
	<li>could limit langs to those in browser locale
	<li>
</ol>

<h4>Example MySearch Configurations</h4>

<ul>
	<li><b>current</b>:
		<a href="http://www.hcibib.org/mysearch/mysearch.cgi"
			>http://www.hcibib.org/mysearch/mysearch.cgi</a>
	<li><b>Advanced FirstSearch</b>:
		<a href="http://www.hcibib.org/mysearch/mysearch.cgi?optindexmenuright=checked&optindexexpert=checked&optindexmenu=checked&optindexbrowse=checked&term1=&optinputheight=&term3=&term2=&optlimitmt=checked&optsavesearch=checked&operator3=%2B&optboolean=checked&index2=kw%3A&optlimitlang=checked&optnboxes=3&index1=kw%3A&index3=kw%3A&optsaveui=checked&operator2=%2B&optlimitdt=checked&optinputwidth=35&optclearbutton=checked"
			>SET</a>
	<li><b>Basic Search</b>:
		<a href="http://www.hcibib.org/mysearch/mysearch.cgi?optindexexpert=checked&optindexmenu=checked&term1=&term4=&index5=nb%3A&optinputheight=&term3=&term2=&persistent-mt%3Ajuv=&optindexcycle=checked&optlimitmt=&index4=su%3A&optsavesearch=checked&index2=ti%3A&optnboxes=6&term6=&index1=kw%3A&persistent-mt%3Afmt=&index3=au%3A&index6=yr%3A&optsaveui=checked&persistent-mt%3Acontent=&term5=&optlimitdt=&optinputwidth=35&optclearbutton=checked&optindexmenuright="
			>SET</a>
	<li><b>Expert Search</b>:
		<a href="http://www.hcibib.org/mysearch/mysearch.cgi?optindexmenuright=checked&optindexexpert=checked&optindexmenu=checked&optindexbrowse=checked&term1=&optinputheight=&term3=&term2=&optlimitmt=checked&optsavesearch=checked&operator3=%2B&optboolean=checked&index2=kw%3A&optlimitlang=checked&optnboxes=3&index1=kw%3A&index3=kw%3A&optsaveui=checked&operator2=%2B&optlimitdt=checked&optinputwidth=35&optclearbutton=checked"
			>SET</a>
</ul>

add one for known item,
one for subject searching

May searches 3940432        worldcat

<table border=1 cellpadding=3 cellspacing=0>
<tr>
<th bgcolor="#CCCCCC"colspan=2>
	May 2006 WorldCat Most Used Indexes
	<div>(percent of searches)</div>
</th>
</tr>
<tr bgcolor="#EEEEEE" valign=top>
	<th align=right>Index</th>
	<th >Usage % + Phrase Index</th>
</tr>
<tr valign=top><th align=right>Title ti:</th><td align=right>	     34.70	+ 4.13 = 38.83</td></tr>
<tr valign=top><th align=right>Keyword kw:</th><td align=right>	     31.64	</td></tr>
<tr valign=top><th align=right>Author au:</th><td align=right>	     19.56	+ 1.71 + <span title="pn=">0.93</span> = 22.20</td></tr>
<tr valign=top><th align=right>Doctype dt=</th><td align=right>	     20.52	</td></tr>
<tr valign=top><th align=right>ISBN nb:</th><td align=right>	      8.66	</td></tr>
<tr valign=top><th align=right>OCLC# no:</th><td align=right>	      5.17	</td></tr>
<tr valign=top><th align=right>Year yr:</th><td align=right>	      6.09	</td></tr>
<tr valign=top><th align=right>Language la=</th><td align=right>	      2.88	</td></tr>
<tr valign=top><th align=right>Material Type mt:</th><td align=right>	      2.24	</td></tr>
<tr valign=top><th align=right>Subject su:</th><td align=right>	      1.10	+ 2.18 = 3.28</td></tr>
<tr valign=top><th align=right>ISSN ns:</th><td align=right>	      1.53	</td></tr>
<tr valign=top><th align=right>Library li:</th><td align=right>	      1.06	</td></tr>
<tr valign=top><th align=right>Publisher pb:</th><td align=right>	      0.93	</td></tr>
</table>
fpack:!@#$%^&*(): mysearch.cgi
#! /usr/local/bin/perl

# TODO: database selection
# TODO: 	x-db -> quicksearch
# TODO:		db topics 
# TODO: rank options
# TODO: number of results per page + other results options
# TODO: appear on results page?
# TODO: let user choose the exact indexes they want, edit index list

# TODO: add help for each element, open small window

# TODO: limit langs to those in browser locale

# TODO: add limits with pulldown menu
#       onSelect location=  + name=other

# TODO: need library limits (mylib + box + ad hoc group)

# TODO: search box above, below, both, or with searchbox (needs radio)

# TODO: to do locally, need to hide elements and/or learn layers/css

# TODO: need edit option to show edit controls (yahoo edit/x move up/dn
# TODO: make use of limits with limit-dt= names

##########################################################################
# TODO: whoosh menu with options to add/hide
# TODO: multiway options (radio button)
##########################################################################

# DONE: limits: doctype material-type library year
# DONE: save values in cookies
# DONE: add links to apply mysearch to different engines (hide indexes for Google)
# DONE: apply index across terms to form query
# DONE: images for browse and thes
# DONE: header for search form
# DONE: show index abbreviations in menu
# DONE: language limit with + option
# DONE: index list on right/left
# DONE: larger index list
# DONE: buttons to call SCRIPTNAME + all options + changes
# DONE: make +/- icons do something useful
# DONE: add expand/contract buttons
# DONE: distribute indexes and execute search (or make search hot)
# DONE: checkbox to save UI, checkbox to save search (maybe search history)
# ????: instead of cookie autosave, add save button - using checkboxes


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

%F = &formdata ();

print '<html>
<head>
<title>MySearch: Customized Search</title>
<script language="JavaScript" src="scripts.js" type="text/javascript"></script>
</head>';

sub isTerm {
	local ($s) = (@_);
	if ($s =~ /^(term|index|operator|limit)/) {
		return 1;
	} else {
		return 0;
	}
}

for $f (keys (%F)) {
	if (&isTerm($f)) {
		($F{'optsavesearch'} eq 'checked') && ($url .= "$f=" . &encode($F{$f}) . "&");
		# print "\n<!-- $f is a term -->\n";
	} else {
		($F{'optsaveui'} eq 'checked') && ($url .= "$f=" . &encode($F{$f}) . "&");
		# print "\n<!-- $f is NOT a term -->\n";
	}
}

print "<script language=\"JavaScript\">
setCookie(\"searchoptions\", \"$url\");
</script>\n";
# print "<a href=\"http://hcibib.org/printenv.cgi\" title=printenv>*</a>\n";

&init();

&query();
&showform();

sub showform() {
	&form(1);
	if (!$F{'optinlinesearch'} && $F{'optbuttonsabove'} eq "checked") {
		&buttonline();
	}
	if ($F{'optheaders'}) {
		&line(1);
		local ($url, $label, $link);
		$label = &makeminus("Hide header/footer");
		$url = &optlink("optheaders", ""); # turn off headers
		$link = "<a href=\"$url\">$label</a>";
		&header($link); # label column
		&header("Index") if $F{'optindexmenu'} && $F{'optindexmenuright'} ne "checked";
		&header("Search Terms");
		&header("Index") if $F{'optindexmenu'} && $F{'optindexmenuright'} eq "checked";
		&header("Browse") if $F{'optindexbrowse'};
		&header("Vocab") if $F{'optindexthes'};
		&line(0);
	}
	$F{'optinputwidth'} = 30 unless $F{'optinputwidth'};
	$F{'optinputheight'} = 1 unless $F{'optinputheight'};
	for $i (1..$F{'optnboxes'}) {
		&line(1);
			############################### boolean operators
			&label(1);
			if ($i == 1) {
				if ($F{'optbuttonlabel'} eq 'checked') {
					$label = "<input type=submit value=\"Search\">";
				} else {
					$label = "Search";
				}
				print "<label for=term$i>$label</label>";
			} elsif ($F{'optboolean'}) {
				&boolean($i);
			}
			&label(0);
			############################### index menu
			if ($F{'optindexmenu'} && $F{'optindexmenuright'} ne "checked") { # index menu on left
				&element(1);
				&indexmenu($i);
				&element(0);
			}
			############################### search box
			&element(1);
				$termname = "term$i";
				if ($F{'optinputheight'} > 1) {
					print "<textarea align=top cols=$F{'optinputwidth'} rows=$F{'optinputheight'} wrap=virtual id=$termname name=$termname>$F{$termname}</textarea>";
				} else {
					print "<input type=text size=$F{'optinputwidth'} value=\"$F{$termname}\" id=$termname name=$termname>";
				}
				if ($i == 1 && $F{'optinlinesearch'}) {
					print &buttons();
				}
			&element(0);
			############################### index menu
			if ($F{'optindexmenu'} && $F{'optindexmenuright'} eq "checked") { # index menu on right
				&element(1);
				&indexmenu($i);
				&element(0);
			}
			############################### index browse buttons
			if ($F{'optindexbrowse'}) {
				&element(1);
				&indexbrowse($i);
				&element(0);
			}
			############################### thesaurus browse buttons
			if ($F{'optindexthes'}) {
				&element(1);
				&indexthes($i);
				&element(0);
			}
		&line(0);
	}

	if ($F{'optheaders'}) {
		&line(1);
		local ($url, $label, $link, $link2);
		$help = &makehelp();
		############################### boolean
		if ($F{'optboolean'}) {
			$url = &optlink("optboolean", "");
			$link = "<a href=\"$url\">" . &makeminus("Hide boolean operators") . "</a>";
			&header("$link $help"); # label column operators
		} else {
			$url = &optlink("optboolean", "checked");
			$link = "<a href=\"$url\">" . &makeplus("Show boolean operators") . "</a>";
			&header("$link $help"); # label column operators
		}
		############################### index menus
		&showindexmenubuttons() unless $F{'optindexmenuright'} eq "checked";

		############################### number of boxes
		$url = &optlink("optnboxes", $F{'optnboxes'}+1);
		$link = "<a href=\"$url\">" . &makeplus("Add a search box") . "</a>";
		if ($F{'optnboxes'} > 1) {
			$url = &optlink("optnboxes", $F{'optnboxes'}-1);
			$link2 = "<a href=\"$url\">" . &makeminus("Delete a search box") . "</a>";
			&header("$link $link2 $help");
		} else {
			&header("$link $help");
		}

		############################### index menus
		&showindexmenubuttons() if $F{'optindexmenuright'} eq "checked";

		############################### index browse
		if ($F{'optindexbrowse'}) {
			$url = &optlink("optindexbrowse", "");
			$link = "<a href=\"$url\">" . &makeminus("Hide index browse") . "</a>";
			&header("$link $help");
		}
		############################### thesausus browse
		if ($F{'optindexthes'}) {
			$url = &optlink("optindexthes", "");
			$link = "<a href=\"$url\">" . &makeminus("Hide thesaurus browse") . "</a>";
			&header("$link $help");
		}
		&line(0);
	}
	if ($F{'optlimitlang'}) {
		&limitlang();
	}
	if ($F{'optlimitnlib'}) {
		&limitnlib();
	}
	if ($F{'optlimitdt'}) {
		&limitdt();
	}
	if ($F{'optlimitmt'}) {
		&limitmt();
	}
	if (!$F{'optinlinesearch'} && $F{'optbuttonsabove'} ne "checked") {
		&buttonline();
	}
	if ($F{'opteditform'} eq 'checked') {
		&showoptions();
	} else {
		&hideoptions();
	}
	&form(0);
}

sub showindexmenubuttons {
		local ($url, $link, $link2, $link3);
		if ($F{'optindexmenuright'} eq "checked") {
			$url = &optlink("optindexmenuright", "");
			$link3 = "<a href=\"$url\">" . &makeleft("Move indexes to left side") . "</a>";
		} else {
			$url = &optlink("optindexmenuright", "checked");
			$link3 = "<a href=\"$url\">" . &makeright("Move indexes to right side") . "</a>";
		}
		if ($F{'optindexmenu'}) {
			if ($F{'optindexexpert'}) {
				$url = &optlink("optindexexpert", "");
				$link = "<a href=\"$url\">" . &makeminus("Fewer indexes") . "</a>";
				&header("$link $link3 $help");
			} else {
				$url = &optlink("optindexexpert", "checked");
				$link = "<a href=\"$url\">" . &makeplus("More indexes") . "</a>";
				$url = &optlink("optindexmenu", "");
				$link2 = "<a href=\"$url\">" . &makeminus("Hide indexes") . "</a>";
				&header("$link $link2 $link3 $help");
			}
		}
}

sub makehelp {
	return "<img onClick=\"alert('sorry, no help yet')\" alt=Help src=\"help-12.gif\" height=12 width=12 border=0 align=absmiddle/>";
	}

sub makeplus {
	local ($alt) = (@_);
	$alt = "More" unless $alt;
	return "<img alt=\"$alt\" title=\"$alt\" src=\"plus-12.gif\" height=12 width=12 border=0 align=absmiddle/>";
}

sub makeminus {
	local ($alt) = (@_);
	$alt = "Less" unless $alt;
	return "<img alt=\"$alt\" title=\"$alt\" src=\"minus-12.gif\" height=12 width=12 border=0 align=absmiddle/>";
}

sub makeright {
	local ($alt) = (@_);
	$alt = "Right" unless $alt;
	return "<img alt=\"$alt\" title=\"$alt\"  src=\"right-12.gif\" height=12 width=12 border=0 align=absmiddle/>";
}

sub makeleft {
	local ($alt) = (@_);
	$alt = "Left" unless $alt;
	return "<img alt=\"$alt\" title=\"$alt\"  src=\"left-12.gif\" height=12 width=12 border=0 align=absmiddle/>";
}

sub limitlang {
	&line(1);
	&label(1);
		print "<label for=\"limitlang\">Language:</label>\n";
	&label(0);
	&element(1, 5);
		print "<select id=limitlang name=\"limit-la=\">\n";
		if ($F{'optlimitlangmax'}) {
			print "<option value=\"eng\">English\n";
			print "<option value=\"\">This menu would show over 400 languages\n";
		} else {
			print '<option value="ara">Arabic';
			print '<option value="bul">Bulgarian';
			print '<option value="chi">Chinese';
			print '<option value="scr">Croatian';
			print '<option value="cze">Czech';
			print '<option value="dan">Danish';
			print '<option value="dut">Dutch';
			print '<option value="eng">English';
			print '<option value="fre">French';
			print '<option value="ger">German';
			print '<option value="gre">Greek, Modern [1453- ]';
			print '<option value="heb">Hebrew';
			print '<option value="hin">Hindi';
			print '<option value="hun">Hungarian';
			print '<option value="ind">Indonesian';
			print '<option value="ita">Italian';
			print '<option value="jpn">Japanese';
			print '<option value="kor">Korean';
			print '<option value="lat">Latin';
			print '<option value="nor">Norwegian';
			print '<option value="per">Persian';
			print '<option value="pol">Polish';
			print '<option value="por">Portuguese';
			print '<option value="rum">Romanian';
			print '<option value="rus">Russian';
			print '<option value="spa">Spanish';
			print '<option value="swe">Swedish';
			print '<option value="tha">Thai';
			print '<option value="tur">Turkish';
			print '<option value="ukr">Ukrainian';
			print '<option value="other">Other';
		}
		print "</select>\n";
		local ($url, $label);
		if ($F{'optlimitlangmax'}) {
			$url = &optlink("optlimitlangmax", ""); # turn off max langs
			print "<a href=\"$url\">" . &makeminus("Fewer languages") . "</a>\n";
		} else {
			$url = &optlink("optlimitlang", ""); # turn off lang limit
			print "<a href=\"$url\">" . &makeminus("Hide language limit") . "</a>\n";
			$url = &optlink("optlimitlangmax", "checked");
			print "<a href=\"$url\">" . &makeplus("More languages") . "</a>\n";
		}
		print &makehelp();
	&element(0);
	&line(0);
}

sub limitnlib {
	&line(1);
	&label(1);
		print "<label for=\"limitnlib\">Number of Libraries:</label>\n";
	&label(0);
	&element(1, 5);
	print "<select id=limitnlib name=\"limit-cg:\">\n";
	print '	<option value="" Selected>Any number of libraries</option>
				<option value="05">5 or more</option>
				<option value="07">50 or more</option>
				<option value="09">500 or more</option>';
	print "</select>\n";
	local ($url, $label);
	$label = &makeminus("Hide");
	$url = &optlink("optlimitnlib", ""); # turn off limit
	print "<a href=\"$url\">$label</a>\n";
	print &makehelp();
	&element(0);
	&line(0);
}

sub limitmt {
	&line(1);
	&label(1);
		print "<label for=\"limitmt\">Material Type:</label>\n";
	&label(0);
	&element(1, 5);
			print '<select name="persistent-mt:juv" class="subtype">
	<option value="" Selected class="menuheader">Any Audience</option>
	<option value="juv" class="menuoption">Juvenile</option>
	<option value="~juv" class="menuoption">not Juvenile</option>
</select>
			<select name="persistent-mt:content" class="subtype">
	<option value="" Selected class="menuheader">Any Content</option>
	<option value="fic" class="menuoption">Fiction</option>
	<option value="~fic" class="menuoption">not Fiction</option>
	<option value="bio" class="menuoption">Biography</option>
	<option value="deg" class="menuoption">Thesis/dissertation</option>
	<option value="msr" class="menuoption">Musical recording</option>
	<option value="nsr" class="menuoption">Non-musical recording</option>
</select>
			<select name="persistent-mt:fmt" class="subtype">
	<option value="" Selected class="menuheader">Any Format</option>
	<option value="lpt" class="menuoption">Large print</option>
	<option value="brl" class="menuoption">Braille</option>
	<option value="mss" class="menuoption">Manuscript</option>
	<option value="mic" class="menuoption">Microform</option>
	<option value="~mic" class="menuoption">not Microform</option>
	<option value="*" class="menuoption">-----------</option>
	<option value="cda" class="menuoption">CD audio</option>
	<option value="cas" class="menuoption">Cassette recording</option>
	<option value="lps" class="menuoption">LP recording</option>
	<option value="vca" class="menuoption">VHS tape / Videocassette</option>
	<option value="vdc" class="menuoption">DVD video / Videodisc</option>
</select>
';
	local ($url, $label);
	$label = &makeminus("Hide");
	$url = &optlink("optlimitmt", ""); # turn off limit
	print "<a href=\"$url\">$label</a>\n";
	print &makehelp();
	&element(0);
	&line(0);
}

sub limitdt {
	&line(1);
	&label(1);
		print "<label for=\"limitdt\">Document Type:</label>\n";
	&label(0);
	&element(1, 5);
	# list doctypes here
print '
<table border=0 cellpadding=1 cellspacing=0>
			<tr valign=baseline><td nowrap><font size="2" face="Tahoma,Arial,Helvetica" COLOR="#666666"><b>
			<input type=checkbox id="dt-bks" name="limit-dt=" value="bks" &limit-dt=bks;>
				<label for="dt-bks" title="Books, Pamphlets, Technical reports, Manuscripts, Legal papers, Theses and dissertations">
					<a href=""><img height=16 width=16 border=0 align="absmiddle" src="http://firstsearch.org/images/icon-bks.gif" alt="Book"></a>
					Books</label>
			</b></font></td><td nowrap><font size="2" face="Tahoma,Arial,Helvetica" COLOR="#666666"><b>
			<input type=checkbox id="dt-ser" name="limit-dt=" value="ser" &limit-dt=ser;>
				<label for="dt-ser" title="Periodicals, Newspapers, Annuals, Journals, Memoirs, Proceedings">
					<a href=""><img height=16 width=16 border=0 align="absmiddle" src="http://firstsearch.org/images/icon-ser.gif" alt="Serial Publication"></a>
					Serial Publications</label>
			</b></font></td><td nowrap><font size="2" face="Tahoma,Arial,Helvetica" COLOR="#666666"><b>
			<input type=checkbox id="dt-art" name="limit-dt=" value="art" &limit-dt=art;>
				<label for="dt-art" title="Magazine and journal articles, chapters, conference papers">
					<a href=""><img height=16 width=16 border=0 align="absmiddle" src="http://firstsearch.org/images/icon-art.gif" alt="Article"></a>
					Articles</label>
			</b></font></td></tr>
			<tr valign=baseline><td nowrap><font size="2" face="Tahoma,Arial,Helvetica" COLOR="#666666"><b>
			<input type=checkbox id="dt-vis" name="limit-dt=" value="vis" &limit-dt=vis;>
				<label for="dt-vis" title="Motion pictures, Videorecordings, Filmstrips, Slides, Transparencies, Photos, Cards, Charts, Drawings">
					<a href=""><img height=16 width=16 border=0 align="absmiddle" src="http://firstsearch.org/images/icon-vis.gif" alt="Visual Material"></a>
					Visual Materials</label>
			</b></font></td><td nowrap><font size="2" face="Tahoma,Arial,Helvetica" COLOR="#666666"><b>
			<input type=checkbox id="dt-rec" name="limit-dt=" value="rec" &limit-dt=rec;>
				<label for="dt-rec" title="Musical, Spoken, Books on Tape, etc. on DVD, CD, Cassette, and LP recordings">
					<a href=""><img height=16 width=16 border=0 align="absmiddle" src="http://firstsearch.org/images/icon-rec.gif" alt="Sound Recording"></a>
					Sound Recordings</label>
			</b></font></td><td nowrap><font size="2" face="Tahoma,Arial,Helvetica" COLOR="#666666"><b>
			<input type=checkbox id="dt-sco" name="limit-dt=" value="sco" &limit-dt=sco;>
				<label for="dt-sco" title="Musical scores, Anthologies">
					<a href=""><img height=16 width=16 border=0 align="absmiddle" src="http://firstsearch.org/images/icon-sco.gif" alt="Musical Score"></a>
					Musical Scores</label>
			</b></font></td></tr>
			<tr valign=baseline><td nowrap><font size="2" face="Tahoma,Arial,Helvetica" COLOR="#666666"><b>
			<input type=checkbox id="dt-com" name="limit-dt=" value="com" &limit-dt=com;>
				<label for="dt-com" title="Computer files, Data, Software">
					<a href=""><img height=16 width=16 border=0 align="absmiddle" src="http://firstsearch.org/images/icon-com.gif" alt="Computer File"></a>
					Computer Files</label>
			</b></font></td><td nowrap><font size="2" face="Tahoma,Arial,Helvetica" COLOR="#666666"><b>
			<input type=checkbox id="dt-mix" name="limit-dt=" value="mix" &limit-dt=mix;>
				<label for="dt-mix" title="Archival materials">
					<a href=""><img height=16 width=16 border=0 align="absmiddle" src="http://firstsearch.org/images/icon-mix.gif" alt="Archival Material"></a>
					Archival Materials</label>
			</b></font></td><td nowrap><font size="2" face="Tahoma,Arial,Helvetica" COLOR="#666666"><b>
			<input type=checkbox id="dt-map" name="limit-dt=" value="map" &limit-dt=map;>
				<label for="dt-map" title="Maps, Globes">
					<a href=""><img height=16 width=16 border=0 align="absmiddle" src="http://firstsearch.org/images/icon-map.gif" alt="Map"></a>
					Maps</label>
			</b></font></td></tr>
			<tr><td nowrap><font size="2" face="Tahoma,Arial,Helvetica" COLOR="#666666"><b>
			<input type=checkbox id="dt-url" name="limit-dt=" value="url" &limit-dt=url;>
				<label for="dt-url" title="Web sites, Online electronic books, Documents, Sound files, Images, Data">
					<a href=""><img height=16 width=16 border=0 align="absmiddle" src="http://firstsearch.org/images/icon-url.gif" alt="Internet Resource"></a>
					Internet Resources</label>
			</b></font></td><td colspan=2 nowrap>
			<font size="2" face="Tahoma,Arial,Helvetica" COLOR="#666666"><b>
			<input type=checkbox id="dt-int" name="limit-dt=" value="int" &limit-dt=int;>
				<label for="dt-int" title="Databases, websites, updated loose leaf">
					<a href=""><img height=16 width=16 border=0 align="absmiddle" src="http://firstsearch.org/images/icon-int.gif" alt="Continually Updated Resource"></a>
					Continually Updated Resources</label>
			</b></font>
			</td><td nowrap><font size="2" face="Tahoma,Arial,Helvetica" COLOR="#666666"><b>
				<img alt=Less src="minus-12.gif" height=12 width=12 border=0 align=absmiddle/></a>
<img alt=Help src="help-12.gif" height=12 width=12 border=0 align=absmiddle/>
			</b></font>
			</td></tr>
			</table>';
	# local ($url, $label);
	# $label = &makeminus("Hide");
	# $url = &optlink("optlimitdt", ""); # turn off limit
	# print "<a href=\"$url\">$label</a>\n";
	# print &makehelp();
	&element(0);
	&line(0);
}

sub buttonline {
	&line(1);
	&label(1);
	&label(0);
	&element(1, 5);
		print &buttons();
	&element(0);
	&line(0);
}

sub buttons {
	local ($buttons) = "<input type=submit value=\"Search\">\n";
	if ($F{'optclearbutton'}) {
		$buttons .= "<input type=reset value=\"Clear\">\n";
	if ($F{'opteditform'} ne "checked") {
		local ($url) = &optlink("opteditform", "checked");
		local ($label) = &makeplus("Show MySearch form to customize your search");
		$buttons .= "<a href=\"$url\">$label</a>";
	}
	return $buttons;
	}
}

sub init {
	&addoption('general', "General", '0');
	&addoption('opteditform', 'show MySearch edit form');
	&addoption('optsaveui', 'save search form options');
	&addoption('optsavesearch', 'save search terms');
	&addoption('optheaders', "show form headers/footers");

	&addoption('search', "Search boxes", '0');
	&addoption('optnboxes', "number of search boxes", 2);
	&addoption('optinputwidth', "width of search boxes", 2);
	&addoption('optinputheight', "height of search boxes", 2);
	&addoption('optboolean', "show boolean operators");

	&addoption('index', "Indexes", '0');
	&addoption('optindexmenu', "show index menus on search boxes");
	&addoption('optindexmenuright', "show index menus on right");
	&addoption('optindexexpert', "show long index menus on search boxes");
	&addoption('optindexabbreviations', "show index abbreviations in menus");
	&addoption('optindexcycle', "cycle through index menu values");

	&addoption('browse', "Browse options", '0');
	&addoption('optindexbrowse', "show index browse buttons");
	&addoption('optindexthes', "show thesaurus buttons");

	&addoption('limit', "Limits", '0');
	&addoption('optlimitlang', "show language limit");
	&addoption('optlimitlangmax', "show all languages in language limit");
	&addoption('optlimitnlib', "show limit to number of libraries");
	&addoption('optlimitdt', "show document type limits");
	&addoption('optlimitmt', "show material type limits");

	&addoption('buttons', "Buttons", '0');
	&addoption('optinlinesearch', "show search button on same line as search box");
	&addoption('optbuttonsabove', "show search button above search form");
	&addoption('optbuttonlabel', "show search button as label for box");
	&addoption('optclearbutton', "show a clear button");

	@indexes = split(/\s+/, "kw: ti: au: su: nb: yr:");
	@indexes2 = split(/\s+/, "kw: ti: au: su: nb: yr: no: pb: am: so: ns: mt: li: dt= la=");
	$indexname{"kw:"} = "Keyword";
	$indexname{"au:"} = "Author";
	$indexname{"ti:"} = "Title";
	$indexname{"am:"} = "Access Method";
	$indexname{"su:"} = "Subject";
	$indexname{"no:"} = "Accession Number";
	$indexname{"nb:"} = "ISBN";
	$indexname{"ns:"} = "ISSN";
	$indexname{"mt:"} = "Material Type";
	$indexname{"pb:"} = "Publisher";
	$indexname{"yr:"} = "Year";
	$indexname{"so:"} = "Periodical Title";
	$indexname{"dt="} = "Document Type";
	$indexname{"li:"} = "Library";
	$indexname{"la="} = "Language";
	$operator{'+'} = "and";
	$operator{'|'} = "or";
	$operator{'-'} = "not";
	$label{'none'} = "None";
	$label{'basic'} = "Basic";
	$label{'advanced'} = "Advanced";
	$label{'all'} = "All";
	$doctype{'bks'} = "Books";
	$doctype{'ser'} = "Serial Publications";
	$doctype{'art'} = "Articles";
	$doctype{'vis'} = "Visual Materials";
	$doctype{'rec'} = "Sound Recordings";
	$doctype{'sco'} = "Musical Scores";
	$doctype{'com'} = "Computer Files";
	$doctype{'mix'} = "Archival Materialsx";
	$doctype{'map'} = "Maps";
	$doctype{'url'} = "Internet Resources";
	$doctype{'int'} = "Continually Updated Resources";
}


sub boolean {
	local ($n) = (@_);
	local ($varname) = "operator$n";
	local ($value) = $F{$varname};
	$andselected = ($value eq '+') ? "selected" : "";
	$orselected = ($value eq '|') ? "selected" : "";
	$notselected = ($value eq '-') ? "selected" : "";
	print "<select style=\"font-size:90%\" name=operator$n>
		<option value=\"+\" $andselected>and
		<option value=\"|\" $orselected>or
		<option value=\"-\" $notselected>not
	</select>\n";
}

sub indexmenu {
	local ($n) = (@_);
	local ($indexname) = "index$n";
	local (@list) = @indexes;
	if ($F{'optindexexpert'}) {
		@list = @indexes2;
	}
	if ($F{'optindexcycle'}) {
		$F{$indexname} = $list[$n-1];
	}
	print "&nbsp;<select style=\"font-size:90%\" name=$indexname>\n";
	for $index (@list) {
		$selected = ($F{$indexname} eq $index) ? "selected" : "";
		print "	<option value=\"$index\" $selected>$indexname{$index}";
		if ($F{'optindexabbreviations'}) {
			print "&nbsp;($index)";
		print "\n";
		}
	}
	print "</select>\n";
}

sub indexbrowse {
	local ($n) = (@_);
	$icon = "http://firstsearch.oclc.org/images/fs_scanindex.gif";
	print "&nbsp;<a title=\"browse index\" href=\"\"><img align=absmiddle border=0 src=\"$icon\" height=20 width=36></a>";
}

sub indexthes {
	local ($n) = (@_);
	$icon = "http://firstsearch.oclc.org/images/fs_tree.gif";
	print "&nbsp;<a title=\"browse thesaurus\" href=\"\"><img align=absmiddle border=0 src=\"$icon\" height=20 width=36></a>";
}

sub element {
	local ($code, $span) = (@_);
	if ($span) {
		$span = "colspan=$span";
	}
	if ($code) {
		print ("	<td $span bgcolor=\"#CCCCCC\"><font size=2>");
	} else {
		print "</font></td>\n";
	}
}

sub header {
	local ($text) = (@_);
	print ("	<th bgcolor=\"#EEEEEE\" align=left style=\"font-size:70%\">");
	print ($text);
	print "</th>\n";
}

sub label {
	local ($code) = (@_);
	if ($code) {
		print "	<th align=right><font size=2><b>\n"
	} else {
		print "</b></font></th>\n";
	}
}

sub line {
	local ($code) = (@_);
	if ($code) {
		print "<tr valign=top>\n"
	} else {
		print "</tr>\n";
	}
}

sub addoption {
	local ($name, $help, $count) = (@_);
	$help{$name} = $help;
	@options = (@options, $name);
	if ($count ne "") {
		if ($count > 0) {
			$integer{$name} = $count;
		} else {
			$title{$name} = 1;
		}
	}
}

sub showoptions {
	&line(1);
		&label(1);
		print "MySearch:";
		&label(0);
		&element(1, 5);
		for $opt (@options) {
			print "<div title=\"$opt\">";
			if ($integer{$opt}) {
				print "<input type=text size=$integer{$opt} id=$opt name=$opt value=\"$F{$opt}\"> <label for=$opt>$help{$opt}</label>\n";
				local ($url, $link, $diff);
				$diff = $F{$opt} > 10 ? 5 : 1;
				if ($F{$opt} > 1) {
					$label = &makeminus("Decrease");
					$url = &optlink($opt, $F{$opt} - $diff);
					print "<a href=\"$url\">$label</a>\n";
				}
				$label = &makeplus("Increase");
				$url = &optlink($opt, $F{$opt} + $diff);
				print "<a href=\"$url\">$label</a>\n";
			} elsif ($title{$opt}) {
				print "<b>$help{$opt}</b>\n";
			} else {
				print "<input type=checkbox id=$opt name=$opt value=checked $F{$opt}> <label for=$opt>$help{$opt}</label>\n";
				local ($url, $link);
				if ($F{$opt} eq "checked") {
					$label = &makeminus("Turn off");
					$url = &optlink($opt, "");
				} else {
					$label = &makeplus("Turn on");
					$url = &optlink($opt, "checked");
				}
				print "<a href=\"$url\">$label</a>\n";
			}
			print "</div>";
		}
		&element(0);
	&line(0);
}

sub hideoptions {
	for $opt (@options) {
		if ($title{$opt}) {
			print "<!-- $help{$opt} -->\n";
		} else {
			print "<input type=hidden name=$opt value=\"$F{$opt}\">\n"
		}
	}
}

sub form {
	local ($code) = (@_);
	if ($code) {
		print "<table border=0 cellpadding=3 cellspacing=1>\n";
		print "<form name=form method=POST action=\"$ENV{'SCRIPTNAME'}\">\n";
	} else {
		print "</form>\n";
		print "</table>\n";
	}
}

sub formdata { # nil -> %F
    local (*formdata);
    if ($ENV{'REQUEST_METHOD'} eq 'POST') {
        read (STDIN, $F, $ENV{'CONTENT_LENGTH'});
    } else {
        $F = $ENV{'QUERY_STRING'};
		if ($F eq "") {
			$F = $ENV{'HTTP_COOKIE'};
			# print "<pre>xyzzy got cookie: $F</pre>\n";
			# pick out searchoptions
			if ($F =~ /.*searchoptions=([^;]*)/) {
				$F = $1;
				# print "<pre>xyzzy got searchoptions: $F</pre>\n";
				$F =~ s/%([\dA-Fa-f][\dA-Fa-f])/pack ("C", hex ($1))/eg; # decode
				# print "<pre>xyzzy decoded: $F</pre>\n";
				# now $F looks like a=xxx&b=yyy&c=zzz
			} else {
				# print "<pre>xyzzy no cookie</pre>\n";
			}
		}
    }
    @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 query {
	local ($oname, $iname, $tname);
	local ($max) = $F{'optnboxes'};
	$max = 1 unless $max;
	local ($find, $yahoo, $google, $amazon, $wiki)  = "";
	for $n (1..$max) {
		$oname = "operator$n";
		$iname = "index$n";
		$tname = "term$n";
		if ($F{$tname}) {
			$google .= "$F{$oname} $F{$tname} ";
			for $t (split (/\s+/, $F{$tname})) {
				$find .= "$F{$oname} $F{$iname} $t ";
			}
		}
	}
	$wiki = $amazon = $yahoo = $google;
	$findit = "http://worldcatlibraries.org/wcpa/search?q=";
	$googleit = "http://www.google.com/search?q=";
	$yahooit = "http://search.yahoo.com/search?p=";
	$amazonit = "http://www.amazon.com/exec/obidos/external-search/?mode=books&keyword=";
	$wikiit = "http://en.wikipedia.org/wiki/";

	print "<p>";
	$encoded = &encode($find);
	print "<a target=other title=\"$find\" href=\"$findit$encoded\">Find</a>\n";
	$encoded = &encode($google);
	print "<a target=other title=\"$google\" href=\"$googleit$encoded\">Google</a>\n";
	$encoded = &encode($yahoo);
	print "<a target=other title=\"$yahoo\" href=\"$yahooit$encoded\">Yahoo</a>\n";
	$encoded = &encode($amazon);
	print "<a target=other title=\"$amazon\" href=\"$amazonit$encoded\">Amazon</a>\n";
	$encoded = &encode($wiki);
	print "<a target=other title=\"$wiki\" href=\"$wikiit$encoded\">Wikipedia</a>\n";
	print "</p>\n";
}

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

sub optlink {
	local ($name, $value) = (@_);
	local ($url) = "$ENV{'SCRIPTNAME'}?";
	local ($f);
	for $f (keys (%F)) {
		if ($f ne $name) {
			$url .= "$f=" . &encode($F{$f}) . "&";;
		}
	}
	$url .= $name . '=' . &encode($value);
}
fpack:!@#$%^&*(): 


From perlman@turing.acm.org Wed Jun 21 09:14:36 2006 -0400
Status: 
X-Status: 
X-Keywords:
Date: Wed, 21 Jun 2006 09:14:35 -0400 (EDT)
From: Gary PERLMAN <perlman@turing.acm.org>
To: director@hcibib.org
Subject: Re: SUGGEST-A-LINK!: User Interface Design, India, Delhi
In-Reply-To: <200606151100.k5FB0W77009329@turing.acm.org>
Message-ID: <Pine.LNX.4.44.0606210914260.10494-100000@turing.acm.org>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII

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 Thu, 15 Jun 2006, Rakesh k Singh wrote:

> This data is being sent to director@hcibib.org
> to be considered for inclusion in the HCI Bibliography
> 
> %M U.360dx.com info@360dx.com Rakesh k Singh 61.246.2.3
> %0 INTERNET
> %D 2006-06-15
> %K hci-sites:consultants hci-sites:companies
> %A Rakesh K Singh
> %C India, Delhi
> %K HCI, Usability, UI Design, user Centered Design, India, Delhi, 360dx.com, Web Design
> %L English
> %T User Interface Design, India, Delhi
> %U info@360dx.com
> %W http://360dx.com
> %X User Interface Design (UID) is aiming for optimal user interfaces for our customers, which are intuitive, attractive, and innovative based on user-centered design processes. 
> 


From perlman@turing.acm.org Wed Jun 21 09:15:13 2006 -0400
Status: 
X-Status: 
X-Keywords:
Date: Wed, 21 Jun 2006 09:15:12 -0400 (EDT)
From: Gary PERLMAN <perlman@turing.acm.org>
To: director@hcibib.org
cc: info@360dx.com
Subject: Re: SUGGEST-A-LINK!: User Interface Design, India, Delhi
In-Reply-To: <200606151100.k5FB0W77009329@turing.acm.org>
Message-ID: <Pine.LNX.4.44.0606210914530.10494-100000@turing.acm.org>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII

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 Thu, 15 Jun 2006, Rakesh k Singh wrote:

> This data is being sent to director@hcibib.org
> to be considered for inclusion in the HCI Bibliography
> 
> %M U.360dx.com info@360dx.com Rakesh k Singh 61.246.2.3
> %0 INTERNET
> %D 2006-06-15
> %K hci-sites:consultants hci-sites:companies
> %A Rakesh K Singh
> %C India, Delhi
> %K HCI, Usability, UI Design, user Centered Design, India, Delhi, 360dx.com, Web Design
> %L English
> %T User Interface Design, India, Delhi
> %U info@360dx.com
> %W http://360dx.com
> %X User Interface Design (UID) is aiming for optimal user interfaces for our customers, which are intuitive, attractive, and innovative based on user-centered design processes. 
> 


From perlman@turing.acm.org Wed Jun 21 09:41:56 2006 -0400
Status: 
X-Status: 
X-Keywords:
Date: Wed, 21 Jun 2006 09:41:56 -0400 (EDT)
From: Gary PERLMAN <perlman@turing.acm.org>
To: Gary perlman <perlman@turing.acm.org>
Subject: hcibib cookies
Message-ID: <Pine.LNX.4.44.0606210941100.16027-100000@turing.acm.org>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII

Save abstract on/ff for bibtoc in a cookie

Save hcibib search options in a cookie


From perlman@turing.acm.org Wed Jun 21 11:12:04 2006 -0400
Status: 
X-Status: 
X-Keywords:
Date: Wed, 21 Jun 2006 11:12:04 -0400 (EDT)
From: Gary PERLMAN <perlman@turing.acm.org>
To: Nikiforos Karamanis <Nikiforos.Karamanis@cl.cam.ac.uk>
Subject: Re: request of |STAT tar file
In-Reply-To: <449951EC.1060504@cl.cam.ac.uk>
Message-ID: <Pine.LNX.4.44.0606211111580.26793-100000@turing.acm.org>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII

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, 21 Jun 2006, Nikiforos Karamanis wrote:

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


From perlman@turing.acm.org Thu Jun 22 16:32:31 2006 -0400
Status: 
X-Status: 
X-Keywords:
Date: Thu, 22 Jun 2006 16:32:31 -0400 (EDT)
From: Gary PERLMAN <perlman@turing.acm.org>
To: Yuan Qi <yuan.qi@utsouthwestern.edu>
Subject: Re: |STAT request
In-Reply-To: <OCEPJLIMGOPFMOAEJPOPOEIPPNAA.yuan.qi@utsouthwestern.edu>
Message-ID: <Pine.LNX.4.44.0606221632230.10393-100000@turing.acm.org>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII

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, 22 Jun 2006, Yuan Qi wrote:

> Dear Dr. perlman,
> 
> I am writing to request the location of the |STAT files.
>   
> I AGREE TO ADHERE TO THE CONDITIONS OF USING |STAT.
> I AGREE NOT TO SHARE THE |STAT LOCATION WITH OTHERS.
> 
> Thanks a lot,
> 
> Yuan
> 


From perlman@turing.acm.org Thu Jun 22 21:29:57 2006 -0400
Status: 
X-Status: 
X-Keywords:
Date: Thu, 22 Jun 2006 21:29:56 -0400 (EDT)
From: Gary PERLMAN <perlman@turing.acm.org>
To: Jonathan Grudin <jgrudin@microsoft.com>
Subject: Re: Your 1985 Unix/World paper?
In-Reply-To: <CC1FD7F4C1A244449DD6DF72439BE7F30934710D@RED-MSG-50.redmond.corp.microsoft.com>
Message-ID: <Pine.LNX.4.44.0606222123390.20450-100000@turing.acm.org>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII

http://acm.org/perlman/1985-unix-world.pdf

Hawaii seems unlikely, but you never know.

Missed you at CHI in Montreal. Tom, Serge, and Jim Hollan had a nice dinner.

Jazz festival starts soon. Then we go to Virginia and Vancouver. Doing the Vs.

Mark is 13 and George 9. Busy. Keep me busy. Tired.

Yes, maybe Hawaii in the dead of winter. Maybe.

On Thu, 22 Jun 2006, Jonathan Grudin wrote:

> 
> Hi Gary --
> 
> Do you have a digital version of your USENET: Doing Research on the
> Network paper?
> 
> Hope all is well there...
> 
> Hey, any chance of luring you to HICSS? The conference isn't bad
> depending on what you're interested in, especially once you discover the
> secret of getting a great experience from a 50% acceptance conference.
> It is also a good place for a family if you like building sand castles.
> We have an added lure -- Gayna has relatives who own a good restaurant
> there.
> 
> Tom Erickson has long co-chaired a minitrack there and this year I'm
> doing the same for a related one.
> 
> -- Jonathan
> 
> 
> 


From perlman@turing.acm.org Sun Jun 25 14:19:55 2006 -0400
Status: 
X-Status: 
X-Keywords:
Date: Sun, 25 Jun 2006 14:19:54 -0400 (EDT)
From: Gary PERLMAN <perlman@turing.acm.org>
To: Jenny Preece <preece@umd.edu>
cc: "H.C.Sharp" <H.C.Sharp@open.ac.uk>, Yvonne Rogers <yrogers@indiana.edu>
Subject: Re: Forward for 2nd Edition of Interaction Design
In-Reply-To: <C0C1B043.10F39%preece@umd.edu>
Message-ID: <Pine.LNX.4.44.0606251409230.18239-100000@turing.acm.org>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII

Hi Jenny,

It's great to be back in Montreal. Right after moving back,
UPA in 2005 and CHI in 2006 have their meetings here. I even
wrote a guide for CHI: http://acm.org/perlman/guide.html.

Telecommuting, about once every day or two, I find myself in
an hour-long phone meeting. You must have tried calling during
one of those times.

Congratulations on your new edition and the success that must
have made it possible. I feel even farther from your audience
than when I wrote that foreword, so I won't be writing another.
Instead, I'll put on some sunscreen and attend the jazz festival:
http://www.montrealjazzfest.com/

Best,

Gary

On Fri, 23 Jun 2006, Jenny Preece wrote:

> Dear Gary, 
> 
> I found you with Google and was interested to see that you have moved back
> to Canada. I hope you are happy there.
> 
> I tried to call you a couple of times but the number on your website seems
> to be permanently engaged (+1-514-482-4905 (voice)) so I'm sending email
> instead.
> 
> We are in the process of completing the second edition of "Interaction
> Design: Beyond Human-Computer Interaction", and we would like to invite you
> to write the forward for this edition if you are willing. You did a great
> job with the first edition and it would nice to have you involved in the
> second edition too. I realize that you are very busy so you may not want to
> do this but I hope you will think about it.
> 
> If you would like to take on this task I suggest that Helen should send you
> the revised Preface and Table of Contents. We can also give you drafts of
> any chapters that you would like to see.
> 
> Looking forward to hearing from.
> 
> With very best wishes, Jenny
> _________________________________________
> Jennifer Preece, Ph.D.
> Dean, College of Information Studies
> University of Maryland
> College Park, MD 20742
> 301-405-2036/5 (Phone)
> 301-314-9145 (Fax)
> preece@umd.edu
> www.clis.umd.edu
> 


From perlman@turing.acm.org Tue Jun 27 09:23:32 2006 -0400
Status: 
X-Status: 
X-Keywords:
Date: Tue, 27 Jun 2006 09:23:31 -0400 (EDT)
From: Gary PERLMAN <perlman@turing.acm.org>
To: errordeveloper@gmail.com
Subject: Re: |STAT request
In-Reply-To: <20060627075940.GA4609@raven.londonmet.ac.uk>
Message-ID: <Pine.LNX.4.44.0606270923160.9720-100000@turing.acm.org>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII

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, 27 Jun 2006 ild0012@londonmet.ac.uk wrote:

> Hello dear author of the |STAT sw package,
> i would like to install your pkg on my computer in educational purpose .
> 
> i'm using gentoo linux , $HOSTTYPE=x86_64 , could you give me some extra intallation instructions if there are any and if you dont mind , please .
> 
>    I AGREE TO ADHERE TO THE CONDITIONS OF USING |STAT.
>    I AGREE NOT TO SHARE THE |STAT LOCATION WITH OTHERS.
> 
> 
> All The Best.
> 
> Ilya.
> 
> 


From perlman@turing.acm.org Tue Jun 27 20:34:19 2006 -0400
Status: 
X-Status: 
X-Keywords:
Date: Tue, 27 Jun 2006 20:34:18 -0400 (EDT)
From: Gary PERLMAN <perlman@turing.acm.org>
To: Jeremy Cooperstock <jer@cim.mcgill.ca>
cc: hkiewe@videotron.ca, Caroline Palmer <caroline.palmer@mcgill.ca>
Subject: Re: HCI guest lecturers dinner
In-Reply-To: <44A07BDE.7010403@cim.mcgill.ca>
Message-ID: <Pine.LNX.4.44.0606272031440.5395-100000@turing.acm.org>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII

Hi all,

Thank you for the invitation. Unfortunately, we will be out of town.
I am always eager to meet HCI-types, so maybe another time.

Gary (and Caroline)

On Mon, 26 Jun 2006, Jeremy Cooperstock wrote:

> Hi Howard (and Gary),
>   By all means, I'm happy to extend the invitation to Gary and 
> Caroline.  I believe I've met Caroline once at McGill but didn't realize 
> the connection until now.
> 
>   Gary, we'd be honoured by your company!
> 
>   And just bring yourselves ;-)
> 
> - Jeremy
> 
> Howard Kiewe wrote:
> > Hi Jeremy,
> >
> > Thanks for the gracious invitation; I'd be happy to come. I'm a vegetarian
> > although I do eat fish. Can I bring anything? It will most likely be just me
> > as my son usually has plans for Saturday night that don't involve his dad.
> > If your guest list is somewhat open, I could extend an invitation to Gary
> > Perlman, who recently moved back to Montreal and you may know from his HCI
> > bibliography (http://www.acm.org/~perlman/). Coincidentally his wife,
> > Caroline Palmer, is a psych prof at McGill.
> >
> > Howard
> >
> >
> >
> > -----Original Message-----
> > From: Jeremy Cooperstock [mailto:jer@cim.mcgill.ca]
> > Sent: Saturday, June 24, 2006 3:51 PM
> > To: Don Donderi; Djihanian, Sylvie; Jason Lewis; Joanna Berzowska;
> > Gascon.Andre@hydro.qc.ca; Marcelo M. Wanderley; Howard Kiewe; Yon Visell;
> > Vincent Hayward
> > Subject: HCI guest lecturers dinner
> >
> > Greetings all,
> >   You and your families are invited over for dinner July 15 at 6pm, as a
> > small token of thanks for your participation last semester as guest
> > lecturers in the HCI class.  Please let me know if you can make it (and
> > if so, how many) as well as any dietary restrictions.
> >
> > Details:
> > 392 Grosvenor, corner of Sherbrooke, Westmount (Montreal)
> > map available from http://tinyurl.com/me2ko
> > tel. 514-481-1822
> >
> > Best,
> > - Jeremy
> >
> > --
> > Please note my email policy: http://www.cim.mcgill.ca/~jer/email.html
> >
> >
> >   
> 
> 


From perlman@turing.acm.org Thu Jun 29 08:26:12 2006 -0400
Status: 
X-Status: 
X-Keywords:
Date: Thu, 29 Jun 2006 08:26:11 -0400 (EDT)
From: Gary PERLMAN <perlman@turing.acm.org>
To: Ruth Baker <ruthb@sigmer.com>
cc: director@hcibib.org
Subject: Re: FW: Our Company Listing
In-Reply-To: <002601c69b5f$6a9adc10$3501a8c0@gunpowder>
Message-ID: <Pine.LNX.4.44.0606290821430.6450-100000@turing.acm.org>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII

I have made the change you requested. In the future:
 1. Please spell your company name or your name. I was unable to make out either.
    Preferably, please call during North American business hours.
 2. Please use specific subjects in messages; generic ones tend to get filtered.
    Preferably, please use suggest-a-link to make changes.

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

On Thu, 29 Jun 2006, Ruth Baker wrote:

> Hi Gary,
> 
> Please find the below as per my v/m message to you today.  
> 
> Thank you and kind regards,
> 
> Ruth.
> 
> -----Original Message-----
> From: Ruth Baker [mailto:ruthb@sigmer.com] 
> Sent: 21 June 2006 13:29
> To: perlman@turing.acm.org; director@hcibib.org
> Subject: RE: Our Company Listing
> 
> Hi Gary,
> 
> I have checked your website and am sorry to report that Sigmer Technology
> Ltd. has not as yet been changed to Sigmer Technologies Ltd., please would
> you action this request and confirm back to once completed?
> 
> Thank you and kind regards,
> 
> Ruth.
>  
> 
> -----Original Message-----
> From: Ruth Baker [mailto:ruthb@sigmer.com] 
> Sent: 25 May 2006 11:02
> To: perlman@turing.acm.org; director@hcibib.org
> Subject: RE: Our Company Listing
> 
> Hi Gary,
> 
> Are you now in a position to reply to my e-mail below please?  I have
> checked today and the entry remains incorrect as Sigmer Technology Ltd. and
> not Sigmer Technologies Ltd.
> 
> Please would you change this at your earliest opportunity and confirm back?
> 
> Thank you,
> 
> Ruth. 
> 
> -----Original Message-----
> From: Ruth Baker [mailto:ruthb@sigmer.com] 
> Sent: 15 May 2006 17:27
> To: perlman@turing.acm.org; director@hcibib.org
> Subject: FW: Our Company Listing
> 
> Hi Gary,
> 
> Apologies for chasing, however I have not heard back from you with regards
> my e-mail below.  Please would you take a look and come back to me?
> 
> Thank you and kind regards,
> 
> Ruth.
> 
> -----Original Message-----
> From: Ruth Baker [mailto:ruthb@sigmer.com] 
> Sent: 10 May 2006 10:11
> To: 'Gary PERLMAN'
> Subject: RE: Our Company Listing
> 
> Hi Gary,
> 
> I hope you received my e-mail below.  Would you mind dropping me a quick
> e-mail to let me know that this has now been amended please?
> 
> Thank you,
> 
> Ruth.
> 
> -----Original Message-----
> From: Ruth Baker [mailto:ruthb@sigmer.com] 
> Sent: 21 April 2006 12:14
> To: 'Gary PERLMAN'
> Subject: RE: Our Company Listing
> 
> Hi Gary,
> 
> Thank you for your help with this.  May I please ask if you could make one
> small amendment?  You have us listed as Sigmer Technology Ltd.  When in
> actual fact we are Sigmer Technologies Ltd.  Would It please be possible to
> have this changed?
> 
> Thank you once again and kind regards,
> 
> Ruth.
> 
> -----Original Message-----
> From: Gary PERLMAN [mailto:perlman@turing.acm.org] 
> Sent: 20 April 2006 19:09
> To: Ruth Baker
> Subject: Re: Our Company Listing
> 
> It's live now. I apologise for the delay.
> 
> Gary Perlman, Director, HCI Bibliography Project
> mailto:director@hcibib.org  http://hcibib.org/
> 
> On Thu, 20 Apr 2006, Ruth Baker wrote:
> 
> >  
> > 
> >  
> > 
> > Sigmer Technologies. Considered IT solutions.
> > 
> >    _____  
> > 
> > Hi there,
> > 
> > Would you be able to give me an update on the status of our listing
> please?
> > I sent through details of our company and also our work on accessibility
> on
> > the 10/04/06 in order to be added to your HYPERLINK
> > "http://www.hcibib.org/"http://www.hcibib.org/ directory.  Can you advise
> > what the exact status is please and when we may expect to see our
> > information go live?  
> > 
> > Thank you and kind regards,
> > 
> > Ruth.
> > 
> >    _____  
> > 
> > Ruth Baker
> > Office Administrator
> > Sigmer Technologies Ltd
> > The Sussex Innovation Centre
> > University of Sussex, Falmer
> > Brighton, East Sussex
> > BN1 9SB 
> > T: 0870 870 8735
> > Intl: +44 (0)1273 234663
> > F: 0870 870 8738
> > E: HYPERLINK "mailto:ruthb@sigmer.com"ruthb@sigmer.com
> > W: HYPERLINK "http://www.sigmer.com"www.sigmer.com
> > 
> > LEGAL DISCLAIMER: This message and its attachments are confidential and
> may
> > be privileged or otherwise protected from disclosure. If you are not the
> > intended recipient or the person responsible for delivering the message to
> > the intended recipient, please telephone or email the sender and delete
> this
> > message and any attachments from your system. Further, you should not
> > disclose, copy, distribute or use this message and its attachments. Whilst
> > any attachments may have been checked for viruses, you should rely on your
> > own virus checker and procedures. If you contact us by e-mail, we will
> store
> > your name and address to facilitate communications. 
> > 
> >  
> > 
> > 
> > 
> 
> 
> (Scanned by Sigmer MailScanner and believed to be clean)
> 
> 


From perlman@turing.acm.org Fri Jun 30 13:14:48 2006 -0400
Status: 
X-Status: 
X-Keywords:
Date: Fri, 30 Jun 2006 13:14:47 -0400 (EDT)
From: Gary PERLMAN <perlman@turing.acm.org>
To: Renee Bordeaux <eloheim1@optonline.net>
Subject: Re:  Questionnaire
In-Reply-To: <000001c69bf2$9a138800$0302a8c0@reneek2fuge40x>
Message-ID: <Pine.LNX.4.44.0606301313140.23194-100000@turing.acm.org>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII

Hello,

The questionnaires on my site do not support "check all that apply".
The software is meant for rating scales.

Gary Perlman

On Thu, 29 Jun 2006, Renee Bordeaux wrote:

> Good Morning Gary:
> 
>  
> 
> I happened to find your information on the google web-site.  Interestingly
> enough, I have a set of questions where the scoring is based on the
> following and am trying to determine if your software can assist me.
> 
>  
> 
>  
> 
> The scoring is based on as follows:
> 
>  
> 
> *	Multiple choice - one correct answer 
> *	Multiple choice - select all that apply 
> *	Matching 
> *	True or false 
> 
> Do you believe your software can assist me.
> 
>  
> 
> Please reply @eloheim1@optonline.net
> 
>  
> 
> Thank you
> 
> Renee
> 
> 


