Design and Maintenance of these Web Pages
^About Us
B. Hassard, original Aug.4, 1997, last revised Feb 4 2009

Introduction

This website contains roughly 150 pages in the "main collection" maintained by webmaster@math.buffalo.edu, and a larger number (600+?) of pages in the "mad" (Mathematicians of the African Diaspora) subcollection maintained by Scott Williams. This document describes the main collection, i.e. the www.math.buffalo.edu/ pages excluding the www.math.buffalo.edu/mad/ pages.

The document is arranged chronologically, with the latest items last.


Credits

The design of these pages owes much to the members of the Department Committee on Computing and Information Technology: John Ringland, Michael Cowen, Scott Williams, Eugene Kleinberg, Bruce Pitman, and John Bell. Beta testers who provided valuable suggestions included Marie Bennett, Marie Daniel, Dick Vesley, Jim Faran and Bill Menasco (my apologies to anyone left out..)

Basic Ideas

The pages are designed to support users viewing the pages with lynx, Netscape or Internet Explorer. To simplify maintenance, the basic ideas are

  1. distribution of responsibility for the web pages that change frequently to those individuals most concerned with the data, through form-based updating of the "Calendars, News and Postings" web pages,
  2. "Master" files containing most of the data to be included in the web pages, as ASCII text
  3. automatic compilation (generation) of the web pages from the master files,
  4. "Hypertext format" files as prototypes for the .html files
  5. automatic checking of all local links in the .html files generated by the procedure
  6. a flat structure for the "public_html" collection of web pages, but with date labeled subdirectories
  7. semi-automatic maintenance of data archives

The server, main directory and date labeled subdirectories

The server willrogers.nsm.buffalo.edu has been used to host the webpages since 2001. This machine is maintained by Engineering Node Services.
The web location
www.math.buffalo.edu/index.html
corresponds to file /usr/local/info/math/index.html
in the NSM file system which is used by willrogers. The main collection of math webpages resides in the directory
/usr/local/info/math/ and is "flat".

Date labelled subdirectories such as
/usr/local/info/math/20090204/ contain copies of the main collection for the dates on which the collection of main pages was updated ("recompiled")

Since 1997, the process of updating web pages has been,

  1. webmaster creates a new dated subdirectory and copies all of the data from the most recent dated subdirectory into the new one,
  2. webmaster works in the new subdirectory (for example, by editting files such as top_pages.txt and fac_staff_list.txt) and then runs a script called "update" which creates new versions of the "flat" collection of pages in the new subdirectory
  3. webmaster views the newly created pages for any problems, and (after fixing any apparent issues), copies the new collection of pages "up" into the location /usr/local/info/math/. by doing
    cd /usr/local/info/math/20090402
    /bin/cp *.html ..
    
This publishes the new pages.

While the files in each dated subdirectories are publicly accessible if you type the full address including including the date explicitly, the files in dated subdirectories will not be readily accessed because there are no links to them from pages in the main collection. For example

The version of the web pages last maintained by Scott Williams are stored in 19970922. A user that knows this, can access these pages by pointing the browser to the location

www.math.buffalo.edu/19970922


Master files (.txt)


Files of type ".txt" are the "master files" containing data to be included in the Web pages. These are plain ASCII.

top_pages.txt                             # data for the 'top' pages
                                          # index.html, Calendar.html..
fac_staff_list.txt                        # faculty and staff list data
emeritus_list.txt                         # list of emeritus faculty
fac_areas.txt                             # areas for faculty list by areas
gr_student_list.txt                       # grad student data
ug_course_list.txt                        # undergraduate course data
gr_course_list.txt                        # graduate course data
crs_areas.txt                             # areas for course list by areas

update procedure


