Getting there

Hopped on a 'plane to London, hopped off, hopped on another to Chicago O'Hare. Sat for some hours reading, squinting at the film, fiddling with the dreadful earphones, eating a meal off a postage stamp sized tray and dozing fitfully. Arrived in Chicago to realise I'd forgotten my driving license: one hour cab ride later and sixty dollars poorer I checked in at the Best Western near Fermilab.

Fermilab

An impressive building poking up from a featureless plain. Inside, the offices are all open\plan, and no conversation is 'private'. I met Judy Nicholls (User Support Group Leader), Uday Pabrai, Dave Ritchie (VAX Systems Group Leader), Jeff Kroma, Randy Heckelsberg (who handed in his notice while I was there ... I hope that was just coincidence), Frank Nagy (a self\professed VAX Guru and Wizard) and Jeff Mack.

Hardware

The cluster of seven VAXen at Fermilab is the main user system. A recently installed Amdahl is used almost exclusively for batch work. There are hundreds of ACP devices, used as event processing farms and controlled by microVaxes. 68000 code is downloaded from the controller to each ACP, and then each ACP is fed with an event to reconstruct. Heavy use is made of Video\8 tapes for data; these are a very convenient media due to their small size and easy handling. Although there is no explicit standard for reading/writing this is not considered a problem as a de\facto standard is used.

A new computer building has just been constructed, and this already houses the Amdahl. The VAXen will be moved there in the near future, out of the main building whose computer rooms are extremely crowded, to say the least.

Getting Started

I asked for an account on the VAX, and this was created within a few hours, although I gained the impression that some strings had been pulled to get such a quick response. Having brought a reel tape with me I asked how I would, as a normal user, go about having it mounted and reading the files off it. I was advised not to take the normal user route, as this entailed a delay of a day or so! Instead I went and mounted the tape myself on a free drive.

Printing

As the VAX is the main system, the printing of files comes predominantly via requests initiated there. Sensibly, and as opposed to the situation at CERN, there are many printers directly accessible from the VAX via print queues. The printer naming convention used is simple and effective; the printer is identified by its location. Hence, for the printer in Wilson Hall, on the 8th. floor, at the South East end of the building, one uses the command

$ print/queue=WH8SE_print myfile.dat

Interlink

Fermilab are new users of Interlink, and were interested to learn how we utilise its facilities at CERN. In general, we tend to use Interlink in a fetching mode, in other words we sit on, say, the VAX and "pull" the file we want over from VM. This avoids us using either network validation information in the form of username/password pairs, or a proxy database. They seem to have the opposite approach. In fact, they have a large proxy database on the VAX to validate "NFT SEND" requests from VM. I am under the strong impression that this is undesirable from a performance point of view, and, indeed, there was evidence to that effect at Fermilab.

User\environment

Another striking difference was the VMS environment. At CERN we define in the login procedures all the symbols and logical names that we believe the user will need in his session. These include all the utilities such as XPRINT, RDRLIST, EAN, CERNLIB and so on. At Fermilab one is supposed to decide, for instance, that one is going to use Interlink to VM, and then define the utilities with a foreign command. This command is called SETUP (no relation to the CERN SETUP command for tapes). Hence I might type

$ SETUP VMTOOLS which would then allow me to use the access tools for VM. This struck me as rather user\unfriendly. What happens if I don't know the keyword "VMTOOLS"? "Use HELP" I hear you cry! I'm afraid that at Fermilab the HELP facility is a very poor relation to that at CERN. Users are recommended to do a directory listing of LIB:[LIB] to find which keywords/tools are available! Anything in there can be used with their SETUP command. On the positive side, for each tool they have a collection of files that together provide a complete kit for installation and understanding of the tool. There is a text file indicating how the tool should be created and installed, together with an update log. Surprisingly, very little use is made of the Command Definition Utility; most tools are DCL command procedures and/or FORTRAN programs.

Overall Impressions

Speaking with some users of the VAX at Fermilab I was left with the impression that a) it is even more grossly overloaded than ours, b) it is not too user\friendly, as VMS environments go. However, Fermilab is about as analogous to CERN as you are going to get, and we can certainly learn from them and them from us. To this end we have already created a VAX Notes conference called CERN_TOOLS to which members of both institutes regularly contribute, and we intend creating another for more specific system management issues which Dave Ritchie, his cohorts, Jamie Shiers, myself and anyone else interested should look at and contribute to.

Chicken Breast Stuffed with Prawns

