[comp.sys.mac.hypercard] Setting userLevel at openStack time & flame

KOFOID@cc.utah.edu (03/02/90)

Tom Johnson writes: 

>[...]
>
>Here's the scenario: [...] I decide to set the userLevel to 2 at openStack
>time. [etc...He wants to protect the stack from change by naive students.]

    ...and of course got a typically snotty answer from an Apple rep, who never
bothered to tell him how to do what he wants to do. So, Tom, here's how you do
it. Put the following in your stack scripts:

    on startUp   -- blocks upward migration of the startUp message
    end startUp

    on openStack
    getHomeInfo  -- does startUp's useful work
    set the userLevel to 2  -- now the new value will survive
    -- put other openStack items here --
    end openStack

    This is also a useful way to set lots of things that are normally
overridden by the startUp message, such as the value of textArrows, etc.

>>>> FLAME ON

    I get supremely pissed when people chide others in public for not treating
HyperCard stacks like a holy relics, whose guts are to be accessible to all. I
enjoy the openness of the HyperCard community and like to share my code.
However, if people wish to treat HC as a development system, hiding the inner
workings of a stack, I see no problem. As far as I'm concerned, it's absolutely
the same as writing a program and distributing the binary file, for whatever
reason. 

    When did you last see Apple post the source code for its ROMs, the Finder,
MacWrite, MacPaint, etc., etc.? Until they do so, I'd prefer that they or their
representatives answer users' questions with a minimum of sarcasm. Embarrassing
some poor soul because he or she isn't quite as clever as a professional
programmer isn't the point of this newsgroup.

    Possibly, the employee doesn't really represent her company when she writes
(then, why identify the company?). Unfortunately, I've found this attitude all
too typical whenever one needs technical help from Apple and does not happen to
be a large, multinational, for-megaprofit corporation. Her approach is
irritating, regardless, for the reasons stated.

>>>> FLAME OFF

    Cheers,

        Eric.

  Snail: Eric Kofoid; Dept. Biology, U. of Utah; SLC, UT 84112
   Fast: bi.kofoid%science@utahcca (BitNet)
 Faster: bi.kofoid@science.utah.edu (InterNet)
Fastest: kofoid@bioscience.utah.edu (InterNet -> QuickMail)

jdevoto@Apple.COM (Jeanne A. E. DeVoto) (03/04/90)

In article <48201@cc.utah.edu> KOFOID@cc.utah.edu writes:
>    ...and of course got a typically snotty answer from an Apple rep, who never
>bothered to tell him how to do what he wants to do.

First of all, I am not "an Apple rep". As far as I know, Apple maintains no
official representation here; and in any case I am not an employee of Apple
Computer.

Second, I take issue with "typically snotty". To my knowledge, quite a few
Apple employees do read and post to comp.sys.mac.*, on their own time and
initiative: they provide a great deal of assistance for which I for one am
grateful. I have yet to see a message from an Apple employee on these
newsgroups that is less than professional and helpful.

Third, I not only told him what the problem was that was causing the userLevel
to reset itself, I suggested a second solution that would do what he wanted
while solving some other problems at the same time.

>>>>> FLAME ON
>    When did you last see Apple post the source code for its ROMs, the Finder,
>MacWrite, MacPaint, etc., etc.? Until they do so, I'd prefer that they or their
>representatives answer users' questions with a minimum of sarcasm. Embarrassing
>some poor soul because he or she isn't quite as clever as a professional
>programmer isn't the point of this newsgroup.
>
> Possibly, the employee doesn't really represent her company when she writes
>(then, why identify the company?). Unfortunately, I've found this attitude all
>too typical whenever one needs technical help from Apple and does not happen to
>be a large, multinational, for-megaprofit corporation. Her approach is
>irritating, regardless, for the reasons stated.