A perl script to construct the web pages. Normally, the webmaster will
  1. log onto willrogers, change to the "public_html" directory
  2. create a date-labeled subdirectory such as /19971026
  3. determine the date of the most recent previous recompile of the web pages by doing "ls -l *.html"
  4. copy the contents of the previously dated directory to the new one with
    cp 19971025/* 19971026/ (assuming the previous recompile was on 19971025).
  5. change to the subdirectory for the current date
  6. make whatever changes are needed to the .txt files
  7. recompile the web pages by executing the script update
  8. check that the new web pages look o.k.
  9. do a copy to make copies of the pages in the subdirectory with the current date, into the active web pages:
    cp * ..
The first thing that the update script does, is delete all .html files and all .ln2 files: the .ln2 files store "links to" html pages. This makes sure that any .html files, will be newly created by make_pages, and that the control (navigation) bar cluster is based only on the most recent information.
When the update script is run, the last thing it does is test the set of local links in the .html pages that it generated. To do this, it tests to see if .html files are present in the current subdirectory when update is run, which will be the date-labeled subdirectory of "public_html".

Web pages which reside on other machines (ex/ wings) are not local and are not tested by update. Instead, the user is asked to check them by browsing the file check_links.html, written by program check_links, which contains all of the non-local links.

Partial list of web page files generated by "update"

:

index.html
Calendars_News_and_Postings.html         #
faculty_staff_list.html                  #    faculty/staff list
fac_by_areas.html                        #    faculty listed by areas
gr_course_list.html                      #    graduate courses
crs_by_areas.html                        #    courses listed by areas
gr_student_list.html                     #    grad student list

..


Hypertext format files (.htf)

These '.htf' files are prototypes for .html files. The .htf files are basically .html files themselves, except they may contain strings such as
{name}, {email}, {homepage}, {phone}, {office},
which are replaced by actual data specified in .txt files using corresponding tags
name:, email:, homepage:, phone:, office:,
See "substitution of tagged data" below.

(partial list of .htf files)
index.htf                             # format for index.html
level1nt1.htf                         # format for 1 column pages at 'level 1'
level1nt2.htf                         # format for 2 column pages at 'level 1'
level2.htf                            # format for most pages at 'level 2'
fac_staff_list.htf         # written by fsl.pl; format for fac_staff_list.html
fac_by_areas.htf                         # format for faculty by areas
gr_student_list.htf        # written by gsl.pl; format for gr_student_list.html
fac_staff_pages.htf                  # format for standard individual homepage

Construction of html files from hypertext format files and text files


Hypertext format files (.htf) are "boilerplate" versions of html files. Construction of html files from the SAME hypertext format file, ensures a consistent look-and-feel to the pages constructed.

The basic difference between htf files and html files is that patterns '{..}' in htf files are replaced by data to create html files. As a simple example,

In text file
------------
'title: Academics'
'item1: _Graduate Courses_
'item2:_Courses listed by areas_->"crs_by_areas.html"


In  htf  file                 In  html  file
-------------                 --------------
'{title}'             'Academics'
'{item1}'            '<A HREF="Graduate_Courses.html">Graduate Courses</A>'
'{item2}'            '<A HREF="crs_by_areas.html">Courses listed by areas</A>'

Some of the tags used have special interpretations (see below). Except for these special tags, the tag mechanism is simple substitution and one is free to invent new tag names.

Master file for 'top level' pages


Here is the current file top_pages.txt.
The update procedure reads the file top_pages.txt and constructs a page for each entry in the file.
Entries are separated by (one or more) blank lines.

In each entry,

name:
gives the name of the .html file to be constructed. If no name is given, a appropriate one is formed from the title. The name 'Academics.html' is formed from the title 'Academics'.
format:
gives the .htf (hypertext format file) to be used as a prototype in constructing the .html file
title:
gives the title to appear in the constructed page
data:
gives the data file (if any) to be read during '{for...}' loops that may appear in the format file
underscores
delimit a "hot string" to be underlined and linked.
Note that if an arrow '->' immediately follows an underscored-delimited string, then the link is to the file or location within quotes.
If no arrow immediately follows an underscored-delimited string, then the link is to the local file with name constructed from the string. For example,
item1: _Academics_ is equivalent to
item1: _Academics_ -> "Academics.html"

Default value file top_pages.def


This file isused to set up tag values that will apply (unless redefined) throughout the entire interpretation of top_pages.txt. For example, the control bar generation is largely managed by a system of definitions for the tags named "uulr" "uuulr" and so forth. The patterns {uulr} {uuulr} etc. which appear in the .htf files level1.htf, level2.htf etc. specified in top_pages.txt, are replaced by control bars with (respectively) control bars consisting of two up-arrows a left and a right arrow, three up-arrows, a left and a right.

List of other file types

.dat
intermediate data files, items separated with blank lines.
some .dat files are copies of .txt files:
make_pages.dat is input data to make_pages.for and is successively (a copy of) ug_terms.txt, top_pages.txt, fac_staff_list.txt.
fac_by_areas.dat is generated from fac_areas.txt and fac_staff_list.txt by program list_by_areas,
and is input data for construction of fac_by_areas.html
crs_by_areas.dat is generated from crs_areas.txt and ug_course_list.txt+gr_course_list.txt by program list_by_areas,
and is input data for construction of crs_by_areas.html
.def
defaults for pattern replacement mechanism. Program make_pages reads make_pages.def to initialize replacement table, where make_pages.def may be
top_pages.def if "top pages" of www.math.buffalo.edu are to be constructed,
fac_staff_pages.def if "standard home pages" are to be constructed,
ug_terms.def if "undergraduate terms" are to be constructed
.exe
executable files, produced by compiling .for files
.for
fortran 77 files, source for programs make_pages.for, list_by_areas.for, check_links.for and fac_gr_emails.for
.htf
html "format" files; basically html except for patterns which must yet be replaced.
Simplest possible situation- if an .htf file has no patterns to be replaced, then it is already an html file
More realistic situation- an .htf contains patterns, replaced with different values to construct a different .html files, one for each different item in a .txt or .dat file
For example, fac_staff_pages.htf and fac_staff_list.txt give rise to the "standard home pages"
.html
true html files
.in
program check_links uses input data file check_links.in, which is a sorted version of all of the .lnk files written by make_pages during the update procedure.
.in1, .in2
program list_by_areas uses two input files, list_by_areas.in1 and list_by_areas.in2.
These are either fac_areas.txt and fac_staff_list.txt, or
crs_areas.txt and (ug_course_list.txt+gr_course_list.txt)
.lnk
link files. Each time make_pages is run, it writes a file make_pages.lnk with all of the html references that appear in the pages generated, one link per line of the file.
Program check_links reads the concatenation of these files, as part of the process of checking all of the local links.
.ln2
inverse link (link to) files. Each time make_pages finds an HREF link to a local .html file, it makes a record of the call in a .ln2 file. That is, a file with the same base name as the .html file that is called, but with a .ln2 extension.
Program make_pages reads the .ln2 files, to determine parent page(s) for the current page, as part of constructing navigation arrows.
.lst
Program make_pages writes make_pages.lst, a file containing a list of all of the .html files created during the current run of the program make_pages. The list is in the form of links to the .html files created, so make_pages.lst is itself html but without the usual head or tail blocks of html. Procedure update, after each run of make_pages,copies make_pages.lst to ug_pages.html, top_pages.html, and fac_staff_pages.html. One way to quickly visit all of the pages created by make_pages, is to browse ug_pages.html, top_pages.html and fac_staff_pages.html with (say) lynx. These pages are not currently linked to the main www.math.buffalo.edu collection.
.mll
missing local link file. If check_links finds any missing links, it writes the name of .html files that should be present locally, to check_links.mll
.out
output data file
list_by_areas writes list_by_areas.out which is then copied to crs_by_areas.dat or fac_by_areas.dat
occasionally spell has been used; output is to spell.out
.txt
text data files, the "master files"


Faculty and Staff list


Here is the current list: fac_staff_list.txt.
This file is used to construct
  1. the faculty and staff list fac_staff_list.html,
  2. the list of faculty by areas fac_by_areas.html,
  3. the standard homepages Badzioch_Bernard.html, Biondini_Gino.html,.. for the faculty and staff members
  • One or more blank lines separate the data for different individuals
  • Data is tagged. Tags 'name:', 'title:','office:', 'phone:', 'degree:', 'email:' and 'area:' are self-explanatory.
  • The tag 'homepage:' indicates that the that there is a personal homepage which is to appear as a link in the standard individual homepage constructed by 'update'.
  • The tag 'rname:' gives the full name in the order, firstname lastname. This data is used for the title of the individual homepage.
  • The tag 'course1page:' indicates that there is a course webpage associate with the first course the individual is teaching
  • New tags may be invented and new tagged data added freely to the file

Grad student master list

Here is the current list: gr_student_list.txt.
  • Blank lines separate data for the individuals.
  • Data is tagged. Tags 'name:' and 'email:' are self-explanatory.
  • The tag 'homepage:' indicates that the that the individual has a personal homepage which is to appear as a link from the gr_student_list.html file constructed by 'update'.
For grad students, a relatively small amount of data is specified in gr_student_list.txt. It therefore does not make sense to construct a departmental homepage for each grad student, as for the faculty and staff. (At some time in the future, this may change) For each grad student with the tag 'homepage:' specified, a link directly to this personal page is associated with the name appearing in gr_student_list.html. This treatment is different from the faculty and staff personal homepage links appearing in fac_staff_list.html: here each name is linked to a standard homepage, and a link to the personal homepage appears at the bottom of the standard homepage.

Substitution of tagged data into hypertext format files


Special Patterns

{this_date}

is replaced by the current date (i.e. the date that make_pages.exe is run) in the form, mon dd yyyy, for example Oct. 23, 1997. Implementation: within make_pages.for, subroutine datecnv(yyyymmdd,monddyyyy) was written to convert date in the yyyymmdd format returned from subroutine datestr, to the desired monddyyyy format.

{from date1 to date2 expression}

allows displaying an expression during a certain period, before which and after which the expression disappears.

Here date1 and date2 are given in yyyymmdd form. When program make_pages is run, if the current date falls in the interval date1 to date2, then the pattern is replaced by the expression. For example,

{from 19971018 to 19971025 <img SRC="http://www.math.buffalo.edu/icons/new_red.gif" alt="*New*">}

Note that unless make_pages is run on a daily basis, this mechanism will display out-of date information until the date at which make_pages is run.

{parent1}, {parent2} .. {parent4}

are replaced by full links to the first 4 pages found during the update procedure, that call this page. Similarly,

{parent1name}, {parent2name} .. {parent4name}

are replaced by names of the .html files of the parents, and

{parent1title}, {parent2title} .. {parent4title}

are replaced by the titles of the parents.

If the page has only one parent, then

{parent2}, {parent3}, {parent4}, {parent2name} {parent3name} {parent4name} {parent2title} {parent3title} {parent4title}


are replaced by null strings.

{prevpage} {nextpage}, {thispage}

are replaced by (respectively) with full links to the (respective) page.

{prevtitle} {nexttitle}, {thistitle}

are replaced by (respectively) the title strings, and

{prevname} {nextname}, {thisname}

are replaced by the page name (the name of the .html file) that was most recently generated by the update, the page name that will be generated next, and the page name of the page currently being generated.

Loop control pattern


{for ..}

This feature allows looping over items in the data file (if there is one) for the page being generated.

example 1:
{for name[1] in A..C}<P>{name} {office} {Phone}</P>

For each entry in the data file, if there is a 'name:' given and if the first letter of the name falls in the range 'A' to 'C', then write a line of the form '<P>{name} {office} {Phone}</P>' to the html file for the page.

The for loop controls just to the end of the current line. Only the current entry in the data file is scanned for data to replace the patterns {..} within the loop.

Here {name} becomes the actual name and {office} becomes the actual office (or a single blank if no office is given). Because the first letter of {Phone} is capitalized, {Phone} is replaced by the string 'Phone: {phone}' where {phone} becomes the actual phone is one is given. If no phone is given, {Phone} is replaced by a single blank.

example 2: {for name[5] in 1..4}{number} {title} <BR>

For each entry in the data file, if there is a 'name:' given and if the 5th letter of the name falls in the range '1' to '4', then write a line of the form '{number} {title} <BR>' to the html file for the page. This loop is appropriate for course data in which the names may be 'MTH 115',..,'MTH 499','MTH 511-512',.. and will list just the undergraduate courses and titles.

The values of {number} and {title} substituted are found by scanning the current entry in the data file for 'number:' and 'title:' data. (If number data is missing, it is constructed from name data. So, 'name: MTH 115' by itself implies 'number: 115')

Patterns beginning with a capital letter


Such patterns are treated in a special fashion. For example, if 'office: 214' appears in the data for the current entry, then '{Office}' is replaced by 'Office: 214' while '{office}' is replaced by '214'. If no 'office:' data appears in the current entry, both '{Office}' and '{office}' are replaced by a single space.

Other patterns


For each other pattern {tttt} in the current line of the .htf file, the program scans the current entry in the data file, looking for data tagged as 'tttt:'.
If such data is found, the program replace {tttt} by the value found.
If no such data is found, the program replaces {tttt} by a single space character.

Precedence in substutions


Within a loop, the
  • values defined in the current entry in the data file, have precedence higher than
  • values defined in the current entry in the file make_pages.dat and these in turn have precedence higher than the
  • values defined in the 1st entry in the file make_pages.def (default values)
If the same tag appears twice in an entry, only the first value defined will be used.

Control bar construction


In the files top_pages.def and fac_staff_pages.def, values are given for the tags u, ul, ulr, ul, uur, uulr, uul, uuur, uuulr, uuul, uuuur, uuuulr, uuuul.

When make_pages constructs the pages according to top_pages.txt and in fac_staff_pages.txt, the patterns {u}, .. {uuuul} are replaced with html code that produces 'control bars', actually tables with two columns containing labeled graphics.

{u} produces an uparrow linked to the parent (1st parent, if more than one) for the current page.

{ulr} produces a control bar with up, left and right arrows linked respectively to the parent page, the previous page and the next page.

Here 'next' and 'previous' are determined by the order in which the pages are constructed, i.e. in the order that the pages are described in top_pages.txt and fac_staff_list.txt.

  • {ur}
    produces a control bar with up and right arrows and is used at the start of a sequence of related pages.
    1. an uparrow to go up to the parent level
    2. a right arrow to go to the next page.
  • {ul}
    is used at the end of a sequence of pages. It produces a control bar with up and left arrows,
    1. an uparrow to go up to the parent level
    2. a left arrow to go to the the previous page
  • {uur} {uulr} and {uul}
    are similar except that each produces 2 up arrows, links to parent1 and to parent2.
  • The other patterns
    are similar, except for the number of uparrows produced.
  • The default definition controlbar: {{ulr}} in the file top_pages.def is appropriate for most of the pages described in top_pages.txt, which need just 3 arrows.

    Similarly, the default definition controlbar: {{uuulr}} in file fac_staff_pages.def is appropriate for most of the pages described in fac_staff_list.txt.

    Mechanics of the substitutions

    For each single item in make_pages.dat (either top_pages.txt or of fac_staff_list.txt) the item is copied to scratch.dat. Then the file make_pages.def (either top_pages.def or of fac_staff_pages.def) is appended to scratch.dat.

    The value of the format: field in scratch.dat determines the format file (.htf suffix) to be used in constructing the .html file.

    The format file starts with a line such as {level1_top} and ends with a corresponding line such as {level1_bot} Values to replace these patterns are defined in the .def files, and so also in the file scratch.dat. The value for pattern {level1_top} is of the form

    <html><head>..{controlbar}<br><P><h1>{title}</h1>
    

    The program make_pages calls subroutine tag_replace to perform the pattern substitutions. Substitution proceeds right to left. The first '{ in the current line is found, and the pattern to be replaced is determined. Then scratch.dat is scanned to find the first value associated with the pattern. The pattern is replaced in the line and the line is scanned again.

    The line

    {level1_top}

    in the .htf file first becomes, after substitution of the definition of level1_top: from top_pages.def,

    <html><head>..{controlbar}<br><P><h1>{title}</h1>

    When the scan encounters the string {controlbar}. (and assuming that itemmake_pages.txt doesn't define controlbar:) after substitution of the definition controlbar: {{ulr}} in top_pages.def, the line becomes

    <html><head>..{ulr}<P><h1>{title}</h1>

    After substitution of the definition of ulr: the line becomes

    <html><head>.. <table> <tr><td>{uplink1}</td><td></td></tr> <tr><td>{prevlink}</td><td>{nextlink}</td></tr> </table> <P><h1>{title}</h1>

    After the substitution of the definition of uplink1:

    <html><head>.. <table> <tr><td> <A HREF="{parent1name}"><IMG SRC="http://www.math.buffalo.edu/icons/uparrow.gif"></A> <A HREF="{parent1name}">{parent1title}</A> </td><td></td></tr> <tr><td>{prevlink}</td><td>{nextlink}</td></tr> </table> <P><h1>{title}</h1>

    Assuming the current page is a child of index.html then after get_parents determines the parentage and after subsitution the line becomes

    <html><head>..
    <table>
    <tr><td>
    <A HREF="index.html"><IMG SRC="http://www.math.buffalo.edu/icons/uparrow.gif"></A>
    <A HREF="index.html">Mathematics </A>
    </td><td></td></tr>
    <tr><td>{prevlink}</td><td>{nextlink}</td></tr>
    </table>
    <P><h1>{title}</h1>
    
    at which point the .html code to produce the parent link is completed. The substitution process continues until all patterns { } in the line have been replaced.

    Control bar design philosophy

    If the collection of web pages were a tree, then each page (except for the root) would have exactly one parent. However, in the collection of Math Dept pages, pages may have multiple 'parents'. This raises a question about 'next' and 'previous' pages: in a tree structure, a natural definition of 'next' and 'previous' would be right and left siblings. However, without a true tree structure, if a page has multiple parents, then it may have a different left and right siblings.

    For simplicity, it was decided that 'next' and 'previous' (and left and right control arrows based upon next and previous) would refer to the pages immediately preceding and following the current page in the .txt file describing the set of pages. (The defaults may be overridden by use of tags nextpage: and prevpage:)

    The order in which pages appear in this file is therefore important: all of the child pages for a given parent, should follow after each other in the file, in order for the left and right arrows to link the children.


    Implementation

    The update procedure is a perl script that
    • removes all existing .html and .ln2 files from the current subdirectory
    • removes and recompiles all executables to be used in the update procedure
    • runs the following programs
    util/email_graphics5             # constructs email graphics for emails, ex-
                                     # icons/emailgraphicazittobuffaloedu.gif
                                     # from email data in file masterlist2.txt.
                                     # masterlist2.txt is created by util/masterlist2.pl
                                     # from the latest versions of files
                                     # fac_staff_list.txt, gr_student_list.txt,
                                     # instr_list.txt and emeritus_list.txt
    
    fac_gr_emails                    # constructs files fac_emails and gr_emails
                                     # of faculty/staff and graduate student
                                     # email addresses, to be picked up
                                     # by regularly executed job (chron)
                                     # by Bob Meyer, for mail alias
                                     # also constructs fac_emails.html
    
    list_by_areas                    # constructs fac_by_areas.dat from
                                     # fac_areas.txt, fac_staff_list.txt
                                     # & constructs crs_by_areas.dat from
                                     # ug_course_list.txt+gr_course_list.txt
                                     # and fac_areas.txt
    
    make_pages                       # generates (sub)collections of .html files
                                     # from ug_terms.txt, from top_pages.txt,
                                     # and from fac_staff_list.txt
    
    check_links                      # checks all of the local links
                                     # found in the set of .html files
                                     # generated by make_pages
    

    Distribution of responsibility for web pages

    Thanks to the ability of web servers to run CGI applications, it is possible for a browser user to make changes in files and run programs on the web server. This makes it feasible to distribute responsibility for maintaining web pages that change frequently, to those individuals most interested in the data.

    For example, one can envision a situation in which

    • the main office updates the "Seminars and Colloquia" web page,
    • the undergrad studies office updates "News for Undergraduates" and "Alumni News",
    • the grad studeits office updates "News for Graduate Students" and
    • the associate chair updates "News from the Associate Chairman",
    • the chairman may update "News from the Chairman",
    • there is a webmaster that edits the files top_pages.txt, fac_staff_list.txt, gr_student_list.txt


    Updating Calendars, News and Postings


    The math web server machine provides CGI (Common Gateway Interface) service; it is set up to run programs on the machine when a web user hits particular locations. Only the subdirectories /cgi /rur may contain cgi's, and these directories may NOT contain html's.
    (Different web servers, are configured differently; ex/ wings allows a mix of .html .cgi and data)
    If it is desired to execute cgi's from any other directories, it is is necessary to have a system administrator add the name of these directories to a list of those from which cgi's will be executed. These directories may not contain html.

    At present, the link that causes the calendars, news and postings update to execute is
    <A HREF="www.math.buffalo.edu/update_calendars_news_postings.html">

    and is a form, which sends data (when the submit button is selected, to the program ucnp4.cgi is located at
    /faculty/httpd/htdocs/cgi/ucnp4.cgi

    and is a perl script (earlier versions were update_calendar_news.cgi, ucnp1.cgi, ucnp2.cgi, ucnp3.cgi) Originally designed to run on wings and to update just the seminar schedule, it has been ported from wings to the math department server and enhanced to update various different pages, and to simultaneously archive the postings to year-dated files.

    The program itself reads from standard input and writes to standard output and to files

    • sem_coll.html,
    • ugnews.html,
    • alnews.html,
    • grnews.html,
    • acnews.html,
    • chnews.html,
    • myhill_lect.html, and
    • cnp_test.html
    in the htdocs directory. It may (or may not, as it decides) also write to files in the htdocs/archive directory. These files are ucnp_scratch.dat, and files named like those in the list above but with the year of the archive added to the name for example sem_coll_1998.html.

    The browser user accesses page update_calendars_news_postings.html and fills in a form. (ref. HTML, The Definitive Guide, 2nd Edition, Musciano and Kennedy, ch0 10). A "radio button" selection appears, to select which of the web pages on the list above to update. Then she fills in the "updated text" field of the form, normally by cut-and-paste from a word processor. When she hits the "Update web page" button, the data from form is sent using the POST method, to the web server. The server then executes the ucnp4.cgi to process the with the data from the form.

    The cgi responds to the browser user by sending back a web page that it constructs on the fly. The program checks username and password data fields. If this information is not correct, it send back a simple web page with the message, 'Invalid User'. If the username and password are correct, then the program sends back a message 'Valid User.' The program then decides whether or not to archive the previous version of the web page. If so, it extracts data (trims 2 lines off the top and 5 off the bottom) and appends the result to the archive file corresponding to the web page and the current year. As of 19990220, the previous web page will be archived if it is from a different day. After archiving, the program processes the text from the form a bit (strips all new-line characters, both unix and dos format) adds 2 lines of boilerplate html to the top and 5 lines of boilerplate html to the bottom, then overwrites the previous web page. A message, that the web page has been updated, is send to the browser user that initiated the update.

    The Math dept. web site has links to these .html files, under "Calendars, News and Postings". The information in these web pages changes immediately as soon as the cgi has run.


    Archives and the subdirectory archive

    A single page was set up for the seminar and colloquim information on Oct. 23/1997 as per Marie Bennett's suggestion, and archiving was started, as of Jan. 1998.
    Archives are maintained in subdirectory /archive as .html files.
    An archive viewer for the seminar and colloquium archive was set up in the form of a .cgi that creates an index and edits the "raw" seminar/colloquium data sem_coll_xxxx.html, where xxxx is the year.
    Other archives of pages acnews_xxxx.html, alnews_xxxx.html,ch_news_xxxx.html, gr_news_xxxx.html, job_postings_xxxx.html, myhill_lect_xxxx.html and ucnp_test_xxxx.html are also maintained (semi)automatically.
    At present, only the sem_coll_xxxx.html archive has a viewer.

    Here, xxxx=year, and

    acnews_xxxx.html (yearly news from the Associate Chair)
    alnews_xxxx.html (Alumni news from the undergrad studies office)
    chnews_xxxx.html (Chairman news)
    gr_news_xxxx.html (Graduate student news from the Grad studies office)
    cnp_test_xxxx.html (test data for the calendar-news-postings update script)
    jobpostings_xxxx.html (job postings)
    

    Of these pages, only the seminar/colloquium pages is used regularly: the individual entering the data does so by posting html in a "box" that accepts pretty much any html.

    Other files that are stored in
    /usr/local/info/math/archive
    are the Myhill lectures postings, which have names myh?.html, myh2001.html, myhill_2007.jpg, myhill_2007s.jpg, myhill_lect_????.html, myhill_lect1.html, myhill_lect20061.html, myhill2004.htm (various individuals have contributed)

    Also stored in
    /usr/local/info/math/archive
    are

    • AMS_meeting_April_24-25_Buffalo.html,
    • firstqual????????.pdf and firstqual????????.tex from 2002-2004 (sample first qual exams)
    • course_ads.html (sometimes individuals seek to publicize courses with web ads)
    • dissertation_defenses_sp07_su07.pdf (posting of dissertation defences)
    • subdirectory awards
    • subdirectory coae2006 (Celebration of Academic Excellence 2006)
    • subdir macgillivray (on Dean MacGillivray)
    • subdir public_lectures
    • file readme
    • file special_lectures_sp07.pdf
    • files view_archive_1998.html, view_archive_1999.html
    • subdir workshops


    Course Ads Spring 1998

    A facility was set up at the end of spring term 1998 to allow faculty to post their own course ads, much the same way that the seminar colloquium page is updated.
    update_course_ads.html is the form used to submit course descriptions,
    /cgi/uca2.cgi is the program that receives the form data
    /archive/course_ads.html is the data file containing the "raw" course ads,
    /cgi/vca1.cgi is the program that acts as a viewer for course ad data.
    
    Remark: at present (1998/09/02) the course_ads.html file isn't dated by year. It could be changed so that files course_ads_1998.html, course_ads_1999.html etc. are used.
    Having faculty post their own course ads, has not worked well so far.
    Another option is to have the webmaster scan in each course ad as a graphic; this also didn't work very well- the quality of the gif varies, and scanning is something of an art.
    As of Feb. ? 1999 no one had taken advantage of the ability to update course ads and so this ability was removed.


    CGI development: update_calendars_news_postings.cgi, ucnp4.cgi, uca2.cgi, .. etc.


    The library cgi-lib.pl contains routines that read all of the data from a submitted form into an associative array, which makes it convenient to retrieve form data while in a cgi application (written in perl). A copy of cgi-lib.pl must be stored in htdocs/cgi (and in htdocs/rur).

    Several problems were encountered. The .cgi to update the colloquium/seminar page, was first developed on "wings" since that is machine where most of the local effort in cgi development occurs. Then it was moved over to "newton", where the rules for cgi's differ. On newton, subdirectories intended for containing cgis are EXCLUSIVELY for cgis, not data.

    The standard problem with a newly developed cgi, is that the server simply echos back the text of the program rather than executing it.

    This happens
    (i) if one hits the cgi application file directly through the standard file structure on the machine wings, rather than through the (correct) http://wings.buffalo.edu/.. of http://www.math.buffalo.edu//.. route
    (ii) if the cgi application resides in a directory that is not in the list of directories from which the server allows cgis to execute.

    Another problem had the symptom that the cgi would execute with lynx but not with Netscape. This difficulty was traced to using type enc text/plain in the submit, with POST mode. Text/plain is valid for mailto: processing of forms data, however doen't work with POST mode when Netscape is the client (but does work when lynx is the client).

    A collection of problems were related to file permissions and ownerships: when a cgi application is executing, the user is "nobody".

    Other problems were due to differing locations/versions of the perl intepreter on "wings" and on "newton", and the absence of "cgi-lib.pl" in a standard location on "newton"



    The view archive of seminars and colloquium program is
    view_archive7.cgi
    and may be called as
    http://www.math.buffalo.edu//view_archive7.cgi?archiveyyyy=xxxx
    where the parameter xxxx is 1998 or 1999 (2000 is also supported, but there is no data in the file archive/sem_coll_2000.html except for headers)

    Possible enhancements

    • The Admistration page has little content
    • An option should be added to the "Update Calendars, News.." form to allow posting "pure" html, without no boilerplate html tacked on the top and bottom. This would allow (for example) posting the Myhill lectures announcement.
    • The headers and backgrounds for the pages that are posted with "Update Calendars, News .." could be improved
    • The flashing colorbar and diamond patterns used in the Seminars & Colloquia page, aren't very attractive

    Greek letters and Math symbols


    The symbol $\alpha$ can be displayed in html by the reference
    <img SRC="http://www.math.buffalo.edu/greekmath0/alpha.gif" alt="$\alpha$">
    
    and a moderately complete collection of greek and math symbols can be displayed the same way. Marie Bennett uses these for the Seminar and Colloquium web page and has a list of accessible symbols.

    The symbols originated with www.chemistry.uni-essen.de and were apparently constructed by means of latex2html. Additional symbols as needed, have been constructed by means of latex2html.

    For the characters beta, eta, xi, rho, zeta with descenders, alternate versions with names ending in 2 are present. These are intended to be referenced as

    <img SRC="http://www.math.buffalo.edu/greekmath0/beta2.gif" align=middle
     alt="$\beta$">
    
    which with Netscape gives a proper vertical alignment.

    *** However, it also causes the subsequent line to be displaced downward, ***
    *** and align=middle doesn't seem to work with Internet Explorer   ***
    *** perhaps, align=center or align="center" or align="middle"      ***
    *** or align="absmiddle" will.                                     ***
    
    Technically, both beta and beta2 are identical characters, except that beta2 is a larger graphic in the vertical direction and there is a subrectangle of blank (actually transparent) pixels at the bottom for centering.

    Display of counters


    One way to get a counter displayed in (for example) the page ugnews.html is to include
    <IMG SRC="http://world.std.com/cgi-bin/nph-count?width=4&link=
    http://www.math.buffalo.edu/cgi/ugnews.html">
    
    This command asks for an image to be displayed, the source for the image being the site world.std.com.

    The width=4 specifies the number of digits in the counter to be displayed and will work o.k. if the count is at most 9999, at which point I expect it will behave like a car odometer and start over from 0.

    Icons and Images


    As of 19980823, all icon references in the www.math.buffalo.edu collection are (or should be) absolute references to .gif files stored in
    www.math.buffalo.edu/icons (actually, /home/faculty/httpd/icons )
    and all image references are absolute references to .jpg and .gif files stored in
    www.math.buffalo.edu/images (actually, /home/faculty/httpd/htdocs/images )
    (In the pages from 19970923 until 19980601, copies of icon and image files were stored in the www.math.buffalo.edu/ and in each dated subdirectory: this was messy)

    The .cgi's for viewing course advertisements and for viewing the archive of seminars and colloquia construct their "top line" navigation bar by first reading the top line of certain .html files in www.math.buffalo.edu; these were modified on Aug. 23 to find the subdirectory where these .html files reside by climbing up one level from the .cgi directory
    /home/faculty/httpd/htdocs/cgi
    rather than by specifying an absolute location. (These changes in the cgis were also necessitated by the move of the dept. pages from /usr/local/etc/httpd/htdocs to /home/faculty/httpd/htdocs in Aug. 1998)

    Transparent .gif files

    During Fall, 1998 the home page was altered to include .jpg graphics with the seal of the newly created College of Arts and Sciences and with the logo. The designer of these graphics intended that they be used on a plain white background. On 19990217, the graphics were changed to transparent gifs which look better on the paper1.gif background. Tools Paintshow Pro, XV and giftrans were used to perform the conversion.
    1. The jpg's were converted to gif's (with Paintshow Pro, although XV would also work)
    2. All colors close to white, i.e. RGB=(255,255,255), were changed to white exactly, by using XV
    3. A list of the color map of each gif was performed with giftrans, to identify the index of the color white
    4. The color white (identified by index) was made with giftrans into the background color
    5. The background was made transparent with giftrans.

    Redesigned control bar

    As of 19990312, smaller direction arrow icons fwd_yel8.gif, back_yel8.gif and up_yel8.gif are used, and a slightly smaller font, "Arial,Helvetica" font, size=-1 is used in the control bar text. This change required
    • designing the new icons,
    • altering each of the files top_pages.def, ug_terms.def and fac_staff_pages.def were the control bars u, ul, ulr, etc. are set up
    The new icons were constructed by starting with a tiny 3-d effect blue right arrow found on the web, and with the old 72x27 fwd_yel.gif icon. These elements were combined, the right arrow enlarged by about 4 pixels, and the overall gif reduced to 45x20, with PaintShopPro 5.01

    Legacy files

    -rw-r--r--   1 sww          4471 Apr  4  1997 DNA_TOPOLOGY.html
    -rw-r--r--   1 sww           562 May  2  1997 about_dept.html
    -rw-r--r--   1 sww         34440 Apr  6  1997 grad_courses_description.html
    drwxr-xr-x   2 sww         13312 Aug 19 01:35 mad
    -rw-r--r--   1 sww          8117 Aug  4  1997 mathfaculty_research.html
    -rw-r--r--   1 sww           717 Feb 24  1997 mathfacultypics_official.html
    -rw-r--r--   1 sww          7658 Aug  1  1997 mathgradstudents.html
    -rw-r--r--   1 sww          1399 Apr  4  1997 myhill_lecture.html
    drwxrwsr--   2 ringland      512 Aug 19  1995 official
    -rwxrwxr--   1 ringland     2278 Sep 23  1997 undergrad_index.html
    -rwxrwxr--   1 ringland      940 Sep 23  1997 unofficial.html
    
    should be cleaned out, except for the "mad" directory .

    A tool to view the history of the www.math.buffalo.edu collection

    A program that makes it easy to see previous versions of web pages and changes that have been made, is available:
    http://www.math.buffalo.edu/cgi/history.cgi
    
    Select history and a list of the present html files in the math collection is displayed. Select a page. Then all different versions of the page are determined, the different versions and the differences between all different versions, may be displayed.

    The ims subdirectory 1997


    A directory http://www.math.buffalo.edu/ims was created to hold E. Bruce Pitman's proposal for and Institute for Mathematical Sciences.


    The 306 subdirectory Fall 1998-present

    A directory http://www.math.buffalo.edu/306 was created to hold course materials for MTH306 Differential Equations. The pages in this directory are not updated by the update procedure. Rather, they are updated by hand. The files within /usr/local/info/math/306 have been updated over the years, and include Maple code due to B.H., J.R. and J.J.F.

    The files 306ch0m9.mws, 306ch1m9.mws, 306ch2m9.mws, 306ch3m9.mws, 306ch4m9.mws, 306ch5m9.mws, 306ch6m9.mws, 306chXm9.mws, are example workspaces written in Maple 9 (and compatible with Maple 10) The "ch0" file is a first-lab intoduction to basic Maple commands; the "ch1", "ch2", .."ch6" and "chX" files correspond to the different chapters of the text.


    Lists of email addresses/ alias files (19980824, B.H.)

    The program fac_gr_emails was originally developed to write files fac_emails and gr_email. Now it writes fac_emails.html as well. Select www.math.buffalo.edu/fac_emails.html to obtain instructions how to do a mass mailing, and lists of the faculty email addresses in comma-delimited, semicolon-delimited and one-per-line formats.
    To avoid inviting spam, the page is not linked from the www.math.buffalo.edu collection except from here, way down in the (boring to most) web-maintenace document. Instead, there is a note in the fac_staff_list.html page saying that if anyone needs to do a mass mailing, they should talk to Marie Bennett.
    The file fac_emails contains a single (long) line starting with faculty: and containing all of the faculty email addresses, comma-delimited.
    The file gr_emails contains a single (long) line starting with gradstudents: and containing all of the faculty email addresses, comma-delimited. In principle (does this still work?), these files are picked up regularly by a chron and made into aliases for a mailer (known to J.R.) that runs on the math dept. sun cluster. By logging onto a machine in this cluster and using this mailer, one may mass mail to all of the faculty simultaneously, or to all of those gradstudents who have agreed to have their email addresses posted on www.math.buffalo.edu.


    New 4 U (19990320, B.H.)

    To flag which of the pages referenced from the homepage have changed since the user last visited the site, if
    1. the user is running a bowser that supports JavaScript 1.1+, for example Netscape 3+ or IE 4+,
    2. the user has visited the site before and has accepted the cookie from www.math.buffalo.edu
    3. any pages HREFerenced frpm the main list on the homepage have "Revised" or "Updated" dates later than the date the user last visited,
    then the "New 4 U" graphic will be displayed after the link to those pages.
    The JavaScript was incorporated in the homepage. The code is basically from the CDROM that comes with Danny Goodman's "JavaScript bible". date-time is measured in GMT milliseconds sinee the beginning of the unix era. When the user shuts down the browser, a cookie identified as "originating" from www.math.buffalo.edu and containing the current date-time, is written to the users hard disk. When the user revisits www.math.buffalo.edu this cookie is read by the browser, which then knows the date-time of previous access. The Javascript function "newAsOf" defined in the section, is called once for each page HREFerenced from the homepage, and takes as paramater a date-time string in human-readable form.

    The date-time strings in the newAsOf function calls must always be the most recent date-times at which the HREFerenced pages have been revised or updated. It was decided to incorporate the code to modify index.html and change the "newAsOf" date-times in ucnp5.cgi, the program that is used to process the "Update Calendars, News, .." form. Each time that any of the pages sem_coll.html, grnews.html, .. is updated, every html file HREFerenced from index.html and followed by a "newAsOf" call, is scanned for "Revised" or "Updated" date-times, and the "newAsOf" dates in index.html, are changed accordingly. The default date-times are all 1 second into the unix era, so by default, New 4 U icons are not displayed.

    The file index.htf is the prototype for index.html. It contains the Javascript 1.1 code for cookie functions and newAsOf.

    The file top_pages.txt defines item1, item2, item3 data for index.html. These items include "new4u" strings. The "new4u" is defined in top_pages.def, and consists of a JavaScript call to "newAsOf" with the default date-time.

    The 4 U icons will not be displayed immediately after the collection of pages has been recompiled, since all of the newAsOf dates are the default dates, the beginning of date-time in the unix era. To change rhe newAsOf dates to the correct values, webmaster must run the "Update Calendars News Postings" program, by posting some test data to the test page. This should be changed, so that the "update" procedure automatically runs the "Update Calendars News Postings" program, or at least that part of it, which modifies the newAsOf dates within index.html .


    New Icons, Mar. 1999 B.H.

    With the introduction of a left side navigation table and the change to a smaller font on the labels of the controlbar, there was a need to reduce the size of the arrow icons on the controlbar. Semi-original artwork by B.H. using PaintShopPro combined the previous arrow icons (from the "HTML for dummies" cdrom), and a tiny 3-D blue arrow found somewhere on the web, to produce medium sized, shaded 3-D blue arrows on flat yellow buttons.

    To represent "search this site" on the level 1 pages, a magnifying glass icon with a matching shaded blue handle was then constructed.

    A good location for the compulsory CAS logo and seal, was found within a left side table on the homepage, shaded light blue like the navigation tables on the level 1 pages. Since there was a problem getting the pair of graphics to be positionned relative to each other the same way in Netscape as in IE, the logo and seal were combined into a single graphic. The seal, and the UB and the CAS of the logo, were all shifted slightly for aesthetics. The background color of the graphic was made transparent, so that the light blue of the side table would show through.

    The address of the department on the homepage, was moved to the left light-blue shaded table, below the top_left image of Diefendorf Hall and above the UBCAS graphic. Since the word "Mathematics" appears in black, Arial text, and in the level 1 pages the current page appears in black, Arial text in the similar left side light blue table, for consistency with the layout of the level 1 pages, the "Mathematics" logo on the homepage was changed to black, Arial text. To make it stand out, a drop-shadow effect (grey shadow on white button) was added.

    On the homepage, "University at Buffalo,State University of New York", and "College of Arts and Sciences", were placed in a control bar to the top of the "Mathematics" logo, and all 3 items enclosed in a rectangular yellow box, similar to the yellow controlbar-title boxes for the level 1 pages.

    New Format for index.html, Mar. 1999

    With the introduction of a left side navigation table in the level 1 pages, a similar layout was then adopted for the homepage index.html. A left side table shaded blue was introduced, with a small graphic of Diefendorf, followed by the department address. Instead of using a magnifying glass "search" icon, the text "search this site" appears below the address. The problem of finding a good location for the compulsory CAS logo and seal, was solved by placing them within the a left side table.

    Consistent with the design of the level 1 pages, the "Mathematics" logo on the homepage was changed to black, Arial text. To make it stand out, a drop-shadow effect (grey shadow on white button) was added. "University at Buffalo,State University of New York", and "College of Arts and Sciences", were placed in a control bar to the top of the "Mathematics" logo, and all 3 items enclosed in a rectangular yellow box, similar to the yellow controlbar-title boxes for the level 1 pages.

    To reduce the number of clicks for frequently accessed pages, direct links to sem_coll.html, fac_staff_list.html, and gr_student_list.html were placed on the homepage. Instead of an unordered list with bullets, the main table was implemented as a definition list (no bullets). The subitems then become parts of the

    data definitions. Note: Netscape and IE indent definition lists somewhat differently, However, using a definition list seems to be the best way to get "hang left" text.


    New Format for index.html, Apr. 1999

    Renee Ruffino of the Art department constructed a new "Mathematics" logo for the homepage, with the CAS seal followed by the word "MATHEMATICS" but with "A" and "E" replaced by Greek "Delta" and "Sigma". B.H. and M.J.C. did not like the use of "Delta" in place of "A". Pending a redraw of the logo, B.H. substituted a drop-shadow "Mathematics" in place of the Greekish text, and balanced the CAS seal with a small version of the architects sketch of the new Math building. At the same time, the links to UB, UB Wings, CAS and Search were placed in a table at the bottom of the page.

    New format for level 1 pages, Mar. 1999 B.H.

    Navigation tables on the left, inside light blue rectangles, were introduced Mar. 1999 to the level 1 pages Academics.html, Administration.html,.. The navigation table selection turns from a hyperlink to black text, to indicate the current selection. This is done without frames, so as to avoid the "stuck in a frame" problem, and was inspired by the AOL homepage. A 90 by 60 pixel image appears at the top of each navigation table.

    Each of the different level 1 pages should really have a different image, but initially, only Academics and Administration have unique images and the other level 1 pages use the same image of Diefendorf Hall.

    The basic layout used for each level 1 page, is table within table, with bgcolor to color the area of the innermost table. The left side navigation table is light blue (a "browser-safe" shade) and the top right control bar table is light yellow, (also a "browser-safe" shade). It was found necessary to make the table-within-table nesting a layer deeper than one might think, and to include data (even if just a non-breaking space) in every table entry, in order to get both Netscape and IE to render the page in similar manners.

    The format files for the level 1 pages are level1nt.htf, level1nt2.htf, special_pagesnt2.htf . The "nt" stands for "navigation table", and the "2" for "2 columns of main data". The special_pagesnt2.htf file, is similar to level1nt2.htf but includes thumbnail images.

    In top_pages.txt, in the data for each level 1 page, "top_left_image" and "navtable:" are defined. The strings appearing in these definitions, are themselves defined in top_pages.def.

    New format for index.html, Nov. 1999 B.H.

    To provide quicker access to the most frequently used pages, links to these pages are now duplicated in the homepage as is done on "Yahoo". The homepage was converted to a 2-column format to support the additional information.

    Fixed width pages, Nov. 1999 B.H.

    Previously, the pages stretched widthwise to fill any browser window. However, various pages didn't look very good on browsers with very large screens. The homepage and the pages of level 1 and level 2, were converted to have a fixed width of 600 pixels and to center within browsers windows, as done on "Yahoo".

    Posting Mathematics Course Web Page links, to centralized University database

    There is a mechanism set up, perhaps within Registration, whereby instructors can link their Course Pages to the Class Schedule. This online form requires that the instructor know the course registration number. Unfortunately, these numbers are not all available online. If a course does not have a recitation/lab associated with it, then the registration number is indeed available online. However, to minimize mistakes by students, the registration numbers of courses that do have recitations/labs are not available online. On 11/04/99, B.H. obtained the registration numbers for all Mathematics courses that have web pages, from Rosemarie Marciniak, and then entered all of the links to math course web pages for Fall 1999 (and 438 for Spring 2000), into the centralized database. This work will need to be repeated each semester.

    Use of tables with graphic bullets instead of unordered lists Nov. 20 1999

    This change was performed to obtain better spacing between items and better looking bullets, in all of the pages that had previously employed unordered list structures (this includes all of the level1 and level2 pages). Single column layouts became tables with two columns, one for the graphic bullets and one for the items. Double column layouts became a pair or two column tables, both within a table. To implement these tables,
    • program make_pages.for was modified to treat "itemX" replacement patterns in a special way.
    If an "itemX" pattern evaluates to a blank, it is replaced by a single space. If and "itemX" pattern is nonblank, it is replaced by the value of the current "beginitem", "itemX" and "enditem" patterns. The "beginitem" tag starts a new table row, defines a table data element with a graphic bullet and starts the table data element for the "itemX" data. The "enditem" tag finishes both the current table data element (containing the value of the "itemX" data) and the current table row.
    Different font sizes were adopted to for the links within items, and for the text explanations that follow immediately after the link. These changes required reworking
    • all htf files that include item data (i.e. item1, item2, .. patterns defined in top_pages.txt),
    • the perl programs fsl.pl, gsl.pl that generate the fac_staff_list.htf and gr_student_list.htf files,
    • top_pages.def to set up defaults for the beginitem and enditem tags
    • top_pages.txt to redefine these tags in order to give a smaller font for the item data in the fac_staff_list.html, gr_student_list.html files
    • top_pages.txt to insert end-font and font tags in different data items, (and sometimes line breaks) to improve the appearance of text following link(s).

    A small white ball was used to replace the black bullets previously generated by the unordered list mechanism UL. A charcoal grey ball might be more attractive, if one could be found (or created).

    Watermark background, grey "matting", and black outlining, Nov. 22-30, 1999

    • A simulated watermark was created for use as the background on the www.math.buffalo.edu pages. The background in the web pages had been a solid "#f8f8f8", that is, a light shade of grey. The "1846" UB seal was picked up from Wings, doubled in size, and converted to a two-color image, the colors being "#f8f8f8" and "#ffffff", i.e. a light shade of grey and white. This simulates a watermark used on paper at the University. (The effect is very subtle, and is missed by browsers on older machines that don't distinguish between the colors "#f8f8f8" and "#fffff".)
    • A background color "#dddddd" a slightly darker shade of grey, was adopted for the matte area inside picture frames, to prevent the white of the watermark from showing up in the matte areas.
    • The small image of the new Math building and the control bar on the main index.html page, also the navigation bars on the "level1" pages, are now outlined with a 1-pixel wide black border.

    On static and dynamic IPs and the UB DHCP Maintenance Interface, B.H. Jan 2000


    Most of the machines in Diefendorf Hall use static rather than dynamic IP's. (IP = Internet Protocol numbers, ex. 128.205.76.38 for riemann.math.buffalo.edu).

    New workstation class machines (Macs, Win 95/98/NT) can be (perhaps more easily) configured using a dynamic IPs. The web page DHCP Service @UB describes the process.
    Basically, such machines work immediately if configured for a dynamic IP, and plugged into any ethernet port at UB. However, the DHCP server will only provide this service for a brief period of time, enough to allow the user to access the registration form web page to register the machine the user is employing.
    A machine using an unregistered dynamic IPs that exceed the time limit is placed in the "excluded" category. Technically, it is the ethernet address (a 12-digit hex numbers such as 00:20:78:15:fb:92 called the IEEE MAC number) of the ethernet card of the machine, which is placed in the "excluded" database. When "excluded", no dynamic IP will be provided to the machine using that network interface card.

    To get out of this trap, one may install a new ethernet card which will have a different ethernet address, or one may ask someone with administrative contol to remove the ethernet number of the NIC from the excluded database. The webpage that is used for administrative control of the DHCP database, is dhcp-ed.cgi.

    The Beginning-of-Term Faculty Form program, B.H. Jan 2000


    The subdirectory http://www.math.buffalo/edu/bot was created to hold a beginning-of-term program by B.H.
    This program collects data from a faculty member using the program, from UB Wings, and from the Mathematics Department website to fill out and print beginning-of-term forms (grader request, schedule final exams, schedule Talbert office hours, directory information, current area, material for vita, department newsletter).

    When the faculty member clicks on the "submit" button at the bottom of this page, the forms (as needed) are printed, and are then hand delivered to the appropriate department mailboxes. For details on the current version of the program, see bot_readme.txt. For spring 2000 the program is called bot8.cgi, is running on the machine yellow.math.buffalo.edu and printing on the Apple LaserWriter in Rm. 121, Diefendorf Hall. The program files are backed up to the bot subdirectory on newton.

    Search utility broken, Feb. 2000

    Hello Brian,
    
    The InfoSeek search engine on campus was upgraded shortly after the
    new year.  It became apparent after the upgrade, that search pages
    required updates to their syntax as follows...
    
    Remove the following line from your HTML page:
    
            
    
    In January, we sent a message to the wings-ip list regarding this, and
    we notified individuals as best we could (i.e. we do not have a list
    of all Information Providers having search capabilities on their Web
    page, so we attempted to find as many maintainers as possible).  Our
    on-line documentation has also been updated at:
        http://wings.buffalo.edu/wwwlib/infoseek.html
    
    Sorry about the inconvenience.  Let me know how the fix works.
    
    --Bob
    
    -------
    Bob Diem  (diem@acsu.buffalo.edu)
    

    Department Newsletter Math Matters posted to web, Mar. 2000

    Here is the subdirectory containing the Math Matters newsletters.

    To date, 4 newsletters have been published. These were prepared using WordPrefect 7 by Marie Daniel. B.H. set up the linux system "yellow" using samba to allow M.D. to mount a network disk that corresponds to the subdirectory /home/md/ of "yellow". M.D. copied the files Math Matters 0498.wpd Math Matters 1198.wpd Math Matters 0499.wpd Math Matters 1297.wpd to this location. For each file, B.H. then

    1. used ftp on "yellow" to copy the file to the engineering unix cluster,
    2. used ftp on a Windows NT workstation in DFN 203 to copy the files from the engineering cluster to then to the U: drive of the NT workstation (this round-about route was necessary, because the NT workstations are "locked down" and unable to ftp from any machines other than ubunix.acsu.buffalo.edu and unix.eng.buffalo.edu. The 1297 file is about 21 megabytes, which exceeded the disk quota on B.H.'s acsu account, so the unix.eng.buffalo.edu account was used instead.)
    3. used WordPerfect 8 to translate the wpd file to text, and to "web publish" the wpd file (translate to html). The resulting files were stored on the workstation temporary "U:" drive.
    4. used ftp on the NT workstation to transfer the files to the engineering cluster,
    5. used ftp on the engineering cluster to transfer the files into a dated subdirectory of newton (for example, /home/faculty/httpd/htdocs/mathmatters/1297/)
    6. used a perl program cpimg.pl to rename all of the "gif" image files created by the WP8 html translator, to shorter file names that do not contain right and left brace characters.
      (The WP8 translator produces very poor html code. It
      • translates some text boxes into gifs some of which are truncated (problem with large characters),
      • translates some text boxes in gifs that are unreadable (choice of colors that do not contrast sufficiently)
      • chooses names for the "gif" images that contain unusual characters, and so Netscape cannot view these gifs
      )
    7. copied the primary html file to a file index1.html and ran a perl program mmmod1.pl which editted the html,
      • removed double column commands, and certain "break" commands,
      • changed the references to the strangely named "gif" files to math01.gif, math02.gif etc.
    8. copied the resulting file index2.html to index.html
    9. editted the index.html file, to include text from the raw ascii translation of the WP document to restore text (the Message from the Chair) which is "eaten" (converted into unreadable gifs) by the WP8 html translator,
    10. constructed new header information and table of contents for the newletter,
    11. scanned in photographs that were missing from the wpd document.
    (More than 1/2 workday of effort was spent translating each newsletter. The other possible way of publishing the newsletters on the web, is translation to pdf files. However, since the original wpd documents were themselves missing photographs, and since there it is very difficult to modify a pdf document without expensive software tools that the department does not own, the pdf option was not pursued.)

    Links from Calendars, News and Postings to locations within Newsletters, Mar. 2000

    Since the newsletters contain a "Message from the Chair" feature, as well as "Faculty News", "Student News", and "Alumni News", and since the mechanism that had been set up for automatically updating the pages chnews.html, ugnews.html and alnews.html had been infrequently used, the links from Calendars, News and Postings to these 3 pages were removed. In place of links to these files, the "Calendars, News and Postings" page now includes links to locations within the "Math Matters". (If the data access is slow, then the browser user gets to view the header of the Math Matters issue until the item of interest has loaded. This could be sped up a bit by decreasing the physical size of the scanned jpg image files.)

    Research Group(s) Mar. 2000

    Bruce Pitman suggested including in the faculty by research areas page, links entitled "Applied Mathematics Group" to the page that he maintains. This was done by creating a new .txt file, fac_groups.txt, which defines the name(s) of the research group(s) and the areas of interest. This file is appended to the list_by_areas.in2 file before list_by_areas.exe is run, and so a "pseudo" faculty name is listed in each of the areas. The group name is linked to a an html file with basically the same names as the group (spaces replaced by underscores).

    Online Graduate Application Mar. 2000

    Jim Reineck provided the link to an online graduate application form, which allows student(s) who can
    • have a sufficiently fast internet connection, and
    • read English well enough to figure it out,
    to enter information, update information, and submit the final version of the application to Grad School.

    Myhill Lecture page Mar/Apr 2000

    Marie Bennett prepared the flyer, which was copied onto paper with a grey gradient from one size, and a rose gradient from the other. She also mailed a Word Perfect 7 to html translated version of the document (no background)

    To create an appropriate background, B.H. started with a blue gradient box from Wings, used PhotoShop Pro to convert to a 256 level grey image, then increased the color depth to 16K (still grey), then made a copy of it, reflected it, colored it rose, and then copied and pasted portions of the grey and rose gradient images into a single 16K color level image. To ensure vertical periodicity, an image twice as large vertically was created by pasting together the image and a top-to-bottom reversed version of the image. The final image was obtained by reducing the color depth to 256, creating a .gif

    To ensure that the text was properly aligned on the background, the text was restricted to a 600 pixel wide box, with 20 pixel padding around the text (an html table was used, with one row and one table data item in the row). Text sizes were adjusted manually.

    The page was myhill_lect_2000.html was then placed in the /archive/ subdirectory and linked into the home pages from there. This saves a little effort compared with the way it had been done in previous years, i.e. placing the page in the home directory, and then moving it to the /archive/ directory after the lecture. The downside is that the "new4U" mechanism may not recognize the page as being "new" since it isn't in the home directory.

    Level 1 graphic changed ro "The" State University of New York Apr. 7 2000

    The most official name of the university was changed from "University at Buffalo, State University of New York" to "University at Buffalo, "The State University of New York".

    The "letterhead" style graphic used in the Level 1 pages was changed as follows: The graphic file icons/DeptofMath4c1.gif was brought into PaintShop Pro. The canvas size was increased, and the color depth was increased; (On a 256-color graphic (.gif) text that is placed in the graphic is not anti-aliased and so appears chunky.) The phrase "State University of New York" was cut from the graphic. Times Roman bold italic size 11 was used to insert the phrase "The State University of New York".

    The graphic with the new text was then converted back to a 256-color graphic, but it was found that the background color had changed, and that the phrase "University at Buffalo" in blue, had degraded.

    To avoid this degradation, the original graphic DeptofMathc1.gif was again loaded into PaintShop Pro and the canvas size increased, but the color depth left unchanged (256 color gif.) Then the phrase "The State University of York" was copied in from the 256-color version of the editted graphic. The final result was uploaded to icons/DeptofMath4c1c.gif, and the file top_pages.def was changed so that the symbol mb2imgc represents the new graphic, so as a result the symbols math_banner2 and math_banner3 which use the symbol mb2imgc, reflect the change.
    The page /306/index.html was also changed to use this new graphic.

    Math Major Slide Presentation April 2000

    For Open House day April 8 2000, Maria Daniel prepared a Powerpoint presentation. Instead of saving it to a CDR, it was decided to put this presentation on the department web server, so that potential math undergraduates could view it.

    M.D. and B.H. used Powerpoint to prepared an animated html version of the presentation, storing the output in a subdirectory of "My Documents" on M.D.'s PC. The contents of this subdirectory were then moved (using ftp from an MS-DOS box) to the subdirectory /mathmajorsp00/ of newton.
    The ".htm" problem created by Microsoft It was soon discovered that Microsoft used ".htm" file extensions instead of ".html" file extensions, so that only Internet Explorer (not Netscape) would load the basic index.htm page.

    To solve this problem, B.H. wrote perl scripts that

    • made a copy of each ".htm" file as but as a ".html" file
    • within each ".html" file, replaced each reference to an ".htm" file by the corresponding reference to an ".html" file.
    The original ".htm" files were left unchanged, so as to avoid "breaking" the ability of I.E. to display the presentation.

    The ".html" converted version of the presentation then worked correctly with I.E., after downloading and installing the Powerpoint animation viewer for Activex, from MS.

    The page /mathmajor/index.html also displayed correctly under Netscape, except that it also required downloading an animation viewer for the slideshow itself, and efforts to do so failed (Apr. 7).

    The remaining option is to prepare a static version of the presentation with user-controlled paging, which could be viewed using Netscape.

    As of Apr. 7, the slide presentation can be viewed with Internet Explorer 4.0, at

    http://www.math.buffalo.edu/mathmajorsp00/
    
    but is not linked in from elsewhere in the Department pages.

    MTH 141 webpages 1999 Judith C. Gebera

    An undergrad student project designed a collection of pages helpful to Calculus I students, viewed by visiting
    http://www.math.buffalo.edu/141/
    Files in the corresponding directory /usr/local/info/math/141 are not modified by the update procedure.

    Course Web Pages Fall 2001

    Starting with Fall 2001, there has been a page called course_web_pages.html listing the departmental courses which have web pages.

    The program /usr/local/into/math/util/cwp_anyterm.pl is used to construct a file cwp.htf which is then used as data to generate the page course_web_pages.html during the processing of top_pages.txt.

    The data for cwp_anyterm.pl consists of the files

    • fac_staff_list.txt in the current (dated) directory,
    • /usr/local/info/math/csv/mth_due__sp09.csv
    • /usr/local/info/math/csv/mth_grad_sp09.csv
    where sp09 represents the current is term and year

    The program cwp_anyterm.pl compares the last name and first initial of individuals listed in fac_staff_list.txt to the last name and first initial of instructors listed in either of the due or grad course listings. If there is a match, and if the fac_staff_list.txt file contains a "course1page" or "course2page" links such as
    course1page:http://www.math.buffalo.edu/~biondini/teaching/142/
    course2page:http://www.math.buffalo.edu/~biondini/teaching/563/
    then the program adds a line to the file cwp.htf.

    Course Handouts Fall 2001-Spring 2002

    The pages http://www.math.buffalo.edu/course_handouts/fa01/index.html http://www.math.buffalo.edu/course_handouts/sp02/index.html present the collections of course handouts from these terms. The individual course handouts are stored as jpgs in /usr/local/info/math/course_handouts/fa01 and in /usr/local/info/math/course_handouts/sp02

    There were links from the main departmental web pages to these course_handouts pages 2001-2002. Maintaining the collection of such pages was a little tedious, as it required scanning copies of the course handouts.

    The files in course_handouts are not modified by the update procedure.

    Syllabi Fall 2004


    A subdirectory /usr/local/info/math/syllabi was created to store sample course syllabi prepared by J.R.: these have names such as syllabus_mth???.pdf where the course numbers are: ???= 115, 121, 122, 131, 141, 241 306, 311, 411

    These pdf files do not change when the update procedure is applied.

    Email graphics Fall 2004


    To try to reduce the potential for spam directed at departmental e-mail addresses, relatively crude graphics were used to replace text listings starting Fall 2004. These graphics are regenerated each time the collection of pages is recompiled with "update", and are stored as "gif" files in the directory /usr/local/info/math/icons/

    The programs used to generate these graphics are /usr/local/info/math/util/emailgraphics?.pl, where ?=1,2,3,4,5

    Undergraduate Course Listings from Online Undergraduate Catalog, Jul 28, 2005

    Sometime during FA04 or SP05, the Online Undergraduate Catalog improved by including links to prerequisites. The differences between the course listing information given in http://undergrad-catalog.buffalo.edu/academicprograms/mth.shtml#courses with links to course description and registration information, such as http://undergrad-catalog.buffalo.edu/coursedescriptions/index.php?frm_abbr=MTH&frm_num=141 and the MTH website information ug_course_list was small: there were links from ug_course_list offered background information on the subjects but no links to course information.

    For simplicity, the MTH website ug_course_list was dropped in favor of the online catalog information. Technically, this required modifying the program make_pages so that strings such as "MTH 141_" and "MTH 418_" in txt and htf files, were translated into links to undergraduate catalog course description links like the one given above. Strings such as "MTH 511_" where the course number begins with a digit 5, 6, 7 or 8, are still translated into links to tags within the gr_course_list page.

    Withing the program make_pages, it was necessary to increase the string size for the string "location" and related strings, from 80 to 99 characters.


    Small steps towards development of a LAMP-based version of the Math website, Summer 2006


    Subdirectories
    www.math.buffalo.edu/lamp1
    www.math.buffalo.edu/lamp2
    www.math.buffalo.edu/lamp3
    
    contain initial development versions of potential replacements for the Math website, based upon a LAMP server. LAMP stands for (Linux, Apache, MySQL, PHP), and there are various web development packages available. B.H. had Node Services set up a MySQL username/password for this purpose, and tried some basic "lamp": see http://math.buffalo.edu/lamp1
    http://math.buffalo.edu/lamp2
    http://math.buffalo.edu/lamp3
    Files in these subdirectories are not modified by the update program


    www.math.buffalo.edu/printers Fall 2008

    Subdirectory /usr/local/info/math/printers contains php scripts that display printer setup instructions, for printerx where x=1,2,a,b,c,d and for operating systems for MacOS, gnome (linux), Windows XP and Windows Vista.

    Files in this directory are not changed by the update procedure: rather, they are changed by hand.

    There are individual "php" scripts which are invoked for each of these different operating systems. Use of php allows passing the printer identification php script, which then writes the appropriate html.

    The files are currently xp_printerxsetup.php vista_printerxsetup.php, index.php, gnome_printerxsetup.php, mac_printerxsetup.php


    -==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==-


    This page maintained by webmaster