This was the only notable meal I had while at Fermilab ... eaten in a little town called Geneva down the road. The wine was a fresh and fairly cheeky Chablis.

DECUS

The DECUS Symposium was held at the Anaheim Convention Centre in Los Angeles. Approximately 10,000 people attended, many of them, I'm sure, to get a company\paid ticket to Disneyland for the tuesday evening (see below). Food was served on a large\scale. In fact it was alarming to calculate the size of the saucepan required to hold 10,000 chicken pieces.

Registration

For some reason my name had been entered as Bunn Julian (how anyone could believe someone with a first name of Bunn I can't imagine, particularly as all the coffee machines in the U.S. are BUNN\o\matics). This caused a slight rush of adrenalin when my name could not be found, and I faced the prospect of either coughing up the conference fees on the spot, or an early shower and trip back to Geneva. In the end the problem was resolved, and I sported a new name badge to prove it. Security was quite tight; anyone not wearing an official name badge would have found it quite difficult to get into any of the seminars.

Seminars

The seminars were held in both the Convention Centre and the Marriott Hotel over the road. I summarise below those that I went to.

VMS Update

A presentation of current VMS and futures. Of note was the SYSMAN utility that for example allows a mount of a disk on all nodes in a cluster, but without logging on to each node separately. There were problems with two RTL routines; those for calculating double\precision cosine and sine. These gave incorrect results in some cases. They are called by high\level languages. In other words SIN and COS of double precision arguments in FORTRAN should be treated with suspicion. Some disks are now too small for VMS: an example is the RD52.

In the future:

  • Tape library management (applause from audience)
  • Automatic volume recognition
  • Resource management
  • Disk data caching
  • Backup performance (applause)
  • X\windows (DEC\windows)
  • OSI support
  • OSF support

VMS Performance

Update Of a technical nature, this talk detailed changes to the pagefile system, new queue structure (including the new SHOW ENTRY command) which is 15 times faster to interrogate than before, new MONITOR command for RMS (using SET FILE/STATISTICS), removal of the NULL process (meaningless for multiple CPU machines). Overall, there has been a loss of around 5% in VMS performance, but a few facilities are much faster.

VAX Jobs from FORTRAN

This was a user\presentation on how to use the $SNDJBC system service to submit jobs from a FORTRAN program to a queue. There was nothing mentioned that was clever or unavailable in the documentation.

FORTRAN Open Working Group Meeting

A meeting of around forty people (twenty DEC and tewnty non\DEC) to discuss problems with VAX and PDP FORTRAN. This was very informal, with votes being asked for on each point. Some points made:

  • Record length in OPEN statement is specified in long\words for UNFORMATTED, in bytes for FORMATTED. Not liked, but is it standard F77?
  • Possible now to do Record length = SIZEOF(.....) where ..... is for instance a structure of non\obvious length.
  • A request was made for argument type checking between modules. In other words, exactly what TREE does. But a compiler switch was wanted.
  • "If you want a safe language, don't use FORTRAN!"
  • There should be more examples in the documentation of task\to\task and the lock\manager.
  • A user wanted a new output formatter. For example, if you want to output 12345 as "123.45" (maybe you work in centimes, but want the result printed as francs, but without doing a conversion). There was some derision about this request.

Understanding Ethernet

This seminar was being given by a huge man with an immensely powerful voice, who insisted on overloading the PA system. It was so well attended that there was standing room only; we were glad to be thrown out due to fire regulations.

High\Performance NFS for VAX/VMS

This was a talk given by Kashtin, who previously worked for Sun. He had implemented NFS on a VAX/VMS system. In some detail:

  • A set of procedures that implemted the "NFS" filesystem
  • The client calls these procedures using RPCs (Remote Procedure Calls)
  • Files are referred to by an FH (File Handle), up to 32 bytes long, and interpreted only by the Server. The FHs survive system re\boots. The selection of a good representation for the FHs is the key to a good NFS implementation. For VMS the file identifier and device are used with hashing.
  • NFS procedures such as getattr, setattr, lookup, read, write, create, rename, link, remove, readdir are implemented. The two most heavily used are getattr and read.
  • The client issues an RPC to the Server who sends a reply to the Client. The Server uses a set of standards on top of XDR (Xternal Data Representation) to encode/decode byte streams and so on.
  • MultiNet NFS uses the MultiNet network kernel for transport (UDP/IP). It is like a device driver. An idle server hibernates until woken by the kernel, then the XDR stream module does the necessary.
  • To have concurrency a list of contexts is kept, and for new file requests the next free context in the list is chosen.
  • File system operations look in a cache for data using VMS semantics, which is single level, but acts like a cache with three levels: physical memory, virtual memory, and VMS file system.
  • Caching the size of a VMS file can be expensive; if the file is not a STREAM record format file, then the whole file may need to be read to calculate the size.
  • An LRU (Least Recently Used) algorithm is used, and these items are put at the end of the list.
  • Cache consistency is important. To this end, since in a cluster environment the XQP takes locks on files that may be written, blocking ASTs are used on all accessed files. This way, any access is signalled to the caching software.

The system is very fast; SUN\3 fileserver performance on a microVAX II! The performance is limited by the network interface. It can handle 20000 getattr's per second. The controllers are limited to 200 RPC's per second with DEQUNA. In the future a Client will be written for VMS, but this is hard. This NFS implementation is potentially faster than LAVC type interconnection, and raises the possibility of booting a VAXstation diskless, and running NFS as the file system!

A Problem Tracking System

A user presentation of a problem tracking system using text libraries in VMS. Used by the US Department of Defence. Not really very interesting except in one area; reminders are sent by electronic mail to people to whom problems have been assigned and no solution received. The whole system is paper\initiated, rather than electronic mail initiated.

FORTRAN Futures

The new version of VMS Fortran contains DIRECTIVES to the compiler. This is to take advantage of the possibilities with multi\processing, where one master and N slave sub\processes share data using global sections. There is thus a new Fortran qualifier /PARALLEL. New intrinsic functions such as

N = NWORKERS() (giving the number of available processors) are available. The Debugger has been enhanced accordingly.

Apart from the SMP features, various others have been added:

  • Descending ISAM keys support
  • Array bounds checking
  • SIZEOF intrinsic function. E.g. SIZEOF(10) will give 2, since the number 10 is stored in a 2 byte record.

Introduction to Bridges and Standard LANs

This talk described Ethernet LANs, the use of repeaters, the limitations of LANs, the use of bridges, and so on. Bridge features such as storing and forwarding of packets, dynamic address learning, filtering were covered in some detail.

For managing an extended LAN it was pointed out how bridges were the key to success. The bridge software (such as RBMS) allows the examination of statistics and current configuration. One may also change the state of the bridge, set the spanning tree parameters, and alter information in the non\volatile RAM. Periodically polling bridges is a good idea; in case of abnormal conditions the LAN manager can be automatically sent electronic mail. If the network response is poor it is generally a good idea to add more bridges, so increasing the isolation between LAN segments. WAN to LAN connections (using a microwave link called the Metrowave bridge) were briefly touched on.

VAX FORTRAN \ Directed Decomposition Made Easy

Or apparently difficult, depending on your point of view. Why parallel? Why not? The VAX 6200, 8300 and 8800 series machines provide you with the option. VAX Fortran V5 is the tool. You may expect shorter elapsed times for execution of your job, if it is compute intensive, and you parallelise it effectively. The key to making the code work faster is to fiddle about with the DO\loops. This is putting it baldly.

  • Identify compute intensive loops
  • Identify those that can run in parallel
  • Determine how the loop data is shared (tricky)
  • Resolve the data dependencies in the loops (even trickier)

By data dependency is meant "if there are multiple accesses to one memory location, and if at least one of those accesses is a store". In other words, if one processor is writing a value in A(25), and the other processor is, at the same time, reading the value of A(25), then should the second processor get the new value or the previous value?

Resolving loop\carried data dependencies can be done.

    Loop Alignment do i = 1,99 c(i) = a(i+1) a(i) = b(i) enddo is recoded as: a(1) = b(1) cpar$do_parallel do i = 2,99 c(i-1) = a(i) a(i) = b(i) enddo c(99) = a(100) Ugly? What about ... Code Replication do i = 2,100 a(i) = b(i) + 100. c(i) = a(i) + a(i-1) enddo Fiddled to: cpar$private temp a(2) = b(2) + 100. c(2) = a(2) + a(1) cpar$do_parallel do i = 3,100 a(i) = b(i) + 100. temp = b(i-1) + 100. c(i) = a(i) + temp enddo It gets worse .... consider Loop Distribution (or how to double your code size) do i = 1,100 a(i) = b(i) c(i) = c(i-1) + a(i) enddo Tweaked and massaged: cpar$do_parallel do i = 1,100 a(i) = b(i) enddo do i = 1,100 c(i) = c(i-1) + a(i) enddo which must be guaranteed to run slower non\parallel? Finally: Synchronization This is slower due to system overheads: logical*4 lock_var cpar$context_shared lock_var lock_var = .false. cpar$do_parallel do i = 1,1000 cpar$lockon lock_var sum = sum + a(i) cpar$lockoff lock_var enddo

In general one must maximise the workload in loops; multiple loops should be combined into one big loop, and the outermost loop should be run in parallel.

Each available processor has one cache that contains recently accessed memory addresses. It should be noted that, for example, for an array A(100,100), A(1,2) and A(1,1) are 4000 bytes apart. So to make efficient use of the cache, looping over values for A(i,j) with the index i running fastest is best; the values are adjacent in memory. For parallel considerations the caches of different processors are set far apart in memory, to minimise cache misses.

Standard Tools for VMS System Management

An easy talk to prepare; the speaker read out the names of about 50 VMS utilities. And then the audience applauded. It could only happen in America.

Using Non\Transparent DECnet from a Higher Level Language (ADA)

This talk was so complicated and incomprehensible I can only say that it addressed a rather esoteric method for sending information over DECnet. I have copies of the transparencies available for ADA masochists.

DECwindows User Interface Style Guide

This talk addressed guidelines developed by DEC for window applications under the new DECwindows product. Very similar to other windowing systems. One particularly useful feature is the ability to define a default action for a particular filetype. This action is invoked by a click on the mouse. For example, one might define the default action for a .FOR file to be compile with debug.

Developing Diagnostic Systems using VAX Decision Expert

This talk described the use of the VAX expert system tool Decision Expert. This is a development tool with windows, implemented in the C language. A fact database keeps track of available information, and a utility language facilitates the I/O to this database and its presentation. The system is backward goal\directed, using rules and/or a procedural decision tree. Priority factors may be assigned to facts if desired. The example used in the talk was analysing a problem with a hi\fi system.

An Introduction to Prolog

The speaker (a DEC employee) did not turn up for this session. The guy sitting next to me reckoned Digital lost about 10 points on the stock market as a result. Incredibly, the chairman happened both to be a Prolog expert and have his tutorial transparencies with him. So he gave the talk.

The first commercial Prolog compiler was marketed by Quintus, and this followed the Clocksin and Mellish standard. Prolog stands for Programming in Logic, and it is a theorum prover. There are constants, variables and compund terms in the language. If the speaker's daughter, called Lori, was given a Barbie doll on a saturday, she was generally nice and sweet. (why only on saturday I'm not sure). This is expressed as a rule in Prolog thus:

nice(lori);sweet(lori) if gift(barbie_doll),day(saturday). Notice the use of lower\case letters for constants and compound terms. Variables may be used thus: /* rule that defines a brother */ brother(Brother,Sister) if male(Brother), female(Sister), parents(Brother,Father,Mother), parents(Sister,Father,Mother). Bottom\up design is often better than top\down with Prolog programs since details are usually known first. Recursion is very important in the language, and hence its control. For this purpose the cut operator ! is used, which indicates that if that point in the cycle is reached to go no further. Rules may be dynamically asserted and retracted using special terms. Useful if you are uncertain of your facts!

Workstation Applications in Education

There were so few people in the audience, coupled with the fact that only one of an advertised set of panellists turned up, that this session was abandoned.

Managing your VMS Workstation

The talk addressed the following areas:

  • user environment
  • startup procedures
  • login procedures
  • security
  • daily operations

It was directed at people who want their VAXstation tuned, i.e. not the casual user. By analogy the speaker mentioned the rich man who bought a Porsche; the first thing he did was sack his chaufeur.

  1. Always have a medium available for weekly backup (medium = e.g. tape, not a person in contact with the spirit world, although that might be useful too).
  2. Startup objective is to power up and boot the system in the minimum time. Philosophy is that once the batch queues and windowing system are operational to submit the rest of the startup procedure in Batch.
  3. Batch queues are set to a base priority of 2. Accounting is enabled. The BANNER display is activated without the cube. The communications and printer ports are initialised.
  4. One window is created at priority 4 (for use when e.g. compiling), the other windows get priority 3 for e.g. text editing.
  5. PIXSCAN is set to between 2/3 and the value of MAXPROCESSCNT.
  6. The BANNER process gets a priority boost then every MAXPROCESSCNT/PIXSCAN seconds.
  7. Set font in the editor window to be large.
  8. Security: physical access to the workstation means there is no security. All confidential files are encrypted.
  9. Make daily incremental backup overnight. Defragment the disk(s) overnight. Place telephone line in modem mode after 18:30, and before 07:00. Outside, place in voice mode. Copy database files each saturday. Perform a full image backup every friday. Keep six weeks\worth of backups.

