home *** CD-ROM | disk | FTP | other *** search
/ Crawly Crypt Collection 1 / crawlyvol1.bin / program / books / progem / user1.8 < prev    next >
Text File  |  1986-11-01  |  28KB  |  509 lines

  1.     Permission to reprint or excerpt is granted only if the
  2.     following line appears at the top of the article:
  3.  
  4.      ANTIC PUBLISHING INC., COPYRIGHT 1986.  REPRINTED BY PERMISSION.
  5.  
  6.  
  7.  
  8.     Professional GEM  by Tim Oren
  9.     Column #8 - User Interfaces, Homily #1
  10.  
  11.  
  12.     AND NOW FOR SOMETHING COMPLETELY DIFFERENT!
  13.  
  14.        In response to a number of requests, this installment of ST PRO GEM
  15.     will be devoted to examining a few of the principles of computer/human
  16.     interface  design,  or "religion" as some would have it.  I'm going to
  17.     start  with  basic  ergonomic  laws,  and try to draw some conclusions
  18.     which  are  fairly  specific to designing for the ST.  If this article
  19.     meets   with  general  approval,  further  "homilies"  may  appear  at
  20.     irregular intervals as part of the ST PRO GEM series.
  21.  
  22.        For  those who did NOT ask for this topic, it seems fair to explain
  23.     why  your diet of hard-core technical information has been interrupted
  24.     by  a sermon!  As a motivater, we might consider why some programs are
  25.     said  by  reviewers  to have a "hot" feel (and hence sell well!) while
  26.     others are "confusing" or "boring".
  27.  
  28.        Alan Kay has said that "user interface is theatre".  I think we may
  29.     be  able  to  take  it  further, and suggest that a successful program
  30.     works a bit of magic, persuading the user to suspend his disbelief and
  31.     enter  an  imaginary  world  behind  the  screen,  whether  it  is the
  32.     mathematical  world of a spreadsheet, or the land of Pacman pursued by
  33.     ghosts.
  34.  
  35.        A  reader  of  a  novel  or  science  fiction  story  also suspends
  36.     disbelief to participate in the work.  Bad grammar and clumsy plotting
  37.     by  the author are jarring, and break down the illusion.  Similarly, a
  38.     programmer who fails to pay attention to making his interface fast and
  39.     consistent  will  annoy  the user, and distract him from whatever care
  40.     has been lavished on the functional core of the program.
  41.  
  42.  
  43.     CREDIT WHERE IT'S DUE
  44.  
  45.        Before  launching  into  the discussion of user interface, I should
  46.     mention  that  the general treatment and many of the specific research
  47.     results  are drawn from Card, Newell, and Moran's landmark book on the
  48.     topic,  which  is  cited  at  the  end  of the article.  Any errors in
  49.     interpretation  and application to GEM and the ST are entirely my own,
  50.     however.
  51.  
  52.  
  53.     FINGERTIPS
  54.  
  55.        We'll  start  right  at  the user's fingers with the basic equation
  56.     governing positioning of the mouse, Fitt's Law, which is given as
  57.  
  58.           T = I * LOG2( D / S + .5)
  59.  
  60.     where  T  is the amount of time to move to a target, D is the distance
  61.     of  the  target  from  the  current position, and S is the size of the
  62.     target,  stated  in  equivalent  units.   LOG2  is the base 2 (binary)
  63.     logarithm  function,  and  I  is a proportionality constant, about 100
  64.     milliseconds  per  bit,  which corresponds to the human's "clock rate"
  65.     for making incremental movements.
  66.  
  67.        We can squeeze an amazing amount of information out of this formula
  68.     when  attempting  to speed up an interface.  Since motion time goes up
  69.     with  distance,  we  should  arrange the screen with the usual working
  70.     area  near  the  center,  so  the  mouse  will  have to move a smaller
  71.     distance  on  average  from  a  selected  object  to a menu or panel.
  72.     Likewise,  any  items which are usually used together should be placed
  73.     together.
  74.  
  75.        The  most  common operations will have the greater impact on speed,
  76.     so  they should be closest to the working area and perhaps larger than
  77.     other icons or menu entries.  If you want to have all other operations
  78.     take  about  the same time, then the targets farthest from the working
  79.     area  should  be  larger,  and  those  closer  may  be proportionately
  80.     smaller.
  81.  
  82.        Consider  also the implications for dialogs.  Small check boxes are
  83.     out.   Large  buttons  which  are easy to hit are in.  There should be
  84.     ample  space  between selectable items to allow for positioning error.
  85.     Dangerous options should be widely separated from common selections.
  86.  
  87.  
  88.     MUSCLES
  89.  
  90.        Anyone  who  has  used  the  ST  Desktop for any period of time has
  91.     probably  noticed  that  his  fingers  now know where to find the File
  92.     menu.   This  phenomenon  is sometimes called "muscle memory", and its
  93.     rate of onset is given by the Power Law of Practice:
  94.  
  95.         T(n) = T(1) * n ** (-a)
  96.  
  97.     where T(n) is the time on the nth trial, T(1) is the time on the first
  98.     trial,  and  a  is  approximately  0.4.   (I have appropriated ** from
  99.     Fortran as an exponentiation operator, since C lacks one.)
  100.  
  101.        This  first thing to note about the Power Law is that it only works
  102.     if a target stays in the same place!  This should be a potent argument
  103.     against  rearranging  icons,  menus,  or dialogs without some explicit
  104.     request  by  the  user.   The  time to hit a target which moves around
  105.     arbitrarily will always be T(1)!
  106.  
  107.        In  many  cases,  the  Power  Law  will  also work for sequences of
  108.     operations to even greater effect.  If you are a touch typist, you can
  109.     observe  this  effect  by  comparing  how  fast you can enter "the" in
  110.     comparison  to  three  random  letters.   We'll  come  back shortly to
  111.     consider what we can do to encourage this phenomenon.
  112.  
  113.  
  114.     EYES
  115.  
  116.        Just as fingers are the way the user sends data to the computer, so
  117.     the  eyes  are  his  channel  from  the  machine.   The  rate at which
  118.     information  may  be  passed  to  the user is determined by the "cycle
  119.     time"  of  his  visual processor.  Experimental results show that this
  120.     time ranges between 50 and 200 milliseconds.
  121.  
  122.        Events separated by 50 milliseconds or less are always perceived as
  123.     a  single  event.   Those  separated by more than 200 milliseconds are
  124.     always seen as separate.  We can use these facts in optimizing user of
  125.     the computer's power when driving the interface.
  126.  
  127.        Suppose  your application's interface contains an icon which should
  128.     be  inverted when the mouse passes over it.  We now know that flipping
  129.     it  within  one  twentieth  of  a second is necessary and sufficient.
  130.     Therefore,  if a "first cut" at the program achieves this performance,
  131.     there  is  no  need  for  further  optimization,  unless  you  want to
  132.     interleave  other operations.  If it falls short, it will be necessary
  133.     to do some assembly coding to achieve a smooth feel.
  134.  
  135.        On the other hand, two actions which you want to appear distinct or
  136.     convey  two  different  pieces  of information must be separated by an
  137.     absolute   minimum  of  a  fifth  of a second, even assuming that they
  138.     occur  in  an  identical  location  on  which  the user's attention is
  139.     already focused.
  140.  
  141.        We  are  able to influence the visual processing rate within the 50
  142.     to  200  millisecond  range  by changing the intensity of the stimulus
  143.     presented.   This  can be done with color, by flashing a target, or by
  144.     more  subtle  enhancements such as bold face type.  For instance, most
  145.     people   using  GEM  soon  become  accustomed  to  the  "paper  white"
  146.     background of most windows and dialogs.  A dialog which uses a reverse
  147.     color  scheme,  white  letters  on  black, is visually shocking in its
  148.     starkness, and will immediately draw the user's eyes.
  149.  
  150.        It should be quickly added that stimulus enhancement will only work
  151.     when  it  unambiguously  draws attention to the target.  Three or four
  152.     blinking  objects scattered around the screen are confusing, and worse
  153.     than no enhancement at all!
  154.  
  155.  
  156.     SHORT-TERM MEMORY
  157.  
  158.        Both  the information gathered by the eyes and movement commands on
  159.     their  way  to  the  hand  pass through short-term memory (also called
  160.     working  memory).   The  amount  of  information  which can be held in
  161.     short-term  memory  at  any  one time is limited.  You can demonstrate
  162.     this limit on yourself by attempting to type a sheet of random numbers
  163.     by  looking back and forth from the numbers to the screen.  If you are
  164.     like  most  people, you will be able to remember between five and nine
  165.     numbers  at a time.  So universal is this finding that it is sometimes
  166.     called "the magic number seven, plus or minus two".
  167.  
  168.        This  short-term  capacity  sets  a  limit on the number of choices
  169.     which the user can be expected to grasp at once.  It suggests that the
  170.     number  of  independent  choices  in  a  menu, for instance, should be
  171.     around  seven, and never exceed nine.  If this limit is violated, then
  172.     the  user  will have to take several glances, with pauses to think, in
  173.     order to make a choice.
  174.  
  175.  
  176.     CHUNKING
  177.  
  178.        The  effective  capacity of short-term memory can be increased when
  179.     several  related  items  are  mentally  grouped  as a "chunk".  Humans
  180.     automatically  adopt  this  strategy  to  save  themselves  time.  For
  181.     instance, random numbers had to be used instead of text in the example
  182.     above,  because people do not type their native language as individual
  183.     characters.  Instead, they combine the letters into words and remember
  184.     these  chunks  instead.  Put another way, the characters are no longer
  185.     considered as individual choices.
  186.  
  187.        A  well  designed interface should promote the use of chunking as a
  188.     strategy  by  the  user.   One  easy way is to gather together related
  189.     options  in a single place.  This is one reason that like commands are
  190.     grouped  into  a single menu which is hidden except for its title.  If
  191.     all  of  the  menu  options  were  "in  the  open",  the user would be
  192.     overwhelmed  with  dozens  of  alternatives at once.  Instead, a "Show
  193.     Info"  command, for instance, becomes two chunks: pick File menu, then
  194.     pick Show.
  195.  
  196.        Sometimes  the  interface can accomplish the chunking for the user.
  197.     Consider  the  difference between a slider bar in a GEM program, and a
  198.     three  digit  entry  field in a text mode application.  Obviously, the
  199.     GEM  user  has  fewer decisions to make in order to set the associated
  200.     variable.
  201.  
  202.  
  203.     THINK!
  204.  
  205.        While  we are puttering around trying to speed up the keyboard, the
  206.     mouse,  and  the  screen, the user is actually trying to get some work
  207.     done.   We  need to back off now, and look at the ways of thinking, or
  208.     cognitive processes, that go into accomplishing the job.
  209.  
  210.        The  user's  goal  may  be  to enter and edit a letter, to retrieve
  211.     information from a database, or simply draw a picture, but it probably
  212.     has  very  little  to do with programming.  In fact, the Problem Space
  213.     Principle  says  that  the task can be described as a set of states of
  214.     knowledge,  a set of operators and associated constraints for changing
  215.     the  states,  and  the  knowledge  to choose the appropriate operator,
  216.     which resides in the user's head.
  217.  
  218.        Those  with  a  background in systems theory can consider this as a
  219.     somewhat  abstract,  but  straightforward, statement in terms of state
  220.     variables  and  operators.   A  programmer might compare the knowledge
  221.     states  to  the  values  of variables, the operators to arithmetic and
  222.     logic  operations,  the  constraints  to  the rules of syntax, and the
  223.     user's knowledge to the algorithm embodied by a program.
  224.  
  225.  
  226.     ARE WE NOT MEN?
  227.  
  228.        A  rational  person will try to attain his goals (get the job done)
  229.     by  changing  the state of his problem space from its initial state to
  230.     the  goal  state.   The  initial state, for instance, might be a blank
  231.     word processor screen.  The desired final state is to have a completed
  232.     business letter on the screen.
  233.  
  234.        The  Rationality Principle says that the user's behavior in typing,
  235.     mousing, and so on, can be explained by considering the tasks required
  236.     to  achieve  the goal, the operators available to carry out the tasks,
  237.     and  the  limitations  on  the  user's  knowledge,  observations,  and
  238.     processing  capacity.  This sounds like the typical user of a computer
  239.     program  must  spend  a  good  deal  of  time  scratching his head and
  240.     wondering  what  to  do  next.   In  fact, one of Card and Moran's key
  241.     results is that this is NOT what takes place.
  242.  
  243.        What  happens,  in fact, is that the trained user strikes a sort of
  244.     "modus  vivendi" with his tool and adopts a set of repetitive, trained
  245.     behavior  patterns  as the best way to get the job done.  He may go so
  246.     far  as  to  ignore some functions of the program in order to set up a
  247.     reliable  pattern.   What we are looking for is a way of measuring and
  248.     predicting  the  "quality"  of  this  trained  behavior.   Since using
  249.     computers  is  a human endeavor, we should consider not only the speed
  250.     with  which  the  task  is  completed,  but the degree of annoyance or
  251.     pleasure associated with the process.
  252.  
  253.        Card and Moran constructed a series of behavioral models which they
  254.     called  GOMS  models,  for  Goals-Operators-Methods-Selection.   These
  255.     models  suggested  that  in  the  training process the user learned to
  256.     combine  the  basic operators in sequences (chunks!) which then became
  257.     methods  for reaching the goals.  Then these first level methods might
  258.     be  combined  again  into  second  level methods, and so forth, as the
  259.     learning progressed.
  260.  
  261.        The  GOMS models were tested in a lengthy series of trials at Xerox
  262.     PARC using a variety of word processing software.  (Among the subjects
  263.     of  these experiments were the inventors of the windowing methods used
  264.     in  GEM!)   The  results were again surprising: the level of detail in
  265.     the models was really unimportant!
  266.  
  267.        It  turned  out  to  be sufficient to merely count up the number of
  268.     keystrokes,  mouse  movements,  and thought intervals required by each
  269.     task.   After  summing  up  all  of  the tasks, any extra time for the
  270.     computer  to  respond,  or the user to move his hands from keyboard to
  271.     mouse,  or  eyes  from  screen  to  printed  page  is  added in.  This
  272.     simplified version is called the Keystroke-Level Model.
  273.  
  274.        As an example of the Keystroke Model, consider the task of changing
  275.     a  mistyped  letter on the screen of a GEM word processor.  This might
  276.     be  broken  down as follows: 1) find the letter on the screen; 2) move
  277.     hand to mouse; 3) point to letter; 4) click mouse button; 5) move hand
  278.     to keyboard; 6) strike "Delete" key; 7) strike key for new character.
  279.  
  280.        The  sufficiency  of  the  Keystroke  Model  is  great news for our
  281.     attempt  to  design faster interfaces.  It says we can concentrate our
  282.     efforts  on  minimizing  the  number of total actions to be taken, and
  283.     making  sure that each action is as fast as possible.  We have already
  284.     discussed  some  ways  to  speed up the mouse and keyboard actions, so
  285.     let's  now consider how to speed up the thought intervals, and cut the
  286.     number of actions.
  287.  
  288.        One  way to cut down "think time" is to make sure that the capacity
  289.     of short-term memory is not exceeded during the course of a task.  For
  290.     example,  the  fix-a-letter  task described above required the user to
  291.     remember  1)  his  place in the overall job of typing the document; 2)
  292.     the  task he is about to perform; 3) where the bad character appeared,
  293.     and  4)  what  the new character was.  When this total of items creeps
  294.     toward seven, the user often loses his place and commits errors.
  295.  
  296.        You  can appreciate the ubiquity of this problem by considering how
  297.     many  times  you  have made mistakes nesting parentheses, or had to go
  298.     back  to count them, because too many things happened while typing the
  299.     line to remember the nesting levels. The moral is that operations with
  300.     long   strings  of  operands  should  be  avoided  when  designing  an
  301.     interface.
  302.  
  303.        The single most important factor in making an interface comfortable
  304.     to  use is increasing its predictability, and decreasing the amount of
  305.     indecision  present at each step during a task.  There is (inevitably)
  306.     an  Uncertainty  Principle which relates the number of choices at each
  307.     step to the associated
  308.     time for thought:
  309.  
  310.          T = I * LOG2 ( N + 1)
  311.  
  312.     where  LOG2  is  the  binary  logarithm  function,  N is the number of
  313.     equally  probable  choices,  and  I is a constant of approximately 140
  314.     msec/bit.   When the alternates are not equally probable, the function
  315.     is more complex:
  316.  
  317.          T = I * SUM-FOR-i-FROM-1-TO-N (P(i) * LOG2( 1 / P(i) + 1) )
  318.  
  319.     where  the  P(i)  are  the probabilities of each of the choices (which
  320.     must  sum  to  one).   (SUM-FOR-i...  is the best I can do for a sigma
  321.     operator   on-line!)   Those  of  you  with  some  information  theory
  322.     background will recognize this formula as the entropy of the decision;
  323.     we'll come back to that later.
  324.  
  325.        So  what  can  we  learn from this hash?  It turns out, as we might
  326.     expect,  that  we can decrease the decision time by making some of the
  327.     user's  choices  more  probable  than  others.  We do that by means of
  328.     feedback cues from the interface.
  329.  
  330.        The important of reliable, continuous meaningful feedback cannot be
  331.     emphasized  enough.   It  helps the beginner learn the system, and its
  332.     predictability makes the program comfortable for the expert.  Programs
  333.     with  no  feedback, or unreliable cues, produce confusion, dissonance,
  334.     and frustration in the user.
  335.  
  336.        This  principle  is  so  important  that  I  going  to give several
  337.     examples  from  common  GEM  practice.   The  Desktop provides several
  338.     instances.   When  an  object  is selected and a menu drops down, only
  339.     those choices which are legal for the object are in black.  The others
  340.     are dimmed to grey, and are therefore removed from the decision.  When
  341.     a  pick  is  made from the menu, the bar entry remains black until the
  342.     operation is complete, reassuring the user that the correct choice was
  343.     made.  In both the Desktop and the RCS, items which are double-clicked
  344.     open  up  with  a  "zoom  box" from the object, again showing that the
  345.     right object was picked.
  346.  
  347.        Other  techniques are useful when operator icons are exposed on the
  348.     screen.   When  an  object  is  picked,  the legal operations might be
  349.     outlined,  or the bad choices might be dimmed.  If the screen flashing
  350.     produced  by  this is objectionable, the legal icons can be made mouse
  351.     sensitive, so they will "light up" when the cursor passes over - again
  352.     showing the user which choices are legal.
  353.  
  354.        The  desire  for  feedback  is so strong that it should be provided
  355.     even  while  the  computer is doing an operation on its own.  The hour
  356.     glass  mouse  form is a primitive example of this.  More sophisticated
  357.     are  "progress  indicators" such as animated thermometer bars, clocks,
  358.     or  text  displays  of  the processing steps.  The ST Desktop provides
  359.     examples in the Format and Disk Copy functions.  The purpose of all of
  360.     these  is  to  reassure  the  user  that  the operation is progressing
  361.     normally.    Their  lack  can  lead  to  amusing  spectacles  such  as
  362.     secretaries leaning over to hear if their disk drives are working!
  363.  
  364.        Another   commonly  overlooked  feature  is  error  prevention  and
  365.     correction.   Card  and  Moran's  results  showed  that in order to go
  366.     faster,  people  will tolerate error rates of up to 30% in their work.
  367.     Any  program  which  does  not give a fast way to fix mistakes will be
  368.     frustrating indeed!
  369.  
  370.        The  best  way to cope with an error is to "make it didn't happen",
  371.     to quote a common child's phrase.  The same feedback methods discussed
  372.     above   are  also  effective  in  preventing  the  user  from  picking
  373.     inappropriate  combinations of objects and operations.  Replacement of
  374.     numeric  type-ins with sliders or other visual controls eliminates the
  375.     common "Range Error".  The use of radio buttons prevents the user from
  376.     picking   incompatible   options.    When  such  techniques  are  used
  377.     consistently,  the  beginner also gains confidence that he may explore
  378.     the program without blundering into errors.
  379.  
  380.        Once an error has occured, the best solution is to have an "inverse
  381.     operation"  immediately available.  For instance, the way to fix a bad
  382.     character  is  to  hit  the backspace key.  If a line is inadvertantly
  383.     deleted, there should be a way to restore it.
  384.  
  385.        Sometimes the mechanics of providing true inverses are impractical,
  386.     or  end  up  cluttering  the  interface themselves.  In these cases, a
  387.     global  "Undo" command should be provided to reverse the effect of the
  388.     last operation, no matter what it was.
  389.  
  390.  
  391.     OF MODES AND BANDWIDTH
  392.  
  393.        Now  I am going to depart from the Card, Newell and Moran thread of
  394.     discussion to consider how we can minimize the number of operations in
  395.     a  task  by  altering the modes of the interface.  Although "no modes"
  396.     has  been  a  watchword  of  Macintosh  developers,  the term may need
  397.     definition for Atarians.
  398.  
  399.        Simply  stated, a mode exists any time you cannot get to all of the
  400.     capabilities  of  the  program without taking some intermediate step.
  401.     Familiar  examples are old-style "menu-driven" programs, in which user
  402.     must make selections from a number of nested menus in order to perform
  403.     any  operation.   The options of any one menu are unavailable from the
  404.     others.
  405.  
  406.        Recall  that  the  user  is  trying  to  accomplish work in his own
  407.     problem  space,  by  altering  its states.  A mode in the program adds
  408.     additional states to the problem space, which he is forced to consider
  409.     in  order  to  get  the job done.  We might call an interface which is
  410.     completely  modeless  "transparent", because it adds no states between
  411.     the  user  and  his  work.   One of the best examples of a transparent
  412.     program  is  the  15-puzzle  in the Macintosh desk accessory set.  The
  413.     problem  space  of  rearranging  the  tiles  is  identical between the
  414.     program and a physical puzzle.
  415.  
  416.        Unfortunately, most programmers find themselves forced to put modes
  417.     of   some  sort  into  their  programs.   These  often  arise  due  to
  418.     technological limitations, such as memory space, screen "real estate",
  419.     or  performance  limitations  of peripherals.  The question is how the
  420.     modes can be made least offensive.
  421.  
  422.        I  will  make  the  general claim that the frustration which a mode
  423.     produces  is  directly  proportional  to  the  amount  of  the  user's
  424.     bandwidth  which it consumes.  In other words, we need to consider how
  425.     many  keystrokes,  mouse  clicks,  eye movements, and so on, are going
  426.     into  manipulating  the  true  problem  states, and how many are being
  427.     absorbed  by  the modes of the program.  If the interface is wasting a
  428.     large  amount  of  the user's effort, it will be perceived as slow and
  429.     annoying.
  430.  
  431.        Here we can consider again the hierarchy of goals and methods which
  432.     the user employs.  When the mode is low in the hierarchy, and close to
  433.     the  user's  "fingertips", it is encountered the most frequently.  For
  434.     instance,  consider  how  frustrating  it  would  be  to have to hit a
  435.     function key before typing in each character!
  436.  
  437.        The  "menu-driven"  style of programs mentioned above are almost as
  438.     bad,  since usually only one piece of information is collected at each
  439.     menu.   Such  a program becomes a labyrinth of states better suited to
  440.     an adventure game!
  441.  
  442.          The  least  offensive modes are found at the higher, goal related
  443.     levels  of  the  hierarchy.  The better they align with changes in the
  444.     state  of  the  original  problem,  the  more they are tolerated.  For
  445.     example,  a  word  processing program might have one screen layout for
  446.     program  editing,  another  for writing letters, and yet another while
  447.     printing  the documents.  A multi-function business package might have
  448.     one  set  of menus for the spreadsheet, another for a graphing module,
  449.     and a third for a database.
  450.  
  451.        In  some  cases  the  problem  solved by the program has convenient
  452.     "fracture lines" which can be used to define the modes.  An example in
  453.     my  own  past  is  the RCS, where the editing of each type of resource
  454.     tree  forms  its  own  mode,  with each of the modes nested within the
  455.     overall mode and problem of composing the entire resource tree.
  456.  
  457.  
  458.     TO DO IS TO BE!
  459.  
  460.        Any narrative description of user interface is bound to be lacking.
  461.     There is no way text can convey the vibrancy and tactile pleasure of a
  462.     good  interface,  or  the  sullen  boredom of a bad one.  Therefore, I
  463.     encourage  you  to  experiment.  Get out your favorite arcade game and
  464.     see  if  you can spot some of the elements I have described.  Dig into
  465.     your  slush pile for the most annoying program you have ever seen, run
  466.     it  and see if you can see mistakes.  How would you fix them?  Then...
  467.     go do it to your own program!
  468.  
  469.  
  470.     AMEN...
  471.  
  472.        This  concludes  the  sermon.  I'd like some Feedback as to whether
  473.     you  found  this  Boring Beyond Belief or Really Hot Stuff.  If enough
  474.     people  are  interested,  homily number two will appear a few episodes
  475.     from  now.    The  very next installment of ST PRO GEM will go back to
  476.     basics  to explore VDI drawing primitives.  In the meantime, you might
  477.     investigate  some  of  the  Good  Books on interface design referenced
  478.     below.
  479.  
  480.  
  481.     REFERENCES
  482.  
  483.          Stuart K. Card, Thomas P. Moran, and Allen Newell, THE PSYCHOLOGY
  484.     OF HUMAN-COMPUTER INTERACTION, Lawrence Erlbaum Associates, Hillsdale,
  485.     New  Jersey,  1983.   (Fundamental  and  indispensible.  The volume of
  486.     experimental  results  make  it  weighty.   The  Good Parts are at the
  487.     beginning and end.)
  488.  
  489.          "Macintosh User Interface Guidelines", in INSIDE MACINTOSH, Apple
  490.     Computer,  Inc.,  1984.   (Yes,  Atarians,  we have something to learn
  491.     here.   Though  not  everything  "translates", this is a fine piece of
  492.     principled design work.  Read and appreciate.)
  493.  
  494.          James  D.  Foley,  Victor  L. Wallace, and Peggy Chan, "The Human
  495.     Factors  of  Computer  Graphics Interaction Techniques", IEEE Computer
  496.     Graphics  (CG  &  A),  November  1984,  pp.  13-48.  (A good overview,
  497.     including  higher  level  topics  which  I  have  postponed to a later
  498.     article.  Excellent bibliography.)
  499.  
  500.          J.  D. Foley and A. Van Dam, FUNDAMENTALS OF INTERACTIVE COMPUTER
  501.     GRAPHICS,  Addison  Wesley, 1984, Chapters 5 and 6.  (If you can't get
  502.     the article above, read this.  If you are designing graphics apps, buy
  503.     the whole book!  Staggering bibliography.)
  504.  
  505.          Ben   Schneidermann,   "Direct   Manipulation:   A   Step  Beyond
  506.     Programming  Languages", IEEE Computer, August 1983, pp. 57-69.  (What
  507.     do  Pacman  and  Visicalc have in common?  Schneidermann's analysis is
  508.     vital to creating hot interfaces.)
  509.