Look. I spend a huge amount of time here and elsewhere answering questions
of all sorts about HyperCard and HyperTalk. I do it primarily because I enjoy
it and learn from it; secondarily because by making myself available in this
way as a resource of knowledge about the subject, I may have some small
influence on its future direction. What that means is that along with the
help and the answers and the example scripts, I sometimes broadcast opinions
about things that matter to me. One of those things, as you may have noticed,
is the open sharing of code and ideas: I get on a soapbox pretty much every
time I'm asked how to guard code or copy-protect a program.

If you want the help, you gotta listen to the opinionated rants; sorry, but
it's the price of admission. If you find my opinions sufficiently "irritating" 
that you would prefer to skip both the help and the opinions, fine. The command
is /jdevoto/h:j.
-- 
====== jeanne a. e. devoto ========================================
 jdevoto@apple.com  |  You may not distribute this article under a
 jdevoto@well.UUCP  |  compilation copyright without my permission.
___________________________________________________________________
 Apple Computer and I are not authorized  |        CI$: 72411,165
 to speak for each other.                 |  AppleLink: SQA.TEST

tim@hoptoad.uucp (Tim Maroney) (03/05/90)

In article <48201@cc.utah.edu> KOFOID@cc.utah.edu writes:
>Tom Johnson writes: 
>
>>Here's the scenario: [...] I decide to set the userLevel to 2 at openStack
>>time. [etc...He wants to protect the stack from change by naive students.]
>
>    ...and of course got a typically snotty answer from an Apple rep, who never
>bothered to tell him how to do what he wants to do.

Give me a break.  Jeanne Devoto is about the farthest thing from a
"snotty Apple rep" imaginable.  (And believe me, I've dealt with snotty
ones -- even snively ones.)  She consistently comes forward with
strong, clear answers to people's questions here, using her own time,
and is generally both polite and cheerful.

Her message to Tom Johnson was legitimate; if someone asks "How do I
fill my ears with gunpowder", "I would advise you not to try" is a
perfectly good response.  She did not attack him personally in any
way for asking the question, merely set forth her problems with the
idea of locking stacks against users.  I wish the same could be said
for your message, which is full of gratuitous personal attack.

>>>>> FLAME ON

You clearly intended this for the beginning of your message; how'd it
slip to the middle?

>    I get supremely pissed when people chide others in public for not treating
>HyperCard stacks like a holy relics, whose guts are to be accessible to all. I
>enjoy the openness of the HyperCard community and like to share my code.
>However, if people wish to treat HC as a development system, hiding the inner
>workings of a stack, I see no problem. As far as I'm concerned, it's absolutely
>the same as writing a program and distributing the binary file, for whatever
>reason. 

The "holy relic" view is in the mind of the programmers who consider
their software too ineffable to allow the masses to even gaze upon its
face, lest they be blinded and struck deaf by its magnificence.  It is
certainly not in the minds of those who wish to see more software made
open to the public.

>    When did you last see Apple post the source code for its ROMs, the Finder,
>MacWrite, MacPaint, etc., etc.? Until they do so, I'd prefer that they or their
>representatives answer users' questions with a minimum of sarcasm. Embarrassing
>some poor soul because he or she isn't quite as clever as a professional
>programmer isn't the point of this newsgroup.

Now *you* are attacking Tom Johnson personally just as you have Ms.
Devoto.  I see no indication that Mr. Johnson is not as clever as a
professional programmer, and neither did Ms. Devoto.  We just happen
to disagree with his intent of locking users out of their own stacks.

One of the nicest things about HyperCard stacks, as opposed to binary
software, is that if there's some little thing in the program that
drives you nbuts, you can change it with a minimum of fuss.  I've done
this with the stack I use most often, the Technical Notes Stack from
Apple, and I expect my users to do so with the stacks I'm developing.
Even if behavior depends on an XCMD, source code for which is usually
not distributed, XCMDs are small and replaceable; you may not be able
to easily modify the default XCMD, but you can write your own and paste
it into the stack with ResEdit.  Taking this "softer software" out of
HyperCard is removing one of the system's main strengths.