Introduction to PostScript Programming

PostScript is a Reverse Polish Notation interpreted language for the description of the appearance of pages. It is a de facto standard. There are two sorts of operator; device independent and device dependent. The apparent slowness of PostScript printers is often caused by bad code generators for the language. Good, efficient coding is thus important.

The coordinate system used is (0,0) at the bottom left of the page, with y increasing vertically and x increasing horizontally. The default units are 1/72 of an inch! But this can easily be changed. The principle used is to paint opaquely on the page by defining areas and then painting them. Areas include lines (finite thickness) and text. A path is a line with zero width, used to outline an area. Clipping windows may be defined using paths. To draw a box:

50 720 moveto 400 720 lineto 400 450 lineto 50 450 lineto 50 720 lineto stroke showpage If you've ever used a Hewlett\Packard calculator you will understand. The stroke command draws a line of unit thickness around the path. The numbers in this example are absolute. Using relative coords: 50 720 moveto 350 0 rlineto 0 -270 rlineto -350 0 rlineto closepath stroke showpage Any line width may be specified, e.g. 50 setwidth for a line 50 units wide. Curves may be drawn: /in {72 mul} def % define conversion of units to inches 1 in 4 in moveto % first point on curve 2 in 8 in 4 in 9 in 7 in 4 in curveto % last 3 points stroke showpage PostScript fonts are treated as graphics images and stored as outlines. They are copyrighted, but, amazingly, only by name. So you can copy the font Times\Roman, call it Times\Twenty and relax. An example of using text: /Times-Roman findfont 20 scalefont setfont 36 144 moveto (How many beans make five ?) show % () are string delimeters 36 122 moveto (One bean, two beans, a bean and a half and half a bean) show showpage One may change the coordinate system, rotate, scale and translate coordinates. There are also possibilities to show bitmaps on the page.

