First, a brief history of my programming/analysis background:
- In 1962 at UCB (the University of California, Berkeley), after taking an after-hours
Fortran II classes presented by IBM because there were no computer programming classes offered
by UCB at that time. I began computer programming at the UCB Computer Center as an apprentice to the
Chief Programmer, Gio Weiderhold, on an "as my time for his time as needed", with no pay, working
on a pet project of his, i.e., NELFAP, a program to convert the NELIAC Compiler which was a
self-compiler written in NELIAC into the FAP assembly language because the original boot-compiler had been lost. The
conversion program was written in Fortran II and ran on an IBM 7090 mainframe. I also was assigned
to several other projects.
- Within a year, I was hired as an Assistant Coder Trainee, a paid position, and I worked part-time
during the school year and full-time during the summer.
- Shortly, I was doing Fortran consulting for the campus computer users. I also did several moon-lighting projects for
graduate students who would provide me algebraic formulas and procedures and I would implement them
in Fortran.
- During the next few years I progressed to being a Programmer I and the mainframes changed to an IBM 7094-2,
and eventually to a CDC 6400, and the languages to Fortran IV and COBOL. Eventually, I began to work
full-time.
- Eventually, I was assigned to the Computer Center Library where I helped campus staff and students find
desired subroutines and software packages to solve their computing problems. I also implemented a
catalog program using free-form IBM card input and KWIC (key-word-in-context) printed listings.
- After several years, due to budget cuts, I, along with many others, was laid off.
- After a couple of years, I took a position in the UCB Admissions Office in which I validated admissions data
which was being sent to UCOP (the UC Office of the President) where computer processing for all the
UC campuses was done. At that time, the Admissions Office requested admissions reports via the SIRE (Simplified
Information REtrieval) program. SIRE had several shortcuts called "virtuals" which simplified some
information retrieval requests. But retrieving a student's actual admissions status required multiple
132 character wide printouts which was quite inefficient. In order to simply getting a more efficient
way to retrieve a student's status, I developed a decision tree and asked the UCOP, to provide a new
"virtual" based upon my decision tree. They said they did not have time to do the appropriate coding,
so I asked if I could try to code the new "virtual". They agreed and I coded my first SIRE "virtual"
#BSTATUS. It was very successful and began to be used by many UC campuses.
- Shortly after coding #BSTATUS, I applied for and was offered a Programmer 1 position in the Admissions group
at UCOP. I quickly learned IBM's PL/1 programming language (I still consider PL/1 to have been the best computer
language I ever used) and how to run programs on an IBM 360 mainframe. One of the programs I wrote was a data
pre-checker for the campuses to use to validate financial aid data prior to sending the data to UCOP
for processing. The program was designed to run and compile on both IBM and Burroughs mainframes. The
2 compilers had significant differences and I used the PL/1 Pre-compiler to make appropriate changes
to the program code based upon a single Pre-compiler variable. This program was also used across many
UC campuses.
Because processing time was lengthly for the campuses, I was asked to write a program for the campuses which would allow them to validate and correct Financial Aid data before it was sent to UCOP for processing. This program was written in PL/1 and with a single pre-processor variable setting, it would compile correctly on both IBM and Burroughs mainframes. The program also used the pre-processor to create code for editting all the data fields required for the financial aid transactions. Note: when the code was reviewed by a senior programmer, I was critizied for using the pre-processor but several years the senior told me that I had been correct and that he had been wrong and that he had simply not understood the use of the PL/1 pre-processor!
After several years, when I did not receive a promotion, I transferred to the Payroll group at UCOP and was promoted. - In mid 1976, UCOP began to distribute the UCOP computing to the campuses and we were offered to a chance to transfer
from UCOP to any campus which needed programmers. I visited several campuses and was hired by UCSD
(University of Californis, San Diego) in late 1976 where I began to work on a Burroughs mainframe using COBOL.
One of the first tasks I was given was to write a program which would create appropriate templates for scheduled classes. I was given a design which included a 4x9 array which described each scheduled class, i.e.,
T N C R T N C R T N C R T N C R T N C R T N C R T N C R T N C R T N C R
where T = class type, e.g., lecture, seminar, lab, study group, etc.
N = number of class type, e.g., 3 lectures, etc.
C = for credit or not for credit
R = how many of the rows are included in the T group
For example:
lecture 2 credit 4 study group 3 1 lab 1 credit 2 seminar 2 credit 1 0 0 0 0 0 0 0 0 0 0
would create the following for the scheduled class:
lecture with credit study group no credit study group no credit study group no credit lab with credit seminar with credit seminar with credit lecture with credit study group no credit study group no credit study group no credit lab with credit seminar with credit seminar with credit
That is, the scheduled class has 2 lectures with credit, each lecture has 3 study groups with no credit and 1 lab with credit, and each lab has 2 seminars with credit.
Using COBOL, I first tried to program the process iteratively but gave up after about the 4th iteration. If the class required all 9 rows, the code would have required many 60 line pages of code. So I investigated doing the process recursively. I came up with a simple function which used 2 recursive subroutines (push and pop which required less than 60 lines of code total). NOTE: COBOL does not generally allow recursive programs but the Burroughs 6700 had an interal hardware stack which allowed my recursive subroutines to work!
For those programmers who might think the above design requires only a simple implementation, I suggest that you might try to code it yourself for all 9 rows. A note: when I first implemented my code, many of my fellow programmers seemed to think it was a "bad" implementation, so I offered to buy an expensive dinner for any who could implement it in a "better" way...no one ever took me up on my offer! This program was used for about 10 years with no modification to the recursive routines. - late 70s to mid 80s Prime mini-computer UNDERGRADUATE ADMISSIONS SYSTEM...drop down windows
- 1986-1987: Pursuing a personal interest in Numerology, I found the calculations to be a bit tedious. So I wrote
a COMAL program on a Commodore C64 computer to to the numerological calculations along with
an associated database of numerological interpretations. The database only included a few entries to check
out the interpretations of several people. The program used many subroutines, some recursive, to do the
conversion of names into numerological "numbers".
2016/01/01: I have been looking for a possible COMAL compiler/interpreter for Windows so I might be able to access the program from this website. Another posibility would be to convert the COMAL program into a BASIC, PL/1 or another language. - IBM 360 with IDMS...conversion of Prime UG Admisions data to fit the new ISIS admissions program...progressive
separation ISIS/IFIS
- I retired from UCSD on 2002/12/01.
The Web Development Pages contain information regarding the development of this site as well as some of my experiences with FrontPage, Expression Web, HTML, CSS, XHTML, HTML5 conversions and other techniques.
This site was originally created using MS FrontPage. I progressivly upgraded to MS Expression Web 4.
Although Expression Web 4 is no longer supported by Microsoft, it is available as a free download and is still used by many developers.
Over time, I modified the original FrontPage HTML 4.01 code to be HTML5 and CSS3 compliant.
Beginning in 2014/08, I began to change the site using Progressive Enhancement techniques to improve browser/device compatibility/accessibility.
The development history and techniques, as well as some useful PHP functions I have developed may be seen on the Web Development Techniques & Site Status History page.
1999/00/00 | Beginning around the end of 1999, I initially developed this site on my PC running Windows P/SE/ME and using MicroSoft FrontPage (FP) without using HTML directly. Some time after Microsoft discontinued FP, I replaced FP with Microsoft Expression Web 2 (EW2) and later with Expression Web 3 (EW3) followed by Expression Web 4 (EW4). I eventually installed Windows 7 when MicroSoft discontinued support for Windows XP. |
1999/00/01 | As I read the EW documentation and bought a few books about EW, I realized that I should update my site to be HTML 4.01 Strict compliant and to remove the FP "bots" and other special FP and Microsoft extensions. While trying to upgrade my site I discovered that I had to learn, at least, some basic HTML and CSS, so I bought a some books about HTML and CSS. I then converted the site to XHTML 1.0 Strict code and transferred my site from a Windows server to a Unix server to allow use of PHP and eventually of MySQL. Again, I bought some books regarding the new (to me) aspects of web site design. During these learning processes, I also used Google Search to look for answers and techniques, I continue to use Google search quite a bit. |
2011/01/10 | I have done no testing with Apple Mac but, as of today, no one has reported any problems. |
2010/07/06 | The site is now XHTML 1.0 Strict! I have removed the use of <embed> automatic audio until I can determine how to do it while remaining XHTML 1.0 Strict. |
2010/12/18 | There are now some XHTML 1.0 Strict incompatibilities in old pages which have been URL redirected to new pages. The old page links will be maintained for a while to allow links in search engines to continue to work. |
2011/06/14 | During the past year or so, I have completed making all pages XHTML 1.0 Strict except for the packaged Submit Comments pages which are HTML 4.01 Transitional. |
2011/09/25 | Having reworked the site, all pages now validate as HTML5 and CSS3! |
2014/08/00 | Beginning to convert site using Progressive Enhancement techniques to make site more useable on all browsers and on all devices including mobile devices. |
2014/12/31 | Not sure of actual date but site now works properly on all modern browsers and devices! |