>    Possibly, the employee doesn't really represent her company when she writes
>(then, why identify the company?). Unfortunately, I've found this attitude all
>too typical whenever one needs technical help from Apple and does not happen to
>be a large, multinational, for-megaprofit corporation. Her approach is
>irritating, regardless, for the reasons stated.
>
>>>>> FLAME OFF

What a load.  Devoto is probably the single most helpful person in this
newsgroup, so you blast her for a single message which explains why you
shouldn't do something rather than how to do it?  Grow up!
-- 
Tim Maroney, Mac Software Consultant, sun!hoptoad!tim, tim@toad.com

"The pride of the peacock is the glory of God.
 The lust of the goat is the bounty of God.
 The wrath of the lion is the wisdom of God.
 The nakedness of woman is the work of God."
    - Blake, "The Marriage of Heaven and Hell"

tomj@oakhill.UUCP (Tom Johnson) (03/06/90)

In article <48201@cc.utah.edu> KOFOID@cc.utah.edu writes:
>Tom Johnson writes: 
>>[...]
>>Here's the scenario: [...] I decide to set the userLevel to 2 at openStack
>>time. [etc...He wants to protect the stack from change by naive students.]
>
>    ...and of course got a typically snotty answer from an Apple rep, who never
>bothered to tell him how to do what he wants to do. So, Tom, here's how you do
>it. Put the following in your stack scripts:
>...

First, thanks for the solution.  It now seems clear as to WHY hypercard
was doing what it was doing.

>However, if people wish to treat HC as a development system, hiding the inner
>workings of a stack, I see no problem. As far as I'm concerned, it's absolutely
>the same as writing a program and distributing the binary file, for whatever
>reason. 
>...

Next, although I didn't specifically state this in my original posting, the
REASON I want to put some special password protection on the stack is that
the stack will be shared by MANY people, some of whom have some familiarity with
Hypercard, but ALL of whom are engineering types that love to tinker.  Thus,
to make sure that this business-oriented stack continiues to perform its
purpose, it is necessary to add additional protection against unwanted
changing of the scripts.  It may, therefore, be looked at as an application,
nothing more, nothing less.  In the interest of saving ntework bandwith, I
didn't feel it necessary to explain all of this up front.  Additionally,
the statement "pristine scripts" was meant to be taken with tongue firmly
implanted in cheek.  I am realtively thick-skinned, and flames don't usually
scorch me much, so I took the original reply with good nature.  It's nice to
know that the entire UseNet community, however, doesn't share the view that
just because company "A" doesn't like what your doing then it shouldn't be
done!  Sometimes there are good reasons for "tricky" programming (e.g.
QuickDr?w from a company to remain unnamed).

>...                                                         Embarrassing
>some poor soul because he or she isn't quite as clever as a professional
>programmer isn't the point of this newsgroup.
>
>    Cheers,
>        Eric.

It just so happens that I AM a professional programmer (C, Pascal, Fortran,
68xxx assembly, etc), but don't have much experience with Hypercard (which
I find has a definite flavor of COBOL...yuch!).  Rather than spend several
days wandering through my library of Hypercard reference books, I thought I
might get a quicker answer from the net.

Thanks for coming to the rescue, Eric, and once again, its is nice to know
that there are people out there willing to forego destructive criticism
for constructive criticism.

Tom Johnson  (tomj@oakhill.UUCP)

Standard Disclaimer applies.

taylorj@yvax.byu.edu (03/06/90)

In article <48201@cc.utah.edu>, Eric Kofoid flames Jeanne Devoto for voicing a
well-founded opinion, not answering the question (even though she did), and
then provides an example of the WRONG solution to the problem.