Guideline Approach to Security and Surveillance

Given by a woman from the Los Angeles Sherrif's Department. She described how she had noticed a hacker on her system and subsequently caught him and prosecuted him. All the poor guy was doing was running a program called NUISANCE.COM! Not a very interesting talk, and rather depressing how nasty people can get when they want to. As an aside, she was greatly aided in her investigations by having image accounting turned on. We do not enable image accounting on the Central Cluster, as the resulting accounting files become too large to handle.

Password Security

A user presentation detailing the precautions taken to ensure password security on a VAX running ULTRIX. They made changes to the Login and Password commands to increase their security.

    Why worry? Because it's the first line of defence to a system. Changes like this require user cooperation, which is not always forthcoming! Rules for good passwords

    • do not use personal information
    • do not use dictionary words
    • use mixed case and non\alphabetic
    • use something you can remember (stop you writing it down!)
    • change the password frequently
    • do not re\use passwords

    Enforcing the rules The password and login commands were changed (they had the source). Password command modification

    1. >5 characters
    2. no dictionary words
    3. supply suggestions
    4. preclude previous passwords

    The command passwd -r gives 5 suggestions with phonetic spelling. Aging passwords Passwords had to be changed every six months at least.

ANSI FORTRAN 8X Report

This talk was given by J.King, one of the US DECUS representatives on X3J3. (The other is R.Lauer.) He outlined what had happened with the draft standard up to the present time, mentioning that the official Digital position on the standard had been included in the May 1988 US DECUS Newsletter.

The public comment on the standard had not been "entirely negative". Overall, the negative reactions were

  • Too complex
  • Inefficient (hard to learn and hard for compiler writers(!))
  • A new language (not FORTRAN anymore)
  • The concept of language evolution was abhorred by many respondents. In particular they were upset at the possible eventual disappearance of COMMON and INCLUDE (sic).
  • There was general criticism of the "deprecated features" idea.
  • Failed to standardise existing practise, e.g. STRUCTUREs, DO WHILE, pointers or bit manipulation.

In response to the public comment eight (yes, 8) plans for action were generated by X3J3, and these were subsequently whittled down to three, which agreed on:

  • simplifying array specifiers
  • adding bit intrinsics and/or bit data types
  • adding pointers if the implementation could be efficient
  • removing some language evolution concepts
  • simplifying generalized precision
  • adding INCLUDE
  • adding DO WHILE

