home *** CD-ROM | disk | FTP | other *** search
/ BBS in a Box 2 / BBS in a box - Trilogy II.iso / Files / Hyper / U-Z / Windoids #9 / WINDOID #9 (Part 1) next >
Encoding:
Text File  |  1989-11-07  |  30.3 KB  |  716 lines  |  [TEXT/EDIT]

  1. September 11, 1989
  2.  
  3. WINDOID #9 (Part 1)
  4.  
  5. A Publication for the Informed HyperCard User and the Newsletter for the Apple
  6. HyperCard User Group
  7.  
  8. EDITOR:  DAVID LEFFLER
  9. -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
  10.  
  11. IN THIS ISSUE:
  12. Part 1
  13. • Editor's Corner
  14. • HyperCard User Tips
  15. • Corrupted Stacks
  16. • ChangeFont
  17. • Stack Evaluation Guidelines
  18. Part 2
  19. • Command Synthesis Exotica
  20. • HyperEducation
  21. • Message History
  22. • Internationalizable StackWare
  23. • HyperCard Novice Corner
  24.  
  25. -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
  26.  
  27. EDITOR'S CORNER
  28.  
  29. By David Leffler
  30.  
  31. Well, here we are again.  This issue of WINDOID is very much overdue, and I
  32. apologize for the delay.  We have gone through many changes in the AHUG
  33. organization, and I have been extremely busy with the next revisions of
  34. HyperCard.  However, I think you will find that the time this issue has taken
  35. to prepare has  been time well spent.  Additionally, we are taking steps to
  36. ensure that subsequent versions of WINDOID are delivered regularly.
  37. When I started AHUG and WINDOID I had no idea that it would grow so fast.  Our
  38. first AHUG meeting at Apple was in a little conference room on the second floor
  39. of DeAnza III  before HyperCard even shipped.  About ten people showed up and
  40. were really excited about showing off their first stacks.  Since then AHUG has
  41. grown at a phenomenal rate, and we have been caught unprepared to handle the
  42. group's meteoric growth.
  43. Due to this unexpected growth, we  have not been able to give the many AHUG
  44. members all the support and services they expected.
  45. Therefore, the AHUG Board of Directors met recently and decided that all AHUG
  46. memberships  will be extended through the next year for no additional charge.
  47. We are commited to providing you with an outstanding HyperCard User Group
  48. experience.
  49. To further ensure that we will not be caught unprepared again, we have a new
  50. AHUG President to introduce to you.
  51. I'd like to introduce Jack Hodgson.  Jack comes to us from the Boston Computer
  52. Society where he was one of the founding members of the Mac SIG.  As Director
  53. of New Member Enrollment and Volunteer Services, Jack enrolled over 5,000
  54. Macintosh users and provided services we never dreamed of.  He recently moved
  55. to the Cupertino area and comes to us with the necessary experience and zeal
  56. that typifies what we need in our AHUG President.
  57. Jack will take control of the WINDOID publication schedules.  We have
  58. determined that WINDOID issues will go out on a REGULAR basis.  We will have
  59. specified delivery dates and you will know when to trot out to your mailbox for
  60. the latest.  I will continue to be Editor, and together we will provide you
  61. with up-to-date HyperCard articles from the team.   Under Jack's leadership, we
  62. will provide you with information fast and professionally.
  63. Additionally, Jack is assisting in the creation of  a BBS for members to call
  64. and download any of the 200 megabytes of stacks we have available.  He is
  65. dedicated to providing services to you that will spark your interest and
  66. continue to fan it to flame.
  67. Starting next issue, Jack will begin a regular column in WINDOID and let you
  68. know how we are doing and where we are going as a user group.  I'll continue to
  69. let you know what the team is doing and where we are going with HyperCard.  You
  70. will still be first to know about any new HyperCard versions and get the latest
  71. on new feature functionality.  Together we will continue the journey, and, as
  72. always, AHUG will light the way to provide you with the best in HyperCard
  73. information from the HyperCard Team.
  74. In this issue, I bring you a wealth of information from the team and from our
  75. good HyperCard friends.  I hope that you will find that the wait for this
  76. issue, although lengthy, was worth it.
  77.  
  78. -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
  79.  
  80. HYPERCARD USER TIPS
  81.  
  82. by Phil Wyman
  83.  
  84. 1.  I was having trouble putting the contents of the "target" into a variable.
  85. I knew that the target was going to be a field, and I wanted to put the
  86. contents of that particular field into a variable. So I tried
  87.  
  88.     put the target into <variableName>
  89.  
  90. However, when I looked at the variable, it was not the contents of the target
  91. at all.  Rather the variable was the name of the target, something such as
  92. "background field ID 12".  Gary Bond suggested that I say instead
  93.  
  94.     put the value of the target into <variableName>
  95.  
  96. which works just fine, putting the contents of the field into the variable.
  97. To see how this works, create a field.  Put a line of text in a field.  Lock
  98. the field.  In the card script put:
  99.  
  100. on  mouseup
  101.     answer the value of the target
  102. end mouseup
  103.  
  104. When you click on the field,  you should get an answer box with your text in
  105. it.
  106.  
  107. 2. When I am developing Stacks, I often need to lock and unlock fields.  Since
  108. I have an extended keyboard with function keys, I made a function key which
  109. locks and unlocks fields.  This makes my job a lot easier. I modified Sioux
  110. Lacy’s "HitTest" function which I borrowed from her Groupies Stack. What the
  111. following functionKey handler and "MyHitTest" function do is to allow me to
  112. point to the field with my mouse, hit the number 7 Function Key, and lock or
  113. unlock the field.  If the field is locked, it becomes unlocked.  If the field
  114. is unlocked it becomes locked.
  115. If you don’t have functionkeys on your keyboard,  you could create a handler
  116. called "L" instead of the "on functionkey" handler.  You will have to remove
  117. the "if var = 7" loop. Then, with blindtyping on, you would just have to point
  118. at a field with the mouse and type the letter "L" and "return".  (Be sure
  119. you’re not editing text in a field at the time or else blindtyping won’t work.)
  120.  
  121. on functionkey var --or on L
  122.   if var = 7 then --Delete for standard KB
  123.     put myHitTest (the mouseloc) into what
  124.     if  what is not empty then
  125.        set the locktext of what to (not the locktext of what)
  126.     end if
  127.   end if --Delete for standard KB
  128. end functionkey--or end L
  129.  
  130.  
  131. -- When typing in the myHitTest function,
  132. -- be sure to leave a space after the
  133. -- quoted literals "card field id " and
  134. -- "bkgnd field id ".
  135.  
  136. function myHitTest where
  137.  repeat with i = the number of card fields down to 1
  138.     if where is within rect of card field i then if visible of card field i
  139.    then return "card field id " & the id of card field i
  140.     end if
  141.   end repeat
  142.   repeat with i = the number of bkgnd fields down to 1
  143.    if where is within rect of bkgnd field i then
  144.       if visible of bkgnd field i
  145.         then return " bkgnd field id "& the id of bkgnd field i
  146.       end if
  147.   end repeat
  148.   return empty
  149. end myHitTest
  150.  
  151. Along the same lines, you could make a functionKey which will give you the info
  152. dialog of the field or button that you are pointing at. Or how about a
  153. Hide/Show feature for buttons or fields that you are pointing at? HyperCard is
  154. alive with possibilities.
  155.  
  156. 3.  A tip from Paul Foraker of HyperPro... If you don’t like keeping track of
  157. your "pushes and pops" there may be a way out of it in certain situations. Try
  158. popping the card into a variable.
  159.  
  160.    push card
  161.    pop card into <variableName>
  162.  
  163. Now, whenever you want to go back to that card you can just say
  164.  
  165.     go <variableName>
  166.  
  167. Don’t make the mistake however of saying
  168.  
  169.    go card <variableName>
  170.  
  171. which will not work because the word "card " is included in  <variableName>
  172.  
  173. 4. Another Paul Foraker tip. With James Redfern’s help, Paul discovered this
  174. mistake in his HyperTalking that looks like a bug but isn’t:
  175.  
  176. --example A (to produce a list of the
  177. --backgrounds in a stack)
  178.  
  179. repeat with i = 1 to the number of backgrounds
  180.  
  181.   put the short name of background i & return & return after temp --wrong!
  182. end repeat
  183.  
  184. You’ll get the short names of the backgrounds, but you won’t get any returns.
  185. Here’s the correct way of writing it:
  186.  
  187. --example B
  188.  
  189. repeat with i = 1 to the number of backgrounds
  190.   put (the short name of background i) & return & return after temp --right!
  191. end repeat
  192.  
  193. Get it? HyperCard evaluates Example A as:
  194.  
  195.   put the short name of background (i & return) after temp
  196.  
  197. Since return characters do not evaluate as numbers, HyperCard strips them off,
  198. evaluates the "i" and returns the correct background name, without the returns.
  199.  
  200. I had a similar problem. I started an "if then" loop with:
  201.  
  202. If the cantmodify of stack "data stack" is false then
  203.  
  204. When I tried to run it, HyperCard asks "where is false?" with the Standard File
  205. dialog.  I hit "Cancel" and HyperCard says it can’t get that property.  I
  206. believe HyperCard was looking for a stack named "data stack" is false
  207.  
  208. which it couldn’t find. I had to put parentheses in to force HyperTalk to
  209. evaluate each side of the "is" condition:
  210.  
  211. If (the cantmodify of stack "data stack") is false then
  212.  
  213. That works fine.
  214.  
  215. -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
  216.  
  217. CORRUPTED STACKS
  218.  
  219. by Sioux Lacy Atkinson
  220.  
  221. Occasionally, users and developers have reported that HyperCard suddenly cannot
  222. open a particular stack or cannot access certain cards in the stack.  When this
  223. occurs, the user will see a message that says "Can’t read card or bkgnd id <an
  224. ID number> at location <another number>" or simply "Can’t open stack", and then
  225. HyperCard will quit.
  226.  
  227. It’s regrettable that this occurs, and certainly frustrating for the user, but
  228. we want to make all of you aware of certain measures that you can take to
  229. prevent stack corruption, and a project that is currently underway at Apple to
  230. recover broken stacks.
  231.  
  232. Preventative Measures:
  233.  
  234. From the number of broken stacks that we’ve seen, it appears that the primary
  235. cause of corruption is HyperCard being interrupted partway through its
  236. execution.  An interruption could be a system crash, an XCMD that crashes, a
  237. HyperCard Unexpected Error, the power being turned off, the Macintosh being
  238. rebooted from Macsbug or the machine being restarted with the programmer’s
  239. switch.  HyperCard writes data back to disk whenever it has an opportunity, but
  240. if its execution is interrupted, there is a very good chance that some data is
  241. still in RAM, and that the disk file contains some internal inconsistencies.
  242.  
  243. Of course, there is little a user can do about a system crash or an error
  244. caused by HyperCard itself.  However, a number of users have said to me that
  245. they got impatient when a script was taking an extraordinary amount of time to
  246. run, or the file server was extra slow, and they simply rebooted their
  247. machines.  Please don’t do this.  The chances of the stack being damaged are
  248. very high.  If a HyperTalk script is running, abort it with command-period, or
  249. simply be patient.
  250.  
  251. If you are running a stack that calls XCMDs or XFCNs and you experience a crash
  252. when one of those externals is called, tread cautiously.  Comment out the call
  253. to the external and see if the crash still occurs.  Inquire of your XCMD
  254. distributor whether other users have had difficulties with that code.  If
  255. you’re the author of the XCMD, back up your stack and continue testing to see
  256. if you can uncover the source of the bug.
  257.  
  258. A couple of other safety measures that you can take:
  259.  
  260. 1) When you’re working on a stack, periodically save off copies.  Then if
  261. something goes wrong, you’ve only lost a small amount of work rather than an
  262. entire stack.
  263.  
  264. 2) Compact your stacks frequently, especially if they constantly accumulate
  265. free space.  Compaction will almost always detect stack corruption, and save
  266. you from putting further effort into a stack that has been damaged.
  267.  
  268. 3) Be sure that you’re using the most current version of HyperCard (1.2.2).  It
  269. contains some fixes for bugs that were causing corruption.  If you don’t have
  270. 1.2.2, contact your Apple dealer.
  271.  
  272. Scavenger Project:
  273.  
  274. The reason I’m writing this article, and have such an interest in damaged
  275. stacks, is that I am working on a utility that the HyperCard team hopes to
  276. provide to our users and developers that can repair corrupted stacks.  For this
  277. project to be successful, I need to collect and examine as many broken stacks
  278. as possible, so I’m asking for your help.  If you have a stack that’s gone bad,
  279. please send it my way.
  280.  
  281. I can’t guarantee that it can be fixed, but many of them can be, and I will
  282. return a good copy to you if it is.  (Note that "fixing" sometimes involves
  283. removing a bad card or bad background, so sometimes the repaired stack is
  284. accessible, but lacking some of the original cards.)  Please describe, if you
  285. can, what was happening at the time the stack was damaged, including what
  286. version of HyperCard, and system software you were running, and what special
  287. INITs you had installed.
  288.  
  289. Stacks can be sent to:
  290.  
  291.    Sioux Lacy Atkinson
  292.    Apple Computer, Inc.
  293.    20525 Mariani Ave.
  294.    Mailstop 22-AE
  295.    Cupertino, CA  95014, or
  296.    AppleLinked to LACY1
  297.  
  298. Please don’t expect immediate turnaround.  I usually work on the stacks in the
  299. order that I receive them, and some take quite a lot of detailed
  300. cross-examination to completely determine the problem.  (Let me know if you
  301. don’t want the stack back if it’s fixed.  You can save me the time and postage
  302. cost.  Thanks.)  (And if you compress the stack, let me know what version of
  303. the compression utility you used.)
  304.  
  305. The data that we compile from these stacks will also help us in making
  306. HyperCard more bullet-proof in the future.  But remember, there isn’t much that
  307. HyperCard can do to recover if the Macintosh is turned off while it’s running.
  308. So unless you are very certain that your machine is hopelessly hung, or
  309. crashed, don’t reboot.  Thanks.
  310.  
  311. -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
  312.  
  313. CHANGEFONT
  314.  
  315. by Robertson Reed Smith
  316.  
  317. One thing I always wanted to see in HyperCard was an elegant solution to
  318. manipulating the text attributes of button titles. I tried several ways since
  319. the early days of Stack Starter B.201. Including building a working mock-up of
  320. a button text attributes window, and smart pop-up menus, but it wasn’t until I
  321. found a way to share the same text attributes window for graphic text, buttons,
  322. and fields that I was really satisfied. The result was ChangeFont, a script
  323. which when loaded into your Home Stack offers font options for any object under
  324. the cursor when the Tab and shift keys are depressed simultaneously.
  325.  
  326.  I’ve been using and refining it for awhile, so it works with not only buttons,
  327. but fields (locked and unlocked), cards, and  background layers as well as any
  328. version of HyperCard. Also I find it faster, and more convienent than using the
  329. conventional means because the method doesn’t change for different objects.
  330.  
  331. Upon reading Jim Palmer’s article "Four Button Properties in Search of a
  332. Script" in Windoid issue #7, I discovered Jim and I had come up with a similar
  333. solution to text attributes manipulation although the features and error
  334. checking differ substantially, so I’m offering ChangeFont here as the next
  335. logical refinement on his. Hope you enjoy it, and find it useful.
  336.  
  337. ----------   ChangeFont 1.2 by Robertson Smith   ----------
  338. ---------------   AppleLink: HyperZealot  ------------
  339. --ChangeFont may be distributed freely, but is not for resale. Thanks.--
  340. --
  341. on mouseWithin --Gets name of button or field cursor is over.
  342.   global TargetName
  343.   put word 1 to 2 of name of target && "id" && id of target into targetName
  344.   pass mouseWithin
  345. end mouseWithin
  346. --
  347. on mouseLeave --Forgets name of button or field cursor was just over.
  348.   global TargetName
  349.   put "" into targetName
  350.   pass mouseLeave
  351. end mouseLeave
  352. --
  353. --Chose tab and shift keys because other key combinations taken
  354. on tabKey
  355.   global TargetName, UserLevel
  356.   if the optionKey is up and the shiftKey is down and the commandKey is up then
  357.     put the UserLevel into saveLevel --Saves preset UserLevel.
  358.     set lockScreen to true
  359.     set the userLevel to 4
  360.     set cursor to 4 --So user will know somethings happening.
  361.     --Check to see if cursor is over a card or background.
  362.     if targetName = "" then
  363.       choose text tool
  364.       doMenu "Text Style..."
  365.       if saveLevel > 2 then set the UserLevel to saveLevel
  366.       else set the userLevel to 3
  367.       --Leaves user in graphic text mode
  368.       exit tabKey
  369.     --Check to see if if cursor is over a button
  370.     else if word 2 of targetName = "Button" then
  371.       --Check to see if button title is showing.
  372.       if showName of targetName is false then
  373.         --Gives user option to show button title.
  374.         answer "The button title is turned off on this button." ¬
  375.         with "Show Title" or "Cancel"
  376.         if it is "Show Title" then set showName of targetName to true
  377.         else
  378.           set the UserLevel to saveLevel
  379.           exit tabKey
  380.         end if
  381.       end if
  382.       --Check for presence of a button icon.
  383.       if icon of targetName <> 0 then
  384.         --Gives user the option to remove button icon.
  385.         answer "You can’t change fonts on a btn with an icon." ¬
  386.        with "Remove Icon" or "Cancel"
  387.         if it is "Remove Icon" then set icon of targetName to 0
  388.         else
  389.           set the UserLevel to saveLevel
  390.           exit tabKey
  391.         end if
  392.       end if
  393.     end if
  394.     --Stores preset graphic text attributes.
  395.     choose text tool
  396.     put the textAlign into defaultTextAlign
  397.     put the textFont into defaultTextFont
  398.     put the textSize into defaultTextSize
  399.     put the textHeight into defaultTextHeight
  400.     do ("put the textStyle into defaultTextStyle")
  401.     --Gets text attributes of object cursor is over.
  402.     choose Browse tool
  403.     set the textAlign to (the textAlign of targetName)
  404.     set the textFont to (the textFont of targetName)
  405.     set the textSize to (the textSize of targetName)
  406.     set the textHeight to (the textHeight of targetName)
  407.     do ("set the textStyle to" && (the textStyle of targetName))
  408.     choose text tool
  409.     --Displays text attributes of object cursor is over, and
  410.     --offers options to change text attributes of that object.
  411.     doMenu "Text Style..."
  412.     --Makes text attributes changes to object cursor is over.
  413.     choose browse tool
  414.     set the textAlign of targetName to the textAlign
  415.     set the textFont of targetName to the textFont
  416.     set the textSize of targetName to the textSize
  417.     set the textHeight of targetName to the textHeight
  418.     do ("set the textStyle of" && targetName && "to" && the textStyle)
  419.     --Resets preset graphic text attributes.
  420.     choose text tool
  421.     set the textAlign to defaultTextAlign
  422.     set the textFont to defaultTextFont
  423.     set the textSize to defaultTextSize
  424.     set the textHeight to defaultTextHeight
  425.     do ("set the textStyle to" && defaultTextStyle)
  426.     choose browse tool
  427.     set the UserLevel to saveLevel--Restores preset userlevel
  428.     set lockScreen to false
  429.   else pass tabKey
  430. end tabKey
  431. ----------  End of ChangeFont  ----------
  432.  
  433. -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
  434.  
  435. STACK EVALUATION GUIDELINES
  436.  
  437. by  Robin Shank
  438.  
  439. Apple Computer, Inc.
  440. 20525 Mariani Ave.  M/S 22-Q
  441. Cupertino, CA 95014
  442. 408-974-2370
  443. AppleLink: ROBIN
  444.  
  445.  
  446.  
  447. The goal in creating a HyperCard stack is to give your user the power to do
  448. something that would otherwise be beyond their reach.  But a stack is more than
  449. an implementation of an idea, a body of information, or a collection of
  450. functionalities.  If you want your stack to be used by your audience, it must
  451. be well designed, convenient to use and appealing to look at.  Poorly designed
  452. stacks frustrate the user and can ultimately end up in a never opened folder.
  453.  
  454. What makes a good quality stack?
  455.  
  456. The process of creating a stack can be a difficult and multifaceted task. There
  457. are many different things a stack designer should take into consideration as
  458. the stack evolves.  Evaluation of the stack should be an integral part of the
  459. development cycle.  First, review and document your objectives.  If you don’t
  460. know what it’s supposed to do, it is difficult to tell when it’s not working.
  461. Feedback from users is an important part of shaping the interface.  Finally,
  462. take the time to make sure everything works.
  463.  
  464. The following outline is an exploration of all the considerations involved in
  465. creating stacks.  It incorporates issues discussed in The Stack Design
  466. Guidelines and Human Interface Guidelines, as well as my own experiences with
  467. stack design and testing.  Comments and feedback are welcome.
  468.  
  469. A. Documentation
  470.  
  471. Document, outline, or at least think about the following considerations.
  472. Addressing these issues early will save you resources and headaches later in
  473. the development cycle.
  474.  
  475.    1. What is the general scope of the project, including...
  476.          Description of the objectives of the project
  477.          Integration with other products
  478.             such as: books, stacks, software, hardware etc.
  479.          Size limitations of the stack
  480.          Distribution method of the stack
  481.             Such as: floppy, CD, fileserver
  482.             Are you distributing anything else with the stack?
  483.          Outline the people and their expertise or responsibilities.
  484.             Who will be doing the writing, editing, graphic design,
  485.             illustration, scripting, programing, and, of course, testing.
  486.  
  487.    2. What is the content of the stack?
  488.          Is there an existing model for the stack?
  489.             such as: an existing book, document
  490.          Where are the sources of the information in the stack?
  491.          What does the content cover?
  492.          What does the content not  cover?
  493.  
  494.    3. What are your assumptions about the users of the stack(s)?
  495.          Familiarity with HyperCard
  496.          Familiarity with HyperTalk
  497.          Familiarity with the Macintosh
  498.          Familiarity with the Computers
  499.          Familiarity with the subject matter or context of the stack
  500.      International, cultural or social issues
  501.         Is there anything special about the users of the stack?
  502.  
  503.    4.  What kinds of environments is the stack expected to run in?
  504.          Do you need to restrict them to a version of HC?
  505.          Will the stack run in all userLevels?
  506.          Which CPU’s is this stack designed for?
  507.             Do you need more than 1 or 2 Mb Ram?
  508.             Do you require a harddisk?
  509.          Does the stack depend on any special hardware?
  510.             such as: input devices, printers, scanners, other peripherals.
  511.          Does the stack depend on any special software?
  512.             Such as: applications, system inits, Multi/Singlefinder
  513.          Does the stack integrate with or rely on other stacks?
  514.             such as: the phone stack
  515.          Are special resources attached or needed?
  516.             such as: fonts, icons, sounds, XCMD, XFCN, cursors, picts
  517.          Are there special user considerations?
  518.             such as: disability, age, cultural  or educational background
  519.          Are there International considerations?
  520.             Will the stack be running on international Systems?
  521.             Will the stack be internationalized?
  522.  
  523.    5. How is the stack organized and designed?
  524.          Does the stack use a metaphor?
  525.          Outline the different parts or sections.
  526.             What they do
  527.             What they look like
  528.             Navigation methods
  529.                - within section
  530.                - between sections
  531.                - feedback
  532.             User orientation
  533.          What graphic elements is the stack going to use?
  534.             such as: fonts, icons, pictures, animation
  535.             What are the sources of the art?
  536.          Will the stack need to be enhanced or maintained?
  537.             How, and by whom?
  538.  
  539. B. Evaluating the stack(s)
  540.  
  541.    Use the documentation outlined in the first section as the basis for knowing
  542. how    things should work, look and feel.
  543.  
  544.    1. Functionality and performance:
  545.          Insure functional integrity (ie: TEST IT!)
  546.              Take the time to make sure everything works.
  547.             No script errors
  548.             No "dead-end" scripts
  549.          Feedback, forgiveness, flexibility, and limit checking
  550.             Is there feedback for long operations?
  551.             Is the user allowed to exit and abort at any time?
  552.             Test the limits
  553.           Navigation
  554.             Can the user move through the stack effectively and easily?
  555.             From any card...
  556.                - is it clear where the user is in the stack?
  557.                - is it clear how the user got there?
  558.                - is it clear where to go next?
  559.                - is it clear how to go back?
  560.                - is it clear how to leave the stack?
  561.          What is the stack’s performance under...
  562.             - different versions of HyperCard
  563.             - different userLevels
  564.             - different system versions
  565.             - different CPU’s
  566.             - alternative environments
  567.          User Testing
  568.             Get feedback from real users
  569.  
  570.    2. Written Content
  571.          Style
  572.             Is the textual information well written?
  573.             Is the style appropriate for your projected user?
  574.             Does the content or writing style portray any cultural, or gender
  575.             biases?
  576.          Is there editorial integrity?
  577.             check for: spelling, grammatical errors
  578.             Trademark and copyright notices
  579.             Consistency
  580.  
  581.    3.  Visual Content and Interface Considerations
  582.  
  583.          Fields
  584.             Is there consistency in location of similar fields between cards,
  585.               sections?
  586.             Are the typefaces used appropriately and consistently?
  587.             Are the properties of the fields in appropriate states?
  588.                Such as: locked or unlocked, visible or hidden.
  589.  
  590.          Buttons
  591.             Is there consistency in location of similar buttons between cards,
  592.              sections?
  593.             Are the buttons arranged in logical groups or areas?
  594.             Do buttons give feedback where ever possible or appropriate?
  595.             Is the button implementation consistent within the stack?
  596.             Is the button implementation consistent with the Macintosh
  597.             interface?
  598.             Are the typefaces used appropriately and consistently?
  599.             Are icons used appropriately and consistently?
  600.             Are the icon symbols understandable?
  601.  
  602.          Pictures, images, illustrations
  603.             Do the pictures and illustrations promote the metaphor of the
  604.             stack?
  605.             Is there consistency in the placement of the images?
  606.             Are the pictures of good quality? Are they appealing and
  607.             understandable?
  608.             Are the images appropriate?
  609.                Are there areas where words, titles or captions would be
  610.                 clearer?
  611.                Do any of the images have cultural or gender biases?
  612.             Is there excess opacity on any of the cards?
  613.                Hold down Option-O while in a paint tool to see the mask.
  614.                Cleaning up excess opacity can shrink the stack.
  615.             Are there copyright considerations for the images?
  616.  
  617.          Visual effects
  618.             Do the visual effects relate appropriately to the navigation in the
  619.            stack?
  620.             Are the visual effects used consistency with the stated metaphor?
  621.             Are there any areas that might need more visual effects?
  622.             Are there any areas that might need less visual effects?
  623.  
  624.          Overall aesthetic appeal of the stack
  625.             Do the background and/or card pictures blend with their elements?
  626.             Does the stack consistently adhere to its stated metaphor?
  627.  
  628.          Does the stack follow the Stack Design Guidelines?
  629.  
  630.         Does the stack follow the Human Interface Guidelines?
  631.  
  632.    4. Scripts
  633.          Are the scripts well written and implemented?
  634.          Are the scripts well organized within the structure of the stack?
  635.          Does everything work?
  636.          Is there feedback and forgiveness for user errors and aborts?
  637.          Scripting style:
  638.             Does the scripting style adhere to any established conventions?
  639.             Are the scripts well documented or commented?
  640.             How long would it take another HyperTalker to read the scripts
  641.             and understand the stack’s implementation and structure?
  642.          Are there any special authoring tools built into the stack?
  643.         What do they do?
  644.         Are they commented?
  645.  
  646.    5. Sound
  647.          Are the sounds used appropriately and consistently in this stack?
  648.          Are the sounds used consistently with the stated metaphor?
  649.          Does the user have the ability to control the sound? (on/off, volume?)
  650.          What are the sources of the sounds?
  651.          Are there any copyright considerations?
  652.  
  653.    6. Misc.
  654.           Does or should the stack have:
  655.              -  An area that explains the purpose of the stack?
  656.              -  A Help section?  Does it need one?
  657.              - Credits for authorship, who to contact with praise or bugs?
  658.              - Colophon; information on how the stack was made, what’s special
  659.                 about it?
  660.              - Trademark and copyright notices in all the right places?
  661.              - Listings of relevant references for your context?
  662.              - Version and Date stamp?
  663.  
  664. C. User testing
  665.  
  666.           "Can users understand what to do and can they accomplish the task at
  667.         hand easily    and efficiently?  The best way to answer these questions
  668.         is to put them to the user."
  669.                                         – Human Interface Guidelines
  670.  
  671.    Guidelines:
  672.  
  673.              Define your typical users, find some to test with.
  674.              Design the stack to the least experienced user.
  675.              Types of users:
  676.                 Naive users
  677.                    the value of being naive
  678.                 Experienced users
  679.                    have HC experience, preconceptions and/or, have experience
  680.                     within your context
  681.              Techniques of User testing
  682.                 Strive to be objective and to avoid prompting.
  683.                 Tasks
  684.                    Freeform use, you figure it out
  685.                    Questions - How would you use this?
  686.                    Give the user specific tasks to accomplish
  687.             Getting the feedback
  688.                Observation
  689.                Videotaping
  690.                Audiotaping
  691.                Timbuktu, a remote screen viewing program from Farralon.
  692.  
  693.    D. References for this document
  694.  
  695.          HyperCard Stack Design Guidelines
  696.         Author: Rachael Rutherford, Apple Computer
  697.         Copyright 1988 by Addison Wesley
  698.  
  699.          Apple Human Interface Guidelines: The Apple Desktop Interface
  700.         Author: Human Interface Group, Apple Computer
  701.         Copyright 1988 by Addison Wesley
  702.  
  703.          Using HyperCard,  from Home to HyperTalk
  704.         Author: Tay Vaughan
  705.         Copyright 1988 by Que Corporation
  706.  
  707.          Promotional Product Test Group's HyperCard Stack Evaluation Guidelines
  708.         Author: Susan McLaughlin,  P, Q & S,  Apple Computer
  709.  
  710.          Writing Internationalizable StackWare (Appendix B)
  711.         Author: Susan Razura,  International Engineering, Apple Computer
  712.  
  713.  
  714. -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
  715.  
  716.