First off, Jeanne constantly provides very helpful answers and advice and is in
no way deserving of irresponsible flames.  I would understand it if Eric
presented his own conflicting opinions in a civilized manner, but derogatory
personal attacks are uncalled for.

Second, I get "supremely pissed" (to use Eric's words) when some know-it-all
traps the startUp message.  The startUp handler in my home stack does much more
than call getHomeInfo, and I don't appreciate it when it's bypassed by someone
who thinks simply calling getHomeInfo "does startUp's useful work".

So, please DO NOT PUT THE FOLLOWING IN YOUR STACK SCRIPT:
              ---
  on startUp
  end startUp

If you must set something on openStack that might be changed in the Home
stack's startUp handler, set a flag and test it later.  For example:

  on openStack
    global initialized
    put false into initialized
  end openStack

  on idle
    global initialized
    if not initialized then
      set the userLevel to 2
      set the textArrows to true
      -- etc. --
      put true into initialized
    end if
    pass idle
  end idle

If you don't like using an idle handler, you can check the flag when the next
card is opened, or whatever.


Jim Taylor
Microcomputer Support for Curriculum
Brigham Young University
taylorj@yvax.byu.edu

tomj@oakhill.UUCP (Tom Johnson) (03/07/90)

In article <1150taylorj@yvax.byu.edu> taylorj@yvax.byu.edu writes:
>In article <48201@cc.utah.edu>, Eric Kofoid flames Jeanne Devoto for voicing a
>well-founded opinion, not answering the question (even though she did), and
>then provides an example of the WRONG solution to the problem.
>
>First off, Jeanne constantly provides very helpful answers and advice and is in
>no way deserving of irresponsible flames.  I would understand it if Eric
>presented his own conflicting opinions in a civilized manner, but derogatory
>personal attacks are uncalled for.
>
>Second, I get "supremely pissed" (to use Eric's words) when some know-it-all
>traps the startUp message.  The startUp handler in my home stack does much more
>than call getHomeInfo, and I don't appreciate it when it's bypassed by someone
>who thinks simply calling getHomeInfo "does startUp's useful work".
>
>So, please DO NOT PUT THE FOLLOWING IN YOUR STACK SCRIPT:
    [Eric's recommendations deleted]

>If you must set something on openStack that might be changed in the Home
>stack's startUp handler, set a flag and test it later.  For example:
    [ Jim's recommendations deleted]
>
>Jim Taylor

After re-reading both Jeanne's and Eric's messages, I find I must apologize
for my posting of yesterday.  When I first read Jeanne's posting/recommen-
dations, **I** felt somewhat chastised/flamed, for attempting to do something
"non-kosher."  After receiving Eric's post, I at least UNDERSTOOD why hyper-
card seemed to be changing things behind my back (although I must admit that
- upon re-reading BOTH postings - the tone of Eric's posting was somewhat
derogatory towards Jeanne, and somewhat patronizing toward me).  I felt
after receiving Jeanne's post, that I still didn't know why Hypercard was
doing what it was doing, and after Erics, I felt like I did.  To summarize,
I would like to FORMALLY apologize to Jeanne for my post of yesterday,
and once again thank Eric for giving me the insights as to why I was
experiencing the problem in the first place.

Jim - you have given me the final insights I needed to make an intelligent
determination of how to solve the dilemma of my protection requirements.
Also, I have re-read many sections of my 4-book Hypercard library so that
I fully understand the mechanisms at issue here.

Thanks to all for your help...that includes Jeanne, Eric, and Jim, and
anyone else out there who was working on the solution, but didn't get
a chance to answer.

Tom Johnson  (tomj@oakhill.UUCP)

Standard Disclaimers apply.

biff@pyrite.uucp (Biff Devereaux) (03/08/90)

There is an example of how to get around this problem in apple's Q&A stack
version 3.2.1.  It also explains what happens and why.  It is available from
apple.com and sumex.

Biff Devereaux
biff@pyrite.som.cwru.edu