Files
hpr_website/www/eps/hpr1811/hpr1811_full_shownotes.html

198 lines
27 KiB
HTML
Executable File

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="generator" content="pandoc">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<meta name="author" content="Dave Morriss">
<title>Life and Times of a Geek - part 2 (HPR Show 1811)</title>
<style type="text/css">code{white-space: pre;}</style>
<!--[if lt IE 9]>
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<link rel="stylesheet" href="http://hackerpublicradio.org/css/hpr.css">
</head>
<body id="home">
<div id="container" class="shadow">
<header>
<h1 class="title">Life and Times of a Geek - part 2 (HPR Show 1811)</h1>
<h2 class="author">Dave Morriss</h2>
<hr/>
</header>
<main id="maincontent">
<article>
<header>
<h1>Table of Contents</h1>
<nav id="TOC">
<ul>
<li><a href="#introduction">Introduction</a></li>
<li><a href="#farewell-aberystwyth">Farewell Aberystwyth</a></li>
<li><a href="#a-year-out">A Year Out</a></li>
<li><a href="#university-of-manchester">University of Manchester</a><ul>
<li><a href="#doctor-of-philosophy-degree">Doctor of Philosophy Degree</a></li>
<li><a href="#zoology-department">Zoology Department</a></li>
<li><a href="#university-of-manchester-regional-computer-centre">University of Manchester Regional Computer Centre</a></li>
<li><a href="#programming-languages">Programming Languages</a><ul>
<li><a href="#fortran">Fortran</a></li>
<li><a href="#pascal">Pascal</a></li>
</ul></li>
</ul></li>
<li><a href="#links">Links</a></li>
</ul>
</nav>
</header>
<h2 id="introduction">Introduction</h2>
<p>In the last part of my story I told you of my first encounter with a mainframe computer and the Algol 60 language while I was an undergraduate student at Aberystwyth University.</p>
<p>Today I want to talk about the next stage as a postgraduate student at the University of Manchester.</p>
<h2 id="farewell-aberystwyth">Farewell Aberystwyth</h2>
<p>I had a wonderful three years in Aberystwyth. It was a beautiful location by the sea with access to all sorts of landscapes and environments; perfect for a Biology student. I could go on at great length about the forays into tidal pools in front of the main University buildings on the sea front, the Welsh woodlands, mountains, salt marshes and bogs we visited. I could tell you about the student who used to bring her pet Jackdaw and her Border Collie to lectures, or the tale of the incredibly fierce rat that my friend and I allowed to escape in the lab, which caused 30 students to jump on tables and chairs. However, I will not. Perhaps another time.</p>
<p>Suffice it to say that as we needed to specialise in the last year of study I gravitated towards the area of Animal Behaviour. I did a project on memory in goldfish, training them to perform a task, then using a drug on them to prevent the formation of long-term memory and showing that they had forgotten their task while the control group had not.</p>
<p>I obtained a reasonably good Honours degree in Zoology in the summer of 1972 and then had to consider what to do next.</p>
<p>I considered developing the programming skills I had acquired in a Biological context, and applied to a few places with this idea in mind. However, nobody wanted a newly graduated Zoologist who had done a little programming, it seemed, or maybe the fact that I didn't really know what to do next was glaringly obvious. I started looking for a possible place to take a postgraduate degree.</p>
<p>I was offered a place to study for a PhD in the Animal Behaviour group in the Zoology Department at the University of Manchester. As was normal in those days, I had been awarded a Local Education Authority grant to study for my first degree. However, I could not find funding for my PhD, so I put my studies on hold and went home to try and find a job, with the intention of funding myself for my first year, and seeing what happened after that.</p>
<h2 id="a-year-out">A Year Out</h2>
<p>Back home I found a job by the simple expedient of knocking on the door of a local plastics factory where I had worked before during vacations. I ended up as a labourer, doing shift work, earning about £0.50 per hour. Through this method I managed to accumulate enough to fund myself for my next year.</p>
<p>Being an inveterate hoarder I seem to have kept my employment contract, and happened to find it recently while tidying the house.</p>
<figure>
<img src="hpr1811_img001.png" alt="My contract with United Glass Closures and Plastics Ltd." /><figcaption>My contract with United Glass Closures and Plastics Ltd.</figcaption>
</figure>
<p>In case you are wondering, the Grinding Department was responsible for chopping up all the waste plastic, melting it down and converting it to pellets so it could be re-used. It was fairly heavy, noisy, boring work, but it achieved the desired goal.</p>
<h2 id="university-of-manchester">University of Manchester</h2>
<p>In the autumn of 1973 I was in the city of Manchester, at the <a href="http://en.wikipedia.org/wiki/University_of_Manchester" title="University of Manchester">University of Manchester</a>, one of the largest universities in the UK. I was there to obtain a PhD (Doctor of Philosophy) degree, doing research in Animal Behaviour.</p>
<p><img src="hpr1811_img002.jpg" alt="Photo from Wikipedia" /><br />Original <em>Owens College</em> buildings from the Museum end<br />By DrPhoenix (Own work) [<a href="http://creativecommons.org/licenses/by-sa/3.0">CC BY-SA 3.0</a> or <a href="http://www.gnu.org/copyleft/fdl.html">GFDL</a>], <a href="https://commons.wikimedia.org/wiki/File%3AThe_Manchester_Museum.jpg">via Wikimedia Commons</a></p>
<h3 id="doctor-of-philosophy-degree">Doctor of Philosophy Degree</h3>
<p>My research topic was to be looking at how animals decide what to eat, where to look for food, how much effort to expend finding and eating it and so on. At the time this area was variously referred to as <em>feeding strategies</em>, <em><a href="http://en.wikipedia.org/wiki/Optimal_foraging_theory" title="Optimal foraging theory">optimal foraging</a></em> and by other names. Later in the decade and into the early 1980's this subject became what is now known as <em><a href="https://en.wikipedia.org/wiki/Behavioral_ecology" title="Behavioural Ecology">Behavioural Ecology</a></em>, one of the areas where Mathematical methods (and ideas from Economics) were used to describe and predict animal behaviour.</p>
<p>A recent programme in the BBC Radio 4 series &quot;<em>In Our Time</em>&quot; did a fine job of covering this subject and can be heard on the <a href="http://www.bbc.co.uk/programmes/b04tljk0" title="Behavioural Ecology">BBC website</a> if you are interested (and if the site is not blocked from outside the UK).</p>
<h3 id="zoology-department">Zoology Department</h3>
<p>I found myself a member of the Zoology Department, which was then a separate entity within the University. It was later incorporated into the School of Biological Sciences, after my time, in 1986. The Zoology Department had been established in 1870 and the rooms and laboratories had an ancient feel about them which I really liked. In 1973 the department was housed in a beautiful old building adjoining the <a href="http://en.wikipedia.org/wiki/Manchester_Museum" title="Manchester Museum">Manchester Museum</a>. Postgraduate students in the department were given keys to the building and these also gave access to the Museum which was linked to the front part of the building. The Museum contained some fascinating exhibits, including a number of live animals.</p>
<p>My PhD Supervisor had two other students who were starting at the same time that I was, both doing research in Animal Behaviour. Two of us were using the <a href="https://en.wikipedia.org/wiki/Barbary_dove" title="Barbary dove">Barbary Dove</a> (<em>Streptopelia risoria</em>) as our experimental animal and the other one was researching on the <a href="https://en.wikipedia.org/wiki/Common_marmoset" title="Common Marmoset">Common Marmoset</a> (Callithrix jaccus). Our animals were in the Animal House in the basement of an old building near the Zoology Department.</p>
<p>It was usual in those days for postgraduate students in the Department to begin their research projects by carrying out a literature review and writing it up for assessment. In my case this consisted of reading through any of the relevant journals held by the University Library, or for more up to date material, reading a publication called <em><a href="https://en.wikipedia.org/wiki/Current_Contents" title="Current Contents">Current Contents</a></em> which summarised recent publications in peer-reviewed scientific journals. If a paper looked interesting in Current Contents then it could either be obtained by requesting a photocopy through the Inter-Library Loans service or by writing to the author (whose address would be published with details of the paper) to ask for a reprint. Needless to say, this was a slow and laborious process, though the arrival of a new paper was an exciting event.</p>
<p>The purpose of doing the literature review was to become highly conversant with the subject and as up to date as possible with published research. This required the keeping of a good collection of references to papers and reprints, and the way to to this in those days was by keeping a filing system. I started by keeping a box file full of hand-written <a href="https://en.wikipedia.org/wiki/Index_card" title="index card">index cards</a> in alphabetical order. There was very little at that time for doing this in any other way.</p>
<p>My supervisor introduced us to a slightly more advanced technology in the form of <a href="https://en.wikipedia.org/wiki/Edge-notched_card" title="edge-notched card">edge-notched cards</a> at this time. These have holes punched all around the edges, which can be notched with a punching tool (we used scissors) to differentiate them from other cards. The principle is that cards relevant to a topic will all be notched in a particular position. They can be extracted from the deck by passing a needle or rod through the relevant hole and lifting out all the cards which are not relevant to a search. Searches can even be combined by using more than one needle or rod.</p>
<p>This system was a type of mechanical database, though I have to admit that the sophistication of this method was largely lost on us and we used the simpler methods we had already started with.</p>
<h3 id="university-of-manchester-regional-computer-centre">University of Manchester Regional Computer Centre</h3>
<p>Across the road from the Zoology Department was the Kilburn Building, which was fairly recently built, having been opened in 1972. This contained the Computer Science Department (later the <a href="https://en.wikipedia.org/wiki/School_of_Computer_Science,_University_of_Manchester" title="School of Computer Science">School of Computer Science</a>) and, on the ground floor, the University of Manchester Regional Computer Centre (UMRCC).</p>
<p><img src="hpr1811_img003.jpg" alt="Kilburn Building" /><br />The Kilburn Building<br />By M2Ys4U (Own work) [<a href="http://creativecommons.org/licenses/by-sa/3.0">CC BY-SA 3.0</a>], <a href="https://commons.wikimedia.org/wiki/File%3AManchester_Kilburn_Building.jpg">via Wikimedia Commons</a></p>
<p>UMRCC was one of the regional computer centres funded by Government to provide high-powered computer facilities for universities in the local region. UMRCC initially provided services for a group of universities which, as well as Manchester itself, included Salford, Liverpool, Keele and Lancaster. The University of London Computer Centre (ULCC) was one of the other such centres.</p>
<p>I don't know if there was much in the way of inter-computer networking going on at that time. I would not have had to use it myself being at the heart of things in Manchester, but I think the access to the Regional Centre was via Remote Job Entry (RJE) facilities at the satellite universities. Sadly, I cannot seem to find much information on these facilities now. I will leave further discussion of this subject until a later episode when I speak about finding myself at one of the satellite universities.</p>
<p>At the time that I was there, UMRCC had a state of the art <a href="https://en.wikipedia.org/wiki/CDC_7600" title="CDC 7600">CDC 7600</a> computer from Control Data Corporation, front-ended by an <a href="https://en.wikipedia.org/wiki/ICT_1900_series" title="ICL 1900 series">ICL 1906A</a>. The CDC 7600, designed by <a href="https://en.wikipedia.org/wiki/Seymour_Cray" title="Seymour Cray">Seymour Cray</a>, who also designed the <a href="https://en.wikipedia.org/wiki/Cray-1" title="Cray-1">Cray-1</a> later in his career, was considered to be the fastest supercomputer in the world at that point. I think it ran the SCOPE operating system, but I have not found much to support this vague memory. The 1906A ran the <a href="http://en.wikipedia.org/wiki/GEORGE_%28operating_system%29" title="GEORGE operating system">GEORGE</a> operating system, either GEORGE 3, or since this model had paging hardware, GEORGE 4 - I don't remember, and I can't find any records any more.</p>
<p><img src="hpr1811_img004.jpg" alt="CDC 7600" /><br />Picture: CDC 7600<br /><em>Attribution: &quot;CDC 7600.jc&quot; by Jitze Couperus - Flickr: Supercomputer - The Middle Ages.<br />Licensed under CC BY 2.0 via <a href="https://commons.wikimedia.org/wiki/File:CDC_7600.jc.jpg#/media/File:CDC_7600.jc.jpg">Wikimedia Commons</a></em></p>
<p>As a student I was able to get an account on these systems and soon started learning about them and using them. The main work-horse was the CDC 7600 with the 1906A (quite a powerful computer in its own right at that time) being mainly used as a gateway to the CDC. As before, programs mostly had to be written on coding sheets and punched cards generated, but at UMRCC the users had access to <a href="https://en.wikipedia.org/wiki/Keypunch" title="Card punch">card punches</a> for small amounts of work, making corrections and so forth.</p>
<p><img src="hpr1811_img005.jpg" alt="IBM 029 Card Punch" /><br />Picture: IBM 029 Card Punch from <a href="https://en.wikipedia.org/wiki/File:IBM_card_punch_029.JPG">Wikipedia</a></p>
<p>There were also teletypes available to us, connected to the ICL 1906A, but I didn't use these at the start, and I will talk about them later.</p>
<p>One of the things that fascinated me about the Computer Centre was the viewing gallery. Access to the ground floor of the building was through a corridor with a glass wall looking into the computer room. In it was all of the hardware, mainframes, tape drives, card readers, line printers and so on. The computer operators wore white coats and could be seen tending to the machines.</p>
<p>A pair of rather poor quality videos<sup><a href="https://www.youtube.com/watch?v=swpE9IS8rso" title="UMRCC Video 1">1</a>,<a href="https://www.youtube.com/watch?v=G-ObR4Z6reY" title="UMRCC Video 2">2</a></sup> are available on YouTube, made at some time in the 1980s when there were two CDC 7600s and the ICL 1906A was replaced by an Amdahl. See the links below. There are several views into the machine room from the viewing gallery in these videos. It looked similarly full of hardware in the early 1970s.</p>
<p>The building itself was heated by waste heat from this equipment. I was in Manchester during the Miners' Strike and the <a href="https://en.wikipedia.org/wiki/Three-Day_Week" title="Three-Day Week">Three-Day Week</a> when a lot of electrical equipment was shut off and lights turned out to save power. UMRCC kept going during this time and was heated where other places were not.</p>
<h3 id="programming-languages">Programming Languages</h3>
<p>During this period, I was writing programs in Algol 60 as before, though the compiler available to me was different from the one I had been used to. I also learned <a href="https://en.wikipedia.org/wiki/Fortran" title="Fortran">Fortran</a> at this time.</p>
<h4 id="fortran">Fortran</h4>
<p>Fortran seemed a strange language compared to Algol 60. Statements had a fixed layout, starting in column 7 up to column 72 with columns 73-80 often being used for sequence numbers, to keep the card deck in order. Hardware card sorters were available to sort mis-ordered decks. If a statement had to be continued to a second card then each continuation card needed a character in column 6. Columns 1-5 contained a numeric label used by <code>GOTO</code> statements and others, and if column 1 contained a <code>C</code> that made the card a comment card.</p>
<p>See the <a href="https://en.wikibooks.org/wiki/Fortran/Fortran_examples#Simple_Fortran_IV_program" title="Fortan IV Example">example</a> of a simple Fortran IV program on the WikiBooks site for what the Fortran of this time looked like.</p>
<p>In this example you will see <code>FORMAT</code> statements that define input and output formats. In this program all of these statements are collected at the top, though most people placed them after the <code>WRITE</code> statements they were associated with. As an example consider the following <code>FORMAT</code> with its associated <code>WRITE</code>:</p>
<pre><code> 601 FORMAT(4H A= ,I5,5H B= ,I5,5H C= ,I5,8H AREA= ,F10.2,12HSQUARE UNITS)
WRITE(6,601) A,B,C,AREA</code></pre>
<p>Here the <code>H</code> (Hollerith) format defines a sequence of characters of a predefined width, <code>I</code> (Integer) format defines an integer number and <code>F</code> (Floating point) defines a real or floating point number. It was quite laborious having to count the width of <code>H</code> formats in particular.</p>
<p>Also, the first character defined in a <code>FORMAT</code> statement had special significance. These were the days of line-printers and these needed control characters to be sent to them to control the line spacing. The first character output on a line by a Fortran program was a line-printer carriage control character. A space in this position tells the printer to advance to a new line on the output. A zero advances two lines (double space), a 1 advances to the top of a new page and + character will not advance to a new line, allowing overprinting.</p>
<p>Failure to remember the use of the first column could result in problems. For example, writing a column of numbers where the first digit was a '1' could result in the printer throwing large numbers of pages with just a single (truncated) number on each. Printing signed numbers starting in column 1 could result in them all overprinting one another as a consequence of the '+'. Neither of these mistakes were very popular with the computer operators!</p>
<p>The <code>WRITE</code> statement defines the output unit (6) which will be associated with a device like a file, card punch or line printer, and the format statement which defines the layout of the data. There were various ways in which units were associated with devices. Sometimes the association was by default and other times the job control cards surrounding the program itself defined these associations.</p>
<p>One of the great things about Fortran was that were many libraries available for numeric work or to plot results. I had dabbled with using a graph <a href="https://en.wikipedia.org/wiki/Plotter" title="Plotter">plotter</a> at Aberystwyth and I learned more about how to do this at Manchester. I also made heavy use of the <a href="https://en.wikipedia.org/wiki/NAG_Numerical_Library" title="NAG Library"><em>Numerical Algorithms Group</em> (NAG) Library</a> which contained many tools for numerical work like random number generators, statistical methods and matrix manipulation functions.</p>
<h4 id="pascal">Pascal</h4>
<p>The language <a href="https://en.wikipedia.org/wiki/Pascal_%28programming_language%29" title="Pascal">Pascal</a> had also started to become popular around this time. It had been published in 1970 and a CDC version had been developed. Due to its similarity with Algol 60 I wondered if it might be a language I could use.</p>
<p>I acquired a copy of the <a href="http://www.standardpascal.com/The_Programming_Language_Pascal_1973.pdf" title="The Programming Language Pascal">book</a> written by Jensen and Wirth, a strange thing which looked as if it had been generated on a typewriter, with handwritten insertions where there were unusual characters. Sadly I don't seem to have this any more; I must have lent it out and never had it returned or possibly it's lurking in some forgotten corner of my house.</p>
<p>Pascal was remarkable at the time because it had data type definitions, records, sets and pointers, which Algol 60 did not. I learnt how to use it and wrote some programs in it but it seemed rather abstract and not very practical compared to Fortran.</p>
<p>In its early incarnations Pascal required declarations to be made in a particular order:</p>
<pre><code>labels
constants
types
variables
functions and procedures</code></pre>
<ul>
<li><code>labels</code> are numeric and are the target of <code>goto</code> statements. Pascal users are <em>strongly</em> dissuaded from using <code>goto</code>!</li>
<li><code>constants</code> are identifiers associated with values</li>
<li><code>types</code> allow the programmer to define new data types</li>
<li><code>variables</code> are identifiers which refer to storage ares of various <code>types</code></li>
<li><code>functions</code> are subroutines that return a value</li>
<li><code>procedures</code> are subroutines that do not return a value</li>
</ul>
<p>In Pascal you can define types based on existing types. For example:</p>
<pre><code>type
byte = 0..255;</code></pre>
<p>this type is a sub-range of the standard type <code>integer</code>. This example also demonstrates sub-ranges.</p>
<p>Pascal contains set types, which was an innovation at the time it was created. For example, to declare a set capable of holding any lowercase letters:</p>
<pre><code>var
letterset : set of &#39;a&#39;..&#39;z&#39;;</code></pre>
<p>this could then be used for testing, such as:</p>
<pre><code>if &#39;a&#39; in letterset then
...</code></pre>
<p>There were issues with the implementation of such features in the early days however. For example, it was not possible to define sets containing very large numbers of members since they were represented as bits in a byte, word or longword.</p>
<p>Pascal also allows the definition of complex data structures called <code>records</code>, such as:</p>
<pre><code>type
dates = record
day : 1..31;
month : 1..12;
year : 0..9999
end;
var
today : dates;</code></pre>
<p>There were also issues with these data types in the early days. It was possible in the language to define files containing these items, but many Pascal implementations could not handle them.</p>
<p>The <a href="https://en.wikipedia.org/wiki/Pascal_%28programming_language%29" title="Pascal">Wikipedia article</a> on Pascal contains a good overview of the language if you are interested in investigating further.</p>
<p>Pascal became popular for teaching and later became more effective as the language definition changed and more implementations became available.</p>
<p>I did not use Pascal much at this time, but later made heavy use of it, as I shall describe in later episodes.</p>
<h2 id="links">Links</h2>
<ul>
<li>University of Manchester:
<ul>
<li>Wikipedia entry: <a href="http://en.wikipedia.org/wiki/University_of_Manchester">http://en.wikipedia.org/wiki/University_of_Manchester</a></li>
<li>Prior to 2004: <a href="https://en.wikipedia.org/wiki/Victoria_University_of_Manchester">https://en.wikipedia.org/wiki/Victoria_University_of_Manchester</a></li>
<li>Manchester Museum: <a href="http://en.wikipedia.org/wiki/Manchester_Museum">http://en.wikipedia.org/wiki/Manchester_Museum</a></li>
<li>School of Computer Science: <a href="https://en.wikipedia.org/wiki/School_of_Computer_Science,_University_of_Manchester">https://en.wikipedia.org/wiki/School_of_Computer_Science,_University_of_Manchester</a></li>
</ul></li>
<li>Behavioural Ecology: <a href="https://en.wikipedia.org/wiki/Behavioral_ecology">https://en.wikipedia.org/wiki/Behavioral_ecology</a></li>
<li>Experimental animals:
<ul>
<li>Barbary dove: <a href="https://en.wikipedia.org/wiki/Barbary_dove">https://en.wikipedia.org/wiki/Barbary_dove</a></li>
<li>Common Marmoset: <a href="https://en.wikipedia.org/wiki/Common_marmoset">https://en.wikipedia.org/wiki/Common_marmoset</a></li>
</ul></li>
<li>Current Contents: <a href="https://en.wikipedia.org/wiki/Current_Contents">https://en.wikipedia.org/wiki/Current_Contents</a></li>
<li>Card systems:
<ul>
<li>Index cards: <a href="https://en.wikipedia.org/wiki/Index_card">https://en.wikipedia.org/wiki/Index_card</a></li>
<li>Edge-notched cards: <a href="https://en.wikipedia.org/wiki/Edge-notched_card">https://en.wikipedia.org/wiki/Edge-notched_card</a></li>
</ul></li>
<li>Control Data Corporation CDC 7600: <a href="https://en.wikipedia.org/wiki/CDC_7600">https://en.wikipedia.org/wiki/CDC_7600</a></li>
<li>Seymour Cray: <a href="https://en.wikipedia.org/wiki/Seymour_Cray">https://en.wikipedia.org/wiki/Seymour_Cray</a></li>
<li>Cray-1 supercomputer: <a href="https://en.wikipedia.org/wiki/Cray-1">https://en.wikipedia.org/wiki/Cray-1</a></li>
<li>ICT (ICL) 1900 series: <a href="https://en.wikipedia.org/wiki/ICT_1900_series">https://en.wikipedia.org/wiki/ICT_1900_series</a></li>
<li>ICL GEORGE operating system: <a href="http://en.wikipedia.org/wiki/GEORGE_%28operating_system%29">http://en.wikipedia.org/wiki/GEORGE_%28operating_system%29</a></li>
<li>Card Punch: <a href="https://en.wikipedia.org/wiki/Keypunch">https://en.wikipedia.org/wiki/Keypunch</a></li>
<li>UMRCC videos on YouTube:
<ul>
<li><a href="https://www.youtube.com/watch?v=swpE9IS8rso">https://www.youtube.com/watch?v=swpE9IS8rso</a></li>
<li><a href="https://www.youtube.com/watch?v=G-ObR4Z6reY">https://www.youtube.com/watch?v=G-ObR4Z6reY</a></li>
</ul></li>
<li>The three-day week: <a href="https://en.wikipedia.org/wiki/Three-Day_Week">https://en.wikipedia.org/wiki/Three-Day_Week</a></li>
<li>Fortran:
<ul>
<li>Wikipedia article: <a href="https://en.wikipedia.org/wiki/Fortran">https://en.wikipedia.org/wiki/Fortran</a></li>
<li>WikiBooks examples of Fortran: <a href="https://en.wikibooks.org/wiki/Fortran/Fortran_examples#Simple_Fortran_IV_program">https://en.wikibooks.org/wiki/Fortran/Fortran_examples#Simple_Fortran_IV_program</a></li>
</ul></li>
<li>Graph plotter: <a href="https://en.wikipedia.org/wiki/Plotter">https://en.wikipedia.org/wiki/Plotter</a></li>
<li>NAG Library: <a href="https://en.wikipedia.org/wiki/NAG_Numerical_Library">https://en.wikipedia.org/wiki/NAG_Numerical_Library</a></li>
<li>The Pascal language:
<ul>
<li>Wikipedia article: <a href="https://en.wikipedia.org/wiki/Pascal_%28programming_language%29">https://en.wikipedia.org/wiki/Pascal_%28programming_language%29</a></li>
<li>&quot;<em>The Programming Language Pascal</em>&quot; 1973: <a href="http://www.standardpascal.com/The_Programming_Language_Pascal_1973.pdf">http://www.standardpascal.com/The_Programming_Language_Pascal_1973.pdf</a></li>
</ul></li>
<li><em>Life and Times of a Geek</em> part 1: <a href="http://hackerpublicradio.org/eps.php?id=1664">http://hackerpublicradio.org/eps.php?id=1664</a></li>
</ul>
<!--
vim: syntax=markdown:ts=8:sw=4:ai:et:tw=78:fo=tcqn:fdm=marker
-->
</article>
</main>
</div>
</body>
</html>