There was disagreement on:

  • storage association vs. name association (i.e. COMMON vs. MODULE)
  • implementation of pointers
  • obsolete features
  • procedure overloading
  • module specifics
  • multi\byte characters

Subsequently, WG5 of the ISO standards committee had met and sent a plan to X3J3, most similar to the original 8X proposal. This has the concept of deprecation removed, SET RANGE, ALIAS and IDENTIFY removed, internal procedures removed, pointers added, bit intrinsics added, significant blanks in source form added, INCLUDE added. The speaker felt that it would be a very painful process for X3J3 to deviate now from this plan.

An Approach to Overall User Services

The speaker was from the Battelle company, a scientific R. and D. establishment employing around 3500 people. She was in charge of user support. Machines and Systems in use: VAXes running VMS, IBM running VM, CDC running NOS/BE and NOS/VE, Cray running UNICOS. The CDCs were being phased out. Sounds like CERN, doesn't it? All the systems were networked together to allow file transfers. A very wide range of software was supported. The users were mainly scientific and engineering, but increasingly database/office/administrative users were being catered for. The typical scientific user wanted to know about running FORTRAN, mounting tapes and so on. Sounds even more like CERN. Most office systems were PC based. The local university also had access to the facilities, although these users were rather problematic in that there was no well\defined guidelines on who should support them.

The staff in the computer centre comprised: Systems Support, User Services, Telecommunications, Maintenance and Operations group members. There were separate grousp for Office Systems. The User Services group contained one manager, six consultants and one and a half librarians. The consultancy office was staffed for eight hours per day with one systems person and one general user consultancy person. Ninety five percent of problems were telephone\based, the remaining five percent came via electronic mail. A telephone answering machine allowed the 'phone to ring three times in the consultancy office. If there was no reply then it was routed to ring in all group members' offices for another three rings. If there was still no reply then the call was taken and recorded on tape on the answering machine.

Documentation came in the form of a monthly newsletter of about twenty pages with a distribution of around 1500. In addition periodic bulletins, of five to ten pages, describing programs, were circulated.

User\training took place in the user training centre, equipped mainly with PCs. The courses were for beginners to advanced. There were a variety of talented instructors. The courses were charged to the attendees department. On\line tutorials were also made available.

Members of the User Services group trained themselves by taking the internal courses, courses from vendors, attending conferences, running on\line tutorials, reading the (ever\dreaded) manuals and so on.

Interactions with the users were via user meetings, periodic demonstrations and via feedback sessions.

Planning of user services was achieved by responding to user feedback, looking at accounting data to see which programs were being used the most, and involving as many users as possible in the decision\making process.

Hiring new user services staff was made by taking the following features of candidates into consideration:

  • appropriate personality
  • good problem solver
  • enjoys learning new things
  • enjoys helping others
  • not easily frustrated
  • versatile

Creating a User\Hostile Environment

An amusing talk to finish the conference with. The speaker, a system manager, described various ways of configuring the system to make it as unpleasant as possible for the users. In other words "things you can and shouldn't do with VMS". Like the definition of a symbol called DIR, that executes a DCL procedure and produces a response just as if the user had typed DELETE *.*;*, but without actually doing anything. Subsequent calls to DIR would produce the message "No files found", even though they were there. He was enthusiastic about VMS Version 5: "In terms of a user hostile environment, I'm very excited about VMS V5.0", he said. In his experience, the worst and most deplorable users were those who had taken one, and only one, FORTRAN course as their computer training.

Scene: the system manager's office, with system manager slumped over terminal. 'Phone rings:

User: "Hello? It says here on the screen that I should press any key." S.M.: "Well, what's the problem?" User: "I can't find the 'any' key." Sound of Magnum 45, the most powerful hand gun in the world, blowing the System Managers head clean off.

DEXPO

DEXPO was a parallel event to DECUS where manufacturers displayed their wares. What struck me here was the large number of Video\8 cassette drives being marketed. Also, there were some quite excellent colour terminals on display.

Disneyland

On the tuesday evening Disneyland was available exclusively for the use of DECUS attendees. What a bonus! After several rides around Alice in Wonderland, Peter Pan's Journey, Pinocchio's Adventure we tried some more hair\raising rides. For example the Thunder Express and Space Mountain \ a roller\coaster ride in complete darkness. Not advisable after cheeseburger and chips.

Getting back

A ten dollar ride to LAX airport (duration one hour), a five hour wait looking at the departures board, a ten hour flight to Heathrow, and then a couple of hours later saw me back in Geneva.