home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Mac Game Programming Gurus / TricksOfTheMacGameProgrammingGurus.iso / Information / CSMP Digest / volume 3 / csmp-digest-v3-070 < prev    next >
Encoding:
Internet Message Format  |  1995-06-07  |  102.9 KB  |  [TEXT/R*ch]

  1. From: pottier@clipper.ens.fr (Francois Pottier)
  2. Subject: csmp-digest-v3-070
  3. Date: Mon, 21 Nov 1994 14:44:23 +0100 (MET)
  4.  
  5. C.S.M.P. Digest             Mon, 21 Nov 94       Volume 3 : Issue 70
  6.  
  7. Today's Topics:
  8.  
  9.         A few newbie (to Mac Programming) questions...
  10.         Checking for low memory condition
  11.         Fast Pixel Drawing
  12.         GX text problems
  13.         Macintosh Drag and Drop
  14.         Microseconds() documentation?
  15.         NOTE TO ALL SCREEN SAVER AUTHORS
  16.         Power Plant Documentation??
  17.         Shareware successes?
  18.  
  19.  
  20.  
  21. The Comp.Sys.Mac.Programmer Digest is moderated by Francois Pottier
  22. (pottier@clipper.ens.fr).
  23.  
  24. The digest is a collection of article threads from the internet newsgroup
  25. comp.sys.mac.programmer.  It is designed for people who read c.s.m.p. semi-
  26. regularly and want an archive of the discussions.  If you don't know what a
  27. newsgroup is, you probably don't have access to it.  Ask your systems
  28. administrator(s) for details.  If you don't have access to news, you may
  29. still be able to post messages to the group by using a mail server like
  30. anon.penet.fi (mail help@anon.penet.fi for more information).
  31.  
  32. Each issue of the digest contains one or more sets of articles (called
  33. threads), with each set corresponding to a 'discussion' of a particular
  34. subject.  The articles are not edited; all articles included in this digest
  35. are in their original posted form (as received by our news server at
  36. nef.ens.fr).  Article threads are not added to the digest until the last
  37. article added to the thread is at least two weeks old (this is to ensure that
  38. the thread is dead before adding it to the digest).  Article threads that
  39. consist of only one message are generally not included in the digest.
  40.  
  41. The digest is officially distributed by two means, by email and ftp.
  42.  
  43. If you want to receive the digest by mail, send email to listserv@ens.fr
  44. with no subject and one of the following commands as body:
  45.     help                        Sends you a summary of commands
  46.     subscribe csmp-digest Your Name    Adds you to the mailing list
  47.     signoff csmp-digest            Removes you from the list
  48. Once you have subscribed, you will automatically receive each new
  49. issue as it is created.
  50.  
  51. The official ftp info is //ftp.dartmouth.edu/pub/csmp-digest.
  52. Questions related to the ftp site should be directed to
  53. scott.silver@dartmouth.edu. Currently no previous volumes of the CSMP
  54. digest are available there.
  55.  
  56. Also, the digests are available to WAIS users.  To search back issues
  57. with WAIS, use comp.sys.mac.programmer.src. With Mosaic, use
  58. http://www.wais.com/wais-dbs/comp.sys.mac.programmer.html.
  59.  
  60.  
  61. -------------------------------------------------------
  62.  
  63. >From jobell@bnr.ca (Ritchie Brock)
  64. Subject: A few newbie (to Mac Programming) questions...
  65. Date: 7 Nov 1994 11:16:40 -0600
  66. Organization: Bell-Northern Research, Richardson, TX
  67.  
  68. I'm a newbie to Macintosh programming, but not to programming
  69. in general or Macintoshes.
  70.  
  71. Here are my questions:
  72.  
  73. I'm writing a simple program that displays a window with
  74. some graphics in it.  The window is invoked through a menu
  75. and a corresponding command key.  The window can be closed
  76. through the go away box and through the menu.  Here is
  77. my problem:
  78.  
  79. I am not sure on how about updating my window when something
  80. is moved over it.  Does my application have to redraw the
  81. entire contents of the window?  Furthermore, should window
  82. generation and window drawing be two different functions?  I
  83. think this should be because everytime my app received an
  84. activate event it would create a new window and create a new
  85. drawing (since the function doDrawing generated the window
  86. and the contents).  For some reason I think the app receives
  87. an activate event continuously because once I invoked the
  88. doDrawing routine for the first time it would loop continuously
  89. createing multiple windows.
  90.  
  91. anyway, thanx for the help.  e-mail me if possible.
  92.  
  93. Joe
  94.  
  95. jobell@bnr.ca
  96.  
  97. later
  98. -- 
  99. * Joseph A. Bell (NOT Ritchie Brock)               *
  100. * Northern Telecom / Bell-Northern Research           *
  101. * Email:  jbell@utdallas.edu                   *
  102.  
  103. +++++++++++++++++++++++++++
  104.  
  105. >From bb@lightside.com (Bob Bradley)
  106. Date: Mon, 07 Nov 1994 17:30:18 -0800
  107. Organization: SS Software Inc.
  108.  
  109. In article <39lndo$f0u@crchh932.bnr.ca>, jobell@bnr.ca (Ritchie Brock) wrote:
  110.  
  111. > I'm a newbie to Macintosh programming, but not to programming
  112. > in general or Macintoshes.
  113. > Here are my questions:
  114. > I'm writing a simple program that displays a window with
  115. > some graphics in it.  The window is invoked through a menu
  116. > and a corresponding command key.  The window can be closed
  117. > through the go away box and through the menu.  Here is
  118. > my problem:
  119. > I am not sure on how about updating my window when something
  120. > is moved over it.  Does my application have to redraw the
  121. > entire contents of the window?  Furthermore, should window
  122. > generation and window drawing be two different functions?  I
  123. > think this should be because everytime my app received an
  124. > activate event it would create a new window and create a new
  125. > drawing (since the function doDrawing generated the window
  126. > and the contents).  For some reason I think the app receives
  127. > an activate event continuously because once I invoked the
  128. > doDrawing routine for the first time it would loop continuously
  129. > createing multiple windows.
  130.  
  131. Do all of your drawing in in your updateEvt handler. This way you only
  132. have 1 routine that handles all drawing, whether it's the first time or
  133. when your window is uncovered. As far as drawing the entire window when
  134. you get an updateEvt, just draw the portion of the window that was
  135. previously hiden. After you call BeginUpdate, you can use the visRgn of
  136. the window to know what part to draw (BeginUpdate changes the visRgn of
  137. the window to cover only the part of the window that needs updating). It
  138. mainly depends on how complicated what you are drawing is. If you have
  139. complex objects that take a long time to re-calculate and draw, you may
  140. want to calculate, based on the visRgn, which of those complex shapes to
  141. redraw but, if you've got just a couple simple objects in your window, it
  142. may be faster to just redraw them all then try to re-calculate which
  143. objects intersect the visRgn.
  144.  
  145. Also, when your window is shown, an update event is automatically
  146. generated with the full content of the window in the visRgn so you don't
  147. have to manually draw the window when it is created, it will be handled by
  148. your updateEvt handler.
  149.  
  150. I'm not sure why you are creating a window each time you get an activate
  151. event. If you mean each time your application gets an OpenApplication
  152. AppleEvent I understand but, when you get an activate event for a window,
  153. you don't want to create a new one, you just want to activate (or
  154. deactivate) anything needs to be activated (or deactivated).
  155.  
  156. ---------------------------
  157.  
  158. >From ikb_macd@ece.concordia.ca (Keith MacDonald)
  159. Subject: Checking for low memory condition
  160. Date: 1 Nov 1994 23:14:52 GMT
  161. Organization: ECE - Concordia University
  162.  
  163.  
  164. >From what I've read here recently, the Toolbox often crashes if less
  165. than approx 12K of memory is available.  In trying to deal with this:
  166.     1) is checking FreeMem ok, or must I check using MaxMem?
  167.         - is MaxMem much slower than freeMem?
  168.     2) how often would I want to check the available memory?
  169.         - after file loading & major (>1K) allocations
  170.         or everytime through event loop?
  171.  
  172. Thanks in advance,
  173. Keith
  174. ___________________________________________________________________________
  175.  Keith MacDonald                                       Computer Engineering
  176.  ikb_macd@ECE.concordia.ca                             Concordia University
  177.  http://www.ece.concordia.ca/~ikb_macd/addr.html       Montreal, QC, Canada
  178.  
  179. +++++++++++++++++++++++++++
  180.  
  181. >From jbeeghly@u.washington.edu (Jeff Beeghly)
  182. Date: 2 Nov 1994 02:55:34 GMT
  183. Organization: University of Washington
  184.  
  185. ikb_macd@ece.concordia.ca (Keith MacDonald) writes:
  186. >From what I've read here recently, the Toolbox often crashes if less
  187. >than approx 12K of memory is available.  In trying to deal with this:
  188.  
  189. I was the one who started the minimum mememory running thread.  The 12k 
  190. was the limit for the StandardGetFile dialog... the min. amount changes 
  191. from task to task.  Someone suggest that the minimum amount should be 32k 
  192. (due to some toolbox calls that >MIGHT< require 32k).  To me, this sounds 
  193. rediculous... apps should be more streamlined.  In order to boob-proof 
  194. your app you should test each path under critical conditions.
  195.  
  196.  
  197. >    1) is checking FreeMem ok, or must I check using MaxMem?
  198.  
  199. remember, FreeMem just reports the amount of FREE memory.  My app 
  200. contains quite a bit of purgeable code that can be freed up to increase 
  201. the amount of free menory.  If you don't have them yet, get SWATCH 
  202. (system Watcher) and ZoneRanger.
  203.  
  204. >    2) how often would I want to check the available memory?
  205. >        - after file loading & major (>1K) allocations
  206. >        or everytime through event loop?
  207.  
  208. What I'm doing is two things:
  209.  
  210. 1) My even loop looks something like this:
  211.  
  212. static Boolean bWarned = FALSE;
  213.  
  214. while( !gIsAppDone )
  215. {
  216.     if( WaitNextEvent(....) )
  217.     {
  218.         DoEvent(....);
  219.     }
  220.     else
  221.     {
  222.         DoIdle(....);
  223.     }
  224.  
  225.     if(FreeMem() < LOW_RAM_WARNING)
  226.     {
  227.         if(bWarned == FALSE)
  228.         {
  229.             CautionAlert(....);
  230.             bWarned = TRUE;
  231.         }
  232.     }
  233. }
  234.  
  235. This warns the user when the memory drops below LOW_RAM_WARNING
  236.  
  237.  
  238. Second, before I perform a function, I perform a minimum memory check... 
  239. something like...
  240.  
  241.  
  242. switch( menu )
  243. {
  244.     case mOpen:
  245.         if(FreeMem() < MINIMUM_RAM)
  246.             ErrorAlert(...);  // tell the user "sorry, but there
  247.                       // is not enough free memory
  248.                       // please close one or more windows"
  249.         else
  250.             OpenFile();
  251.         break;
  252.  
  253. }
  254.  
  255. +++++++++++++++++++++++++++
  256.  
  257. >From mhl@icf.hrb.com (mark)
  258. Date: 2 Nov 94 10:50:28 EST
  259. Organization: HRB Systems, Inc.
  260.  
  261. In article <396i5c$4ae@newsflash.concordia.ca>, 
  262.     ikb_macd@ece.concordia.ca (Keith MacDonald) writes:
  263. > From what I've read here recently, the Toolbox often crashes if less
  264. > than approx 12K of memory is available.  In trying to deal with this:
  265. >     1) is checking FreeMem ok, or must I check using MaxMem?
  266. >         - is MaxMem much slower than freeMem?
  267. >     2) how often would I want to check the available memory?
  268. >         - after file loading & major (>1K) allocations
  269. >         or everytime through event loop?
  270.  
  271.         Keith,
  272.  
  273.         It is reassuring to see programmers making crash-proof 
  274.         applications. You are correct. In addition to rigorous error
  275.         checking, verifying the presence of required features is a good
  276.         safety feature. In this case - available memory.
  277.  
  278.         A good figure to look for, in terms of free memory, would be
  279.         33K. Much of the Toolbox limits data structures to what can be
  280.         indexed by a short (i.e. 32767 bytes). Allowing for overhead we
  281.         arrive at 33K.
  282.  
  283.         In terms of frequency, we really do not need to check at all
  284.         (although the functions you listed would work). The Memory
  285.         Manager provides a mechanism to inform applications when "memory
  286.         is low". What is need is a Grow Zone Procedure.
  287.  
  288.         When something needs memory, either directly, by calling NewPtr
  289.         or NewHandle, or indirectly, by calling a Toolbox routine which
  290.         does, the memory manager checks to see if the request can be
  291.         satisfied. If it can not, the Grow Zone Procedure will be called
  292.         in search of additional memory.
  293.  
  294.         If we have allocated a 33K block of memory, early in execution,
  295.         we can dispose of this block when our Grow Zone Procedure is
  296.         called. This should (probably) satisfy any unforseen Toolbox
  297.         needs. In addition, we know that memory is low, and can take
  298.         defensive measures like disabling menu items which will need
  299.         large amounts of memory (e.g. File>New, File>Open...).
  300.  
  301.         We should also program defensively elsewhere. Always check the
  302.         results of NewHandle and NewPtr for nil. Provide a graceful
  303.         return from such situations (not a hard crash). Be aware that
  304.         Toolbox routines that return a pointer or Handle to a new data
  305.         structure also need to be checked.
  306.  
  307.         Given the precautions set out here, we should be relatively safe
  308.         from crashes due to low memory in Toolbox calls. For additional
  309.         information on the topic of Grow Zone Procedures and avoiding
  310.         memory allocation problems in general, please refer to the new
  311.         Inside Macintosh: Files.
  312.  
  313. > Thanks in advance,
  314. > Keith
  315.  
  316. -- 
  317. Hope this helps.
  318.  
  319. Mark H. Linton
  320. ____________________________________________________________________
  321. mark \'märk\ n [ME, fr. OE mearc boundary, march, sign; akin to OHG
  322. marha boundary, L margo] 1 a : a conspicuous object serving as a guide
  323. for travelers 2 : A standard or criterion of quality 3 : An object or
  324. point that serves as a guide --idiom. mark time. 1 : To make little or
  325. no progress
  326.  
  327. +++++++++++++++++++++++++++
  328.  
  329. >From larson@base.cs.ucla.edu (Christopher Larson)
  330. Date: 2 Nov 1994 17:56:37 GMT
  331. Organization: UCLA, Computer Science Department
  332.  
  333. In article <1994Nov2.105028.22266@hrbicf> mhl@icf.hrb.com (mark) writes:
  334. >In article <396i5c$4ae@newsflash.concordia.ca>, 
  335. >    ikb_macd@ece.concordia.ca (Keith MacDonald) writes:
  336. >> From what I've read here recently, the Toolbox often crashes if less
  337. >> than approx 12K of memory is available.  In trying to deal with this:
  338. >
  339. > [ most of Mark's excellent answer deleted ]
  340. >
  341. >        Given the precautions set out here, we should be relatively safe
  342. >        from crashes due to low memory in Toolbox calls. For additional
  343. >        information on the topic of Grow Zone Procedures and avoiding
  344. >        memory allocation problems in general, please refer to the new
  345. >        Inside Macintosh: Files.
  346.          ^^^^^^^^^^^^^^^^^^^^^^^
  347.  
  348. I'm sure Mark meant _Inside Macintosh: Memory_.
  349.  
  350. --Chris
  351. _______________________________________________________________________________
  352. Chris Larson -- Amateur Macintosh Geek, CoBase Research Assistant
  353. L.A. Institute of Slowly and Painfully Working Out the Surprisingly Obvious
  354. Death to the Trojans! Go Bruins!
  355.  
  356. (Insert disclaimer here)
  357. Internet: larson@kingston.cs.ucla.edu
  358.  
  359. +++++++++++++++++++++++++++
  360.  
  361. >From Jens Alfke <jens_alfke@powertalk.apple.com>
  362. Date: Wed, 2 Nov 1994 22:11:01 GMT
  363. Organization: Apple Computer
  364.  
  365. mark, mhl@icf.hrb.com writes:
  366. >         In terms of frequency, we really do not need to check at all
  367. >         (although the functions you listed would work). The Memory
  368. >         Manager provides a mechanism to inform applications when "memory
  369. >         is low". What is need is a Grow Zone Procedure.
  370.  
  371. Right on! I agree completely. This is how MacApp and TCL (and PowerPlant?) do
  372. it, and the way I do it in any serious app I write.
  373.  
  374. In addition, to make this work better it helps if your own explicit memory
  375. allocations cannot trigger the GZproc (since it's their for the Toolbox's
  376. use, not yours.) I do this by having a global Boolean flag that tells the
  377. GZproc whether it's okay to dispose the "cushion" block. Then I have routines
  378. like MyNewHandle that set the flag to false, call NewHandle, then set it to
  379. true. This ensures that your code doesn't eat into the cushion.
  380.  
  381. Moreover, once the cushion is eaten into, all of your explicit memory
  382. allocations should fail until the cushion can be re-inflated to its original
  383. size.
  384.  
  385. --Jens Alfke                           jens_alfke@powertalk.apple.com
  386.                    "A man, a plan, a yam, a can of Spam ... Bananama!"
  387.  
  388. +++++++++++++++++++++++++++
  389.  
  390. >From bw16@cornell.edu (Bretton Wade)
  391. Date: Wed, 02 Nov 1994 19:39:28 -0500
  392. Organization: Cornell Program of Computer Graphics
  393.  
  394. In article <1994Nov2.221101.2400@gallant.apple.com>, Jens Alfke
  395. <jens_alfke@powertalk.apple.com> wrote:
  396.  
  397. > Right on! I agree completely. This is how MacApp and TCL (and PowerPlant?) do
  398. > it, and the way I do it in any serious app I write.
  399. > In addition, to make this work better it helps if your own explicit memory
  400. > allocations cannot trigger the GZproc (since it's their for the Toolbox's
  401. > use, not yours.) I do this by having a global Boolean flag that tells the
  402. > GZproc whether it's okay to dispose the "cushion" block. Then I have routines
  403. > like MyNewHandle that set the flag to false, call NewHandle, then set it to
  404. > true. This ensures that your code doesn't eat into the cushion.
  405. > Moreover, once the cushion is eaten into, all of your explicit memory
  406. > allocations should fail until the cushion can be re-inflated to its original
  407. > size.
  408.  
  409. This last part is the part that I've always wondered about. The OS doesn't
  410. seem to have a nice "more memory is available now" function to match the
  411. GZ function. Not that I'd expect one...
  412.  
  413. What would be the best way to alleviate this problem? I can think of most
  414. of the obvious solutions, like having my own allocator that checked to see
  415. if the buffer had been released, and whether or not it could be
  416. reclaimed...
  417.  
  418. ______________________________________________________________
  419.    Bretton Wade (bw16@cornell.edu)
  420.    http://www.graphics.cornell.edu/~bwade/
  421.  
  422.    This is funny. Laugh now.
  423. ______________________________________________________________
  424.  
  425. +++++++++++++++++++++++++++
  426.  
  427. >From larson@base.cs.ucla.edu (Christopher Larson)
  428. Date: 3 Nov 1994 18:13:08 GMT
  429. Organization: UCLA, Computer Science Department
  430.  
  431. In article <bw16-0211941939280001@132.236.236.79> bw16@cornell.edu (Bretton Wade) writes:
  432. >In article <1994Nov2.221101.2400@gallant.apple.com>, Jens Alfke
  433. ><jens_alfke@powertalk.apple.com> wrote:
  434. >>
  435. >> [ Stuff about using a grow-zone procedure deleted ]
  436. >> 
  437. >> Moreover, once the cushion is eaten into, all of your explicit memory
  438. >> allocations should fail until the cushion can be re-inflated to its original
  439. >> size.
  440. >
  441. >This last part is the part that I've always wondered about. The OS doesn't
  442. >seem to have a nice "more memory is available now" function to match the
  443. >GZ function. Not that I'd expect one...
  444.  
  445. Maybe I'm misunderstanding your wondering, but that's exactly what a
  446. grow-zone procedure is for. A grow-zone procedure is called by the OS
  447. when it can't allocate a block of the requested size. The GZProc returns
  448. a value telling the OS how much memory it freed (if any) and the memory
  449. allocation is re-tried (purging and compacting the heap if necessary).
  450. So the return value of the GZProc does tell the OS that "more memory is
  451. available now," if it returned non-zero, or "no more memory is available,"
  452. if it returned zero.
  453.  
  454. >What would be the best way to alleviate this problem? I can think of most
  455. >of the obvious solutions, like having my own allocator that checked to see
  456. >if the buffer had been released, and whether or not it could be
  457. >reclaimed...
  458.  
  459. The procedure outlined in Inside Macintosh: Memory recommends a procedure
  460. similar to this. It suggests that custom allocators for both handles and
  461. pointers be created which check the status of the buffer (and check to see
  462. that the amount of free memory available after the allocation is above a
  463. 'cushion' value). If both of these conditions hold, the grow-zone procedure
  464. is disabled (as Jens suggests, to make sure the buffer is not used for this
  465. allocation), the allocation is made, and the grow-zone procedure re-enabled.
  466.  
  467. IM: Memory also suggests that the place to determine if the buffer can
  468. be re-allocated (once freed) is in the event loop of the program.
  469.  
  470. The purpose of the buffer (and the 'cushion' suggested by IM) is to ensure
  471. that allocations made by the OS succeed (since parts, if not all, of the
  472. OS assumes they will). The custom allocation procedures are not intended
  473. to filter OS allocations, only allocations made by the application itself.
  474.  
  475. All of this is explained in detail in Inside Macintosh: Memory. I _highly_
  476. recommend that this chapter be required reading for anyone implementing
  477. a Mac application. Not because I think it's the utmost in low-memory
  478. handling (although I think it's quite good and I haven't come up with
  479. a better one) but because it brings all the relevant issues to light and
  480. provides reasonable solutions to low-memory problems.
  481.  
  482. Again, I apologize if I've misunderstood your questions. Hope this helps.
  483.  
  484. --Chris
  485. _______________________________________________________________________________
  486. Chris Larson -- Amateur Macintosh Geek, CoBase Research Assistant
  487. L.A. Institute of Slowly and Painfully Working Out the Surprisingly Obvious
  488. Death to the Trojans! Go Bruins!
  489.  
  490. (Insert disclaimer here)
  491. Internet: larson@kingston.cs.ucla.edu
  492.  
  493. +++++++++++++++++++++++++++
  494.  
  495. >From Jaeger@fquest.com (Brian Stern)
  496. Date: 4 Nov 1994 14:25:33 GMT
  497. Organization: The University of Texas at Austin, Austin, Texas
  498.  
  499. In article <bw16-0411940015080001@132.236.236.53>, bw16@cornell.edu
  500. (Bretton Wade) wrote:
  501.  
  502. < > IM: Memory also suggests that the place to determine if the buffer can
  503. < > be re-allocated (once freed) is in the event loop of the program.
  504. < > 
  505. < This is one of the obvious solutions that I mentioned, and seems less than
  506. < optimal. I'll be checking a zillion times a second for a condition that
  507. < should probably never happen to most properly functioning
  508. < applications?!?!?
  509. < Bretton
  510. < ______________________________________________________________
  511. <    Bretton Wade (bw16@cornell.edu)
  512. <    http://www.graphics.cornell.edu/~bwade/
  513. < ______________________________________________________________
  514.  
  515. I don't think that this is a problem.  Say your memory buffer is a handle,
  516. and that when it is freed you set the variable to NULL.  Then do something
  517. like this in your event loop:
  518.  
  519. if ( !gMemoryBuffer )
  520.     gMemoryBuffer = NewHandle( kMemBuffSize );
  521.  
  522. I don't think that checking that once through your event loop will take
  523. much time at all.  If you like you could do it only on null events.
  524.  
  525. -- 
  526. Brian  Stern  :-{)}
  527. Toolbox commando and Menu bard
  528. Jaeger@fquest.com
  529.  
  530. +++++++++++++++++++++++++++
  531.  
  532. >From larson@base.cs.ucla.edu (Christopher Larson)
  533. Date: 7 Nov 1994 20:23:39 GMT
  534. Organization: UCLA, Computer Science Department
  535.  
  536. In article <bw16-0411940015080001@132.236.236.53> bw16@cornell.edu (Bretton Wade) writes:
  537. > larson@base.cs.ucla.edu (Chris Larson) writes:
  538. >> Maybe I'm misunderstanding your wondering, but that's exactly what a
  539. >
  540. >Yeah, you misunderstand. I want to know a *GOOD* way to determine when it
  541. >is OK to reclaim my emergency buffer.
  542.  
  543. OOPS. Sorry. See below.
  544.  
  545. >> IM: Memory also suggests that the place to determine if the buffer can
  546. >> be re-allocated (once freed) is in the event loop of the program.
  547. >> 
  548. >
  549. >This is one of the obvious solutions that I mentioned, and seems less than
  550. >optimal. I'll be checking a zillion times a second for a condition that
  551. >should probably never happen to most properly functioning
  552. >applications?!?!?
  553.  
  554. The buffer de-allocation and re-allocation is done either with
  555. DisposeHandle/NewHandle or EmptyHandle/ReallocHandle (I forget which and am
  556. away from my Mac -- I think it's with the latter, so I'll assume that).
  557.  
  558. After the GZProc calls EmptyHandle, the handle's master pointer will be
  559. NULL, so the check in the event loop consists of something like the
  560. following:
  561.  
  562.   if ( ( gEmergencyMemory == NULL ) || ( *gEmergencyMemory == NULL ) ) {
  563.     /* Yipes, buffer is free -- do something about it */
  564.   }
  565.  
  566. If everything is OK, this consists of two comparisons against zero, one
  567. dereference, and a branch. We're talking 5 or 6 instructions here, utterly
  568. insignificant when compared with the call to WaitNextEvent.
  569.  
  570. So, yes, this check will run many times a second, but it costs virtually
  571. nothing to run in the case that the buffer is intact (which will be the case
  572. most of the time, as you point out). It is not _absolutely_ optimal but it
  573. won't impact the operation of any real-world application at all.
  574.  
  575. Now for the first part of your question (hopefully I'll answer the right
  576. question this time ;-).
  577.  
  578. Once you have determined that the buffer has been de-allocated, the best
  579. way to determine if it can be re-allocated is to call ReallocHandle. If
  580. this suceedes, continue execution. If you can't get the buffer back, it's
  581. time to take drastic actions.
  582.  
  583. Now, I'm sure you knew about ReallocHandle and I think your question is
  584. really "How can I tell when the OS is done with the buffer's memory and
  585. ReallocHandle() will succeed?" This question is answered by the philosophy
  586. behind this entire low-memory scheme. The purpose of the emergency buffer
  587. is to provide a last-ditch area for Toolbox calls to use as scratch space.
  588. If it is being used in a more permanent fashion, the heap is very close to
  589. full. That being the case, anytime the buffer is de-allocated, you should
  590. try to reclaim it. If you can't you know your application is seriously low
  591. on memory and something extreme needs to be done. Again, this is simply
  592. based on the philosophy behind this particular scheme.
  593.  
  594. If you are interested in allowing use of the buffer for more permanent
  595. storage, some rethinking of the entire scheme will likely be necessary.
  596. Having not done this, I can't offer any experience-based ideas to help.
  597.  
  598. --Chris
  599. _______________________________________________________________________________
  600. Chris Larson -- Amateur Macintosh Geek, CoBase Research Assistant
  601. L.A. Institute of Slowly and Painfully Working Out the Surprisingly Obvious
  602. Death to the Trojans! Go Bruins!
  603.  
  604. (Insert disclaimer here)
  605. Internet: larson@kingston.cs.ucla.edu
  606.  
  607. +++++++++++++++++++++++++++
  608.  
  609. >From Jens Alfke <jens_alfke@powertalk.apple.com>
  610. Date: Tue, 8 Nov 1994 00:25:13 GMT
  611. Organization: Apple Computer
  612.  
  613. Bretton Wade, bw16@cornell.edu writes:
  614. > This is one of the obvious solutions that I mentioned, and seems less than
  615. > optimal. I'll be checking a zillion times a second for a condition that
  616. > should probably never happen to most properly functioning
  617. > applications?!?!?
  618.  
  619. 1. If your event loop runs "a zillion times a second" I don't want to use
  620. your app! You should be passing a valid time in the 'sleep' parameter to WNE.
  621.  
  622. 2. You feel that running low on memory is something that will never happen to
  623. a properly functioning app? Hmm, I _really_ don't want to run your app now ;-)
  624.  
  625. --Jens Alfke                           jens_alfke@powertalk.apple.com
  626.                    "A man, a plan, a yam, a can of Spam ... Bananama!"
  627.  
  628. +++++++++++++++++++++++++++
  629.  
  630. >From bw16@cornell.edu (Bretton Wade)
  631. Date: Mon, 07 Nov 1994 22:53:52 -0500
  632. Organization: Cornell Program of Computer Graphics
  633.  
  634. In article <1994Nov8.002513.26665@gallant.apple.com>, Jens Alfke
  635. <jens_alfke@powertalk.apple.com> wrote:
  636.  
  637. > Bretton Wade, bw16@cornell.edu writes:
  638. > > This is one of the obvious solutions that I mentioned, and seems less than
  639. > > optimal. I'll be checking a zillion times a second for a condition that
  640. > > should probably never happen to most properly functioning
  641. > > applications?!?!?
  642. > 1. If your event loop runs "a zillion times a second" I don't want to use
  643. > your app! You should be passing a valid time in the 'sleep' parameter to WNE.
  644.  
  645. > 2. You feel that running low on memory is something that will never happen to
  646. > a properly functioning app? Hmm, I _really_ don't want to run your app now ;-)
  647. > --Jens Alfke                           jens_alfke@powertalk.apple.com
  648. >                    "A man, a plan, a yam, a can of Spam ... Bananama!"
  649.  
  650. Exageration to make a point, I admit. The point seems to have been lost on
  651. you, however.
  652.  
  653. =)  =)
  654.  
  655. Bretton
  656.  
  657. ______________________________________________________________
  658.    Bretton Wade (bw16@cornell.edu)
  659.    http://www.graphics.cornell.edu/~bwade/
  660. ______________________________________________________________
  661.  
  662. ---------------------------
  663.  
  664. >From vtourang@chat.carleton.ca (Vince Tourangeau)
  665. Subject: Fast Pixel Drawing
  666. Date: Fri, 28 Oct 1994 03:21:36 GMT
  667. Organization: Carleton University
  668.  
  669.  
  670. What's the fastest method of writing a pixel to the current CGrafPtr?
  671. I'm currently writing my own graphic routines for the game I'm
  672. designing - QuickDraw seems way too slow for some things, so I'm
  673. trying to optimize all the commands for what I'm doing. Right now, I'm
  674. calling SetCPixel to write to the current port. Is there a more direct
  675. way of doing this? Come to think of it, how do I write directly to an
  676. arbitrary PixMap?
  677.     Thanks,
  678.         Vince
  679.  
  680. - --------------------------------------------------------------------
  681. Vince Tourangeau
  682. Carleton University
  683.  
  684.  
  685. _______________________________________________________________
  686. (Insert witty quote above)
  687.  
  688.  
  689. Email address: vtourang@chat.carleton.ca
  690. - --------------------------------------------------------------------
  691.  
  692. +++++++++++++++++++++++++++
  693.  
  694. >From 103t_english@west.cscwc.pima.edu
  695. Date: 28 Oct 94 01:51:50 MST
  696. Organization: (none)
  697.  
  698. In article <CyD5C1.D08@cunews.carleton.ca>, vtourang@chat.carleton.ca (Vince Tourangeau) writes:
  699. > What's the fastest method of writing a pixel to the current CGrafPtr?
  700. > I'm currently writing my own graphic routines for the game I'm
  701. > designing - QuickDraw seems way too slow for some things, so I'm
  702. > trying to optimize all the commands for what I'm doing. Right now, I'm
  703. > calling SetCPixel to write to the current port. Is there a more direct
  704. > way of doing this? Come to think of it, how do I write directly to an
  705. > arbitrary PixMap?
  706. >     Thanks,
  707. >         Vince
  708.  
  709.  
  710. "Drawing in GWorlds for Speed and Versatility" in develop 10 and "Writing
  711. Directly to the Screen" in develop 11 are good places to start looking.
  712.  
  713.  
  714. SetCPixel, on a PowerMac, is so slow that I wonder if it is any faster than a
  715. Quadra in this case.
  716.  
  717.  
  718. Lawson
  719.  
  720. +++++++++++++++++++++++++++
  721.  
  722. >From jmunkki@beta.hut.fi (Juri Munkki)
  723. Date: 3 Nov 1994 18:54:51 GMT
  724. Organization: Helsinki University of Technology
  725.  
  726. In article <396050$10b@ccnet.ccnet.com> Alex Lelievre <alexl@ccnet.com> writes:
  727. >In article <CyELK0.7pt@cunews.carleton.ca> Vince Tourangeau,
  728. >vtourang@chat.carleton.ca writes:
  729. >
  730. >>This is all Mac stuff, but any help would be appreciated...
  731. >>What's the fastest method of writing a pixel to the current CGrafPtr?
  732. >>I'm currently writing my own graphic routines for the game I'm
  733. >>designing - QuickDraw seems way too slow for some things, so I'm
  734. >>trying to optimize all the commands for what I'm doing. Right now, I'm
  735. >>calling SetCPixel to write to the current port. Is there a more direct
  736. >>way of doing this? Come to think of it, how do I write directly to an
  737. >>arbitrary PixMap?
  738. >
  739. >All you have to do is insert a pixel value at the right place in memory.
  740. >A CGrafPort has a handle to the PortPixMap. This struct has a pointer to
  741. >the base address of the actual pixel map.
  742. >All you need to do is calculate the rowBytes (which is already done for
  743. >you by quickdraw) and index into the pixel map manually.
  744.  
  745. Except that if you are drawing to the screen and the user is in a 24 bit
  746. addressing mode, you'll be most probably writing into random memory unless
  747. you call SwapMMUMode before and after drawing. You should also call
  748. ShieldCursor when you draw to the screen. Offscreen GWorlds can also
  749. be stored on video cards and such, so even offscreen devices are not
  750. completely safe.
  751.  
  752. Followups to comp.sys.mac.programmer.
  753.  
  754. -- 
  755.   Juri Munkki            There ain't no such thing as a shareware lunch.
  756.  jmunkki@hut.fi                Windsurfing: Faster than the wind.
  757.  
  758. +++++++++++++++++++++++++++
  759.  
  760. >From Dmitry Boldyrev <c-bvda@solitude.math.utah.edu>
  761. Date: 6 Nov 1994 21:07:30 GMT
  762. Organization: University of Utah
  763.  
  764. In article <39bblr$jh1@nntp.hut.fi> Juri Munkki, jmunkki@beta.hut.fi
  765. writes:
  766. >Except that if you are drawing to the screen and the user is in a 24 bit
  767. >addressing mode, you'll be most probably writing into random memory
  768. unless
  769. >you call SwapMMUMode before and after drawing. You should also call
  770. >ShieldCursor when you draw to the screen. Offscreen GWorlds can also
  771. >be stored on video cards and such, so even offscreen devices are not
  772. >completely safe.
  773. >
  774. >Followups to comp.sys.mac.programmer.
  775.  
  776. I completely agree with Juri, here is a little (unsafe) fast pixel code I
  777. wrote
  778. for my molecule designer :-)
  779. void FastPixel(ptr baseAddr, ulong rowBytes, short x, short y, byte color)
  780. {
  781.     asm {
  782.         movem.l d0-d7/a0-a6,-(a7)
  783.         move.w x,d0
  784.         move.w y,d1
  785.         move.l baseAddr,a0
  786.         move.l rowBytes,d6    
  787.         mulu.l d6,d1
  788.         add.l d1,d0            
  789.         add.l d0,a0            // a0 = address of the first point to draw
  790.         move.b color,(a0)
  791.         movem.l (a7)+,d0-d7/a0-a6
  792.     }
  793. }
  794.  
  795. ---------------------------
  796.  
  797. >From fixer@faxcsl.dcrt.nih.gov (Chris Driving in the Rain Tate)
  798. Subject: GX text problems
  799. Date: Wed, 2 Nov 1994 19:03:55 GMT
  800. Organization: DCRT, NIH, Bethesda, MD
  801.  
  802. I'm *sure* this is a no-brainer, but I can't seem to figure out what I'm
  803. supposed to be doing.  GX is *incredibly* cool on first glance, and most
  804. things seem perfectly straightforward, but....
  805.  
  806. I want to draw some text in Geneva Bold.  That's it.  However, I can't
  807. figure out how to specify that font.  IM: QDGX Typography says that you
  808. should use GXFindFonts() to get a gxFont object that fits your needs.
  809. That's cool; I can get "Geneva" by name just fine.
  810.  
  811. However, later on it implies that if you pass the name "Geneva Bold," GX
  812. will give you the appropriate flavor of font, and you go from there.
  813. Unfortunately, "Geneva Bold" isn't a legitimate font name, apparently.
  814. Passing "Geneva" as the name gives me back a gxFont, passing "Geneva Bold"
  815. doesn't.  :-(
  816.  
  817. *HOW* can I specify that I want to use Geneva Bold?
  818.  
  819. Ah, yes:  I've tried associating a style object with the font, after
  820. setting the style object to indicate boldness, but I wound up with
  821. heavy type fit into the "standard" metrics, which is not what I want.
  822.  
  823. Help!  How do you choose a particular font "flavor" programmatically?
  824.  
  825. - ------------------------------------------------------------------
  826. Christopher T{te           | "I never thought of surgery as 'editing
  827. fixer@faxcsl.dcrt.nih.gov  |  a person' before...."
  828. eWorld:  cTate             |        -- Mark Linton (mhl@icf.hrb.com)
  829.  
  830. +++++++++++++++++++++++++++
  831.  
  832. >From ldo@waikato.ac.nz (Lawrence D'Oliveiro, Waikato University)
  833. Date: 3 Nov 94 18:11:13 +1300
  834. Organization: University of Waikato, Hamilton, New Zealand
  835.  
  836. In article <1994Nov2.190355.20865@alw.nih.gov>, fixer@faxcsl.dcrt.nih.gov (Chris Driving in the Rain Tate) writes:
  837. >
  838. > I want to draw some text in Geneva Bold.  That's it.  However, I can't
  839. > figure out how to specify that font.  IM: QDGX Typography says that you
  840. > should use GXFindFonts() to get a gxFont object that fits your needs.
  841. > That's cool; I can get "Geneva" by name just fine.
  842. >
  843. > However, later on it implies that if you pass the name "Geneva Bold," GX
  844. > will give you the appropriate flavor of font, and you go from there.
  845. > Unfortunately, "Geneva Bold" isn't a legitimate font name, apparently.
  846. > Passing "Geneva" as the name gives me back a gxFont, passing "Geneva Bold"
  847. > doesn't.  :-(
  848.  
  849. That's probably because there is no such font as Geneva Bold, only Geneva
  850. Regular.
  851.  
  852. > *HOW* can I specify that I want to use Geneva Bold?
  853.  
  854. First, the good news: yes, QuickDraw GX is incredibly cool, and lets you do
  855. neat stuff without batting an eyelid, that you had to jump through hoops to
  856. do with QuickDraw.
  857.  
  858. Now, the not-quite-so-good news: a few things which were very simple in
  859. QuickDraw, are a little less simple in GX. In QuickDraw, you only had a limited
  860. set of text styles (bold, italic, underline, outline, shadow, condensed,
  861. extended): and if you asked for a style for which there was no actual font,
  862. QuickDraw would fake it for you automatically. Under GX, the real fonts and
  863. the fakes are kept rigidly separate, and there is no automatic crossing between
  864. them.
  865.  
  866. To create a bold version of Geneva, you will need to set up a text face
  867. structure.
  868.  
  869. > Ah, yes:  I've tried associating a style object with the font, after
  870. > setting the style object to indicate boldness, but I wound up with
  871. > heavy type fit into the "standard" metrics, which is not what I want.
  872.  
  873. Sounds like you've already got part of the text face business sorted out
  874. (since I can't remember any other way to add boldness to text). It looks to
  875. me like the part you're missing is an appropriate setup for the advanceMapping
  876. field, to change the width of the glyphs.
  877.  
  878. Disclaimer: this is getting into parts of GX that I remember reading about
  879. in the manuals, but for which I've yet to write any actual code that uses
  880. the stuff.
  881.  
  882. Lawrence D'Oliveiro                       fone: +64-7-856-2889
  883. Computer Services Dept                     fax: +64-7-838-4066
  884. University of Waikato            electric mail: ldo@waikato.ac.nz
  885. Hamilton, New Zealand    37^ 47' 26" S, 175^ 19' 7" E, GMT+13:00
  886.  
  887. +++++++++++++++++++++++++++
  888.  
  889. >From fixer@faxcsl.dcrt.nih.gov (Chris Driving in the Rain Tate)
  890. Date: Thu, 3 Nov 1994 14:51:13 GMT
  891. Organization: DCRT, NIH, Bethesda, MD
  892.  
  893. ldo@waikato.ac.nz (Lawrence D'Oliveiro, Waikato University) writes:
  894. >fixer@faxcsl.dcrt.nih.gov (Chris Driving in the Rain Tate) writes:
  895. >>
  896. >> I want to draw some text in Geneva Bold.  That's it.  However, I can't
  897. >> figure out how to specify that font.  IM: QDGX Typography says that you
  898. >> should use GXFindFonts() to get a gxFont object that fits your needs.
  899. >> That's cool; I can get "Geneva" by name just fine.
  900. >>
  901. >> However, later on it implies that if you pass the name "Geneva Bold," GX
  902. >> will give you the appropriate flavor of font, and you go from there.
  903. >> Unfortunately, "Geneva Bold" isn't a legitimate font name, apparently.
  904. >> Passing "Geneva" as the name gives me back a gxFont, passing "Geneva Bold"
  905. >> doesn't.  :-(
  906. >
  907. >That's probably because there is no such font as Geneva Bold, only Geneva
  908. >Regular.
  909.  
  910. The electronic (DocViewer) version of IM: QDGX Typography that's on ETO 15
  911. is bogus in several ways that I've discovered in the last few days.  One is
  912. that, for example, the code on page 6-26, which is supposed to set up a
  913. gxTextFace to indicate bolding, won't even compile as printed:  it uses
  914. curly quotes instead of flat ones, and it gets confused about whether it
  915. ought to be using "face.field" or "face->field" notation in the middle of
  916. a function.
  917.  
  918. Also, on page 7-24 (the chapter on fonts), it says that using the
  919. gxFullFontName selector for the GXFindFonts() function lets you search
  920. for fonts based on "The full font name, such as 'Geneva Bold'."  Oops.
  921.  
  922. >> *HOW* can I specify that I want to use Geneva Bold?
  923. >
  924. > [snip]
  925. >
  926. >Now, the not-quite-so-good news: a few things which were very simple in
  927. >QuickDraw, are a little less simple in GX. In QuickDraw, you only had a limited
  928. >set of text styles (bold, italic, underline, outline, shadow, condensed,
  929. >extended): and if you asked for a style for which there was no actual font,
  930. >QuickDraw would fake it for you automatically. Under GX, the real fonts and
  931. >the fakes are kept rigidly separate, and there is no automatic crossing between
  932. >them.
  933. >
  934. >To create a bold version of Geneva, you will need to set up a text face
  935. >structure.
  936. >
  937. >> Ah, yes:  I've tried associating a style object with the font, after
  938. >> setting the style object to indicate boldness, but I wound up with
  939. >> heavy type fit into the "standard" metrics, which is not what I want.
  940. >
  941. >Sounds like you've already got part of the text face business sorted out
  942. >(since I can't remember any other way to add boldness to text). It looks to
  943. >me like the part you're missing is an appropriate setup for the advanceMapping
  944. >field, to change the width of the glyphs.
  945.  
  946. I eventually decided that I probably *ought* to be doing this, even if it
  947. seemed like more work than should have been necessary at the time.  I'm glad
  948. that I decided on the "right" solution!
  949.  
  950. Originally, I was trying to use the SetCommonFace() routine that's included
  951. with the <text library.c> file in the GX stuff on ETO 15; it was giving me
  952. more bolding than I wanted, and not setting the advanceMapping attribute
  953. (which is indeed what was causing the scrunching that I observed).  Eventually
  954. I did the following (WORKING code follows):
  955.  
  956. extern    gxRectangle    gPageSize;        // printing page size
  957. extern    gxViewPort    gPrintingViewPort;    // port we're printing through
  958.     gxTextFace    boldFace;
  959.     gxShape        aTextShape;
  960.     gxPoint        aPos;
  961.  
  962. // set up the bold text face
  963.  
  964.     boldFace.faceLayers = 1;
  965.     ResetMapping(&(boldFace.advanceMapping));
  966.     boldFace.faceLayer[0].outlineFill = gxWindingFill;
  967.     boldFace.faceLayer[0].flags = 0;
  968.     boldFace.faceLayer[0].outlineStyle = nil;
  969.     boldFace.faceLayer[0].outlineTransform = nil;
  970.     boldFace.faceLayer[0].boldOutset.x = fixed1/48;  // gentle boldface
  971.     boldFace.faceLayer[0].boldOutset.y = 0;
  972.  
  973. // draw the document title against the left margin
  974.  
  975.     aTextShape = GXNewText(fileName[0], &(fileName[1]), &aPos);
  976.     GXSetShapeFace(aTextShape, &boldFace);
  977.     GXSetShapeTextAttributes(aTextShape,
  978.         GXGetShapeStyleAttributes(aTextShape) | gxAutoAdvanceText);
  979.     GXSetShapeFont(aTextShape, myFont);
  980.     GXSetShapeTextSize(aTextShape, ff(9));
  981.     GXMoveShapeTo(aTextShape, gPageSize.left,
  982.         gPageSize.top + ff(HEADER_LINE));
  983.     GXSetShapeViewPorts(aTextShape, 1, &gPrintingViewPort);
  984.     GXDrawShape(aTextShape);
  985.     GXDisposeShape(aTextShape);
  986.  
  987. The part that took a little getting-used-to was the concept of a "text face".
  988. Once I understood that *that* is the basic mechanism GX uses for most of its
  989. real text shape manipulations, including italicising and bolding and whatnot,
  990. it was pretty straightforward.  Also, GX seems to handle fonts better than
  991. Quickdraw did (not that I'm surprised, though!) - my printed output is rather
  992. more nicely turned out than the non-GX version, although I'm trying pretty
  993. hard to make the "new" output look like the old.  In particular, the tracking
  994. and kerning of printed output is now much better, even though I'm not using
  995. layout shapes!
  996.  
  997. I'm thinking that there should be a section in the FAQ, or perhaps a 
  998. separate FAQ, on Quickdraw GX.  A collection of war stories like mine (and
  999. yours, and Michael Pierce's, and... :-) would probably be pretty handy for
  1000. people who are having to dive headfirst into GX, and are daunted by the
  1001. sheer volume of documentation - some of which is incorrect or misleading. :-(
  1002.  
  1003. - ------------------------------------------------------------------
  1004. Christopher T{te           | "I never thought of surgery as 'editing
  1005. fixer@faxcsl.dcrt.nih.gov  |  a person' before...."
  1006. eWorld:  cTate             |        -- Mark Linton (mhl@icf.hrb.com)
  1007.  
  1008. +++++++++++++++++++++++++++
  1009.  
  1010. >From opstad@apple.com (David Opstad)
  1011. Date: 6 Nov 1994 22:10:23 -0800
  1012. Organization: Apple Computer Inc, Cupertino, CA
  1013.  
  1014. In article <1994Nov2.190355.20865@alw.nih.gov>, fixer@faxcsl.dcrt.nih.gov (Chris Driving in the Rain Tate) writes:
  1015. >
  1016. > I want to draw some text in Geneva Bold.  That's it.  However, I can't
  1017. > figure out how to specify that font.  IM: QDGX Typography says that you
  1018. > should use GXFindFonts() to get a gxFont object that fits your needs.
  1019. > That's cool; I can get "Geneva" by name just fine.
  1020. >
  1021. > However, later on it implies that if you pass the name "Geneva Bold," GX
  1022. > will give you the appropriate flavor of font, and you go from there.
  1023. > Unfortunately, "Geneva Bold" isn't a legitimate font name, apparently.
  1024. > Passing "Geneva" as the name gives me back a gxFont, passing "Geneva Bold"
  1025. > doesn't.  :-(
  1026.  
  1027. All that GXFindFonts does is look for a gxFont object whose name table
  1028. reports a name matching the criteria you specify. Since no font has a name
  1029. table that matches "Geneva Bold", the GXFindFonts call can't help.
  1030.  
  1031. In cases like this, the next step is to use either a variation (if the
  1032. font supports them; call GXCountFontVariations to see it it does), or
  1033. to use a textFace (which can be used with any font). There is sample code
  1034. in the text library (on the SDK CD) that makes it a little easier to
  1035. construct a text face:
  1036.  
  1037. void SetStyleCommonFace(gxStyle source, commonFace face);
  1038.  
  1039. Just pass in the style and a txFace-like constant and you're set.
  1040.  
  1041. Dave Opstad
  1042. GX Line Layout Weenie
  1043.  
  1044. ---------------------------
  1045.  
  1046. >From tlindner@netcom.com (Tim Lindner)
  1047. Subject: Macintosh Drag and Drop
  1048. Date: Mon, 31 Oct 1994 11:44:44 GMT
  1049. Organization: Computers Suck!, Inc.
  1050.  
  1051. I am having trouble implementing two things I see other drag-aware
  1052. applications do:
  1053.  
  1054. 1: Click-Through
  1055.         How do I keep my application becomming the front most when a
  1056. user clicks on his selection from different application? The _Human
  1057. Interface_Guidelines_ calls this supporting click-through and nothing
  1058. more is said about it.
  1059.  
  1060. 2: Trash-aware
  1061.         How do I determing when the user dragged his selection in-to the
  1062. finders trash can? The Note Pad uses this like a "Cut" operation and I
  1063. would like to do the same.
  1064.  
  1065. --
  1066. tim lindner
  1067. tlindner@netcom.com
  1068.  
  1069. +++++++++++++++++++++++++++
  1070.  
  1071. >From denboer@cc.umanitoba.ca (David Den Boer)
  1072. Date: 1 Nov 1994 23:29:58 GMT
  1073. Organization: The University of Manitoba
  1074.  
  1075. In <tlindnerCyJC3u.MqA@netcom.com> tlindner@netcom.com (Tim Lindner) writes:
  1076.  
  1077. >I am having trouble implementing two things I see other drag-aware
  1078. >applications do:
  1079.  
  1080. >2: Trash-aware
  1081. >        How do I determing when the user dragged his selection in-to the
  1082. >finders trash can? The Note Pad uses this like a "Cut" operation and I
  1083. >would like to do the same.
  1084.  
  1085. Check out the source code for DragText, which is included with the Drag
  1086. Manager's Developers Kit (which I believe is on ftp.apple.com now).  In the
  1087. Drag.c source file is a routine called DropLocationIsFinderTrash which you can
  1088. pretty much get the whole concept from.  If you do not have this code, and 
  1089. cannot find the archive, mail me and I will mail you my modified version
  1090. of this code.
  1091. -- 
  1092. David A. denBoer                MUSI Computer Products, Inc.
  1093. denboer@cc.umanitoba.ca                Borealis Project Lead
  1094.  
  1095. +++++++++++++++++++++++++++
  1096.  
  1097. >From jumplong@aol.com (Jump Long)
  1098. Date: 7 Nov 1994 00:03:29 -0500
  1099. Organization: America Online, Inc. (1-800-827-6364)
  1100.  
  1101. In article <396j1m$mp3@canopus.cc.umanitoba.ca>, denboer@cc.umanitoba.ca
  1102. (David Den Boer) writes:
  1103.  
  1104. >>2: Trash-aware
  1105. >>        How do I determing when the user dragged his selection in-to the
  1106. >>finders trash can? The Note Pad uses this like a "Cut" operation and I
  1107. >>would like to do the same.
  1108. >
  1109. >Check out the source code for DragText, which is included with the Drag
  1110. >Manager's Developers Kit (which I believe is on ftp.apple.com now).  In
  1111. >the Drag.c source file is a routine called DropLocationIsFinderTrash
  1112. >which you can pretty much get the whole concept from.
  1113.  
  1114. The routine in DragText unlocks a handle before it is done with it. I've
  1115. fixed the routine and copied it below
  1116.  
  1117. - Jim Luther
  1118.  
  1119. #include <AppleEvents.h>
  1120. #include <Files.h>
  1121. #include <Folders.h>
  1122.  
  1123. /*
  1124. ** DropLocationIsFinderTrash returns true if the given
  1125. ** dropLocation AEDesc is a descriptor of the Finder's Trash.
  1126. */
  1127.  
  1128. Boolean DropLocationIsFinderTrash(AEDesc *dropLocation);
  1129. Boolean DropLocationIsFinderTrash(AEDesc *dropLocation)
  1130.  
  1131. {
  1132.  Boolean   result;
  1133.  AEDesc   dropSpec;
  1134.  FSSpec   *theSpec;
  1135.  CInfoPBRec  pb;
  1136.  short   trashVRefNum;
  1137.  long   trashDirID;
  1138.  
  1139.  result = false; /* default to false */
  1140.  
  1141.  /* Coerce the dropLocation descriptor to an FSSpec. If there's no
  1142. dropLocation or */
  1143.  /* it can't be coerced into an FSSpec, then it couldn't have been the
  1144. Trash. */ 
  1145.  if ( (dropLocation->descriptorType != typeNull) &&
  1146.    (AECoerceDesc(dropLocation, typeFSS, &dropSpec) == noErr) )
  1147.  {
  1148.   /* Lock dropSpec.dataHandle while we use it as a pointer */ 
  1149.   HLock(dropSpec.dataHandle);
  1150.   theSpec = (FSSpec *) *dropSpec.dataHandle;
  1151.  
  1152.   /* Get the directory ID of the given dropLocation object. */
  1153.   pb.dirInfo.ioNamePtr = theSpec->name;
  1154.   pb.dirInfo.ioVRefNum = theSpec->vRefNum;
  1155.   pb.dirInfo.ioFDirIndex = 0;
  1156.   pb.dirInfo.ioDrDirID = theSpec->parID;
  1157.   if ( PBGetCatInfoSync(&pb) == noErr )
  1158.   {
  1159.    /* The drop location must be a directory to be the trash */
  1160.    if ( (pb.hFileInfo.ioFlAttrib & ioDirMask) != 0 )
  1161.    {
  1162.     /* Find the trash folder on the drop location's volume. */ 
  1163.     if ( FindFolder(theSpec->vRefNum, kTrashFolderType, kCreateFolder,
  1164.         &trashVRefNum, &trashDirID) == noErr )
  1165.     {
  1166.      /* If the directory ID of the dropLocation object is the same as the
  1167. */
  1168.      /* directory ID returned by FindFolder, then the drop must have */
  1169.      /* occurred into the Trash. */
  1170.      result = ( pb.dirInfo.ioDrDirID == trashDirID );
  1171.     }
  1172.    }
  1173.   }
  1174.   /* Unlock and dispose of the descriptor record */
  1175.   HUnlock(dropSpec.dataHandle);
  1176.   AEDisposeDesc(&dropSpec);
  1177.  }
  1178.  
  1179.  return ( result );
  1180. }
  1181.  
  1182.  
  1183. ---------------------------
  1184.  
  1185. >From Tim Dorcey <td11@cornell.edu>
  1186. Subject: Microseconds() documentation?
  1187. Date: 31 Oct 1994 22:12:44 GMT
  1188. Organization: Cornell University
  1189.  
  1190. Does anyone know where the Microseconds system call is documented?  I
  1191. stumbled upon it in <Timer.h>, but can't find mention of it anywhere
  1192. else.  Can I assume it to be available on any machine with the "Revised
  1193. Time Manager?"  I had already written my own timer using
  1194. PrimeTime/RmvTime but would just as soon use the system call if I can be
  1195. sure it is as widely applicable.  Thanks,
  1196.  
  1197. Tim Dorcey
  1198. T.Dorcey@cornell.edu
  1199.  
  1200. +++++++++++++++++++++++++++
  1201.  
  1202. >From rac@intrigue.com (Robert Coie)
  1203. Date: Mon, 31 Oct 1994 17:30:28 -0800
  1204. Organization: Intrigue Corporation
  1205.  
  1206. In article <393q4s$gu0@newsstand.cit.cornell.edu>, Tim Dorcey
  1207. <td11@cornell.edu> wrote:
  1208.  
  1209. > Does anyone know where the Microseconds system call is documented?  I
  1210. > stumbled upon it in <Timer.h>, but can't find mention of it anywhere
  1211. > else.  Can I assume it to be available on any machine with the "Revised
  1212. > Time Manager?"  I had already written my own timer using
  1213. > PrimeTime/RmvTime but would just as soon use the system call if I can be
  1214. > sure it is as widely applicable.  Thanks,
  1215.  
  1216. Microseconds has its own trap ($A193), and you can check for its
  1217. availability using your favorite TrapAvailable() function.  I think
  1218. there's an example in Think Reference.
  1219.  
  1220. The following is based on my own experience with Microseconds (about 6
  1221. months ago, and some of the infomation may be out of date).  Your mileage
  1222. may vary.
  1223.  
  1224.             Why Microseconds Is Not My Favorite Toolbox Routine 
  1225.  
  1226. 1) The System 7.1 stock version of it is not a good neighbor.  It stomps
  1227. on a nonvolatile register (90% sure it was A2).  This caused code that
  1228. worked on Think C to fail when compiled under CodeWarrior (Think wasn't
  1229. using A2, CodeWarrior used it for the C++ "this" pointer).
  1230.  
  1231. 2) Under some conditions, Microseconds (stock 7.1) will warp back in
  1232. time.  Successive calls are not guaranteed to return equal or greater
  1233. values than previous calls.
  1234.  
  1235. 3) Because of (2), QuickTime patches out Microseconds, so you will need to
  1236. test your code with and without QuickTime.  I fell for this one, because
  1237. the QuickTime version of Microseconds preserves A2, and all my machines
  1238. have QuickTime.  It was only when I started distributing to beta testers
  1239. that the bombs began bursting in air.  We ended up requiring QuickTime.
  1240.  
  1241. 4) Trying to eliminate trap dispatcher overhead by jumping directly to the
  1242. NGetTrapAddress hook will fail unless you are real careful.  Even though
  1243. it is prototyped pascal stack based, it does not follow standard Pascal
  1244. stack behavior.  On exit, A0 is the high word of a 64-bit value, and D0 is
  1245. the low word.  You will need to do your own assembly glue if you want to
  1246. avoid the trap dispatcher.
  1247.  
  1248. 5) It is emulated on the PowerPC. (at least under 7.1.2, anybody know
  1249. about 7.5?)  This will cause major performance degradation if you are
  1250. calling it frequently.  I had a program that used Microseconds in a
  1251. process scheduler, and it ran *slower* on a 6100 (with the app native)
  1252. than on a Quadra 700.
  1253.  
  1254. There was a thread on AppleLink late last year sometime about
  1255. high-resolution timing on the Power Mac, and I don't recall an official
  1256. recommendation from Apple about what to do.  A member of the QuickTime
  1257. team told me that they use the Microseconds trap for their timing even in
  1258. the native QT versions:  they just make sure to call it very
  1259. infrequently.  Before that conversation occurred, however, I had already
  1260. made up my mind to get real nonportable and hit up the RTC register on the
  1261. 601.  If anybody is interested, I can post that native Microseconds timer
  1262. to here and/or alt.sources.mac.  Note that I am *not* recommending this
  1263. option -- the RTCR is clearly documented as "601 only, off-limits, here be
  1264. dragons".
  1265.  
  1266. What are other c.s.m.p'ers doing for PowerPC high-resolution timing?
  1267.  
  1268. -- 
  1269. Robert Coie                              rac@intrigue.com
  1270. Implementor, Intrigue Corporation     AppleLink: INTRIGUE
  1271. if intrigue.com bounces, try rac%intrigue.com@internex.net
  1272.  
  1273. +++++++++++++++++++++++++++
  1274.  
  1275. >From resnick@uiuc.edu (Pete Resnick)
  1276. Date: Tue, 01 Nov 1994 16:05:05 -0600
  1277. Organization: University of Illinois at Urbana-Champaign
  1278.  
  1279. In article <393q4s$gu0@newsstand.cit.cornell.edu>, Tim Dorcey
  1280. <td11@cornell.edu> wrote:
  1281.  
  1282. > Does anyone know where the Microseconds system call is documented?
  1283.  
  1284. Inside Macintosh: Operating System Utilities. Page 4-49 in the Date, Time,
  1285. and Measurement Utilities chapter.
  1286.  
  1287. pr
  1288. -- 
  1289. Pete Resnick    (...so what is a mojo, and why would one be rising?)
  1290. Doctoral Student - Philosophy Department, Gregory Hall, UIUC
  1291. System manager - Cognitive Science Group, Beckman Institute, UIUC
  1292. Internet: resnick@uiuc.edu
  1293.  
  1294. +++++++++++++++++++++++++++
  1295.  
  1296. >From jim _reekes@quickmail.apple.com (Jim Reekes)
  1297. Date: Tue, 1 Nov 1994 19:48:29 GMT
  1298. Organization: Apple Computer, Inc.
  1299.  
  1300. In article <rac-3110941730280001@198.68.126.30>, rac@intrigue.com (Robert
  1301. Coie) wrote:
  1302.  
  1303. > In article <393q4s$gu0@newsstand.cit.cornell.edu>, Tim Dorcey
  1304. > <td11@cornell.edu> wrote:
  1305. > > Does anyone know where the Microseconds system call is documented?  I
  1306. > > stumbled upon it in <Timer.h>, but can't find mention of it anywhere
  1307. > > else.  Can I assume it to be available on any machine with the "Revised
  1308. > > Time Manager?"  I had already written my own timer using
  1309. > > PrimeTime/RmvTime but would just as soon use the system call if I can be
  1310. > > sure it is as widely applicable.  Thanks,
  1311. > Microseconds has its own trap ($A193), and you can check for its
  1312. > availability using your favorite TrapAvailable() function.  I think
  1313. > there's an example in Think Reference.
  1314. > The following is based on my own experience with Microseconds (about 6
  1315. > months ago, and some of the infomation may be out of date).  Your mileage
  1316. > may vary.
  1317. >             Why Microseconds Is Not My Favorite Toolbox Routine 
  1318. > 1) The System 7.1 stock version of it is not a good neighbor.  It stomps
  1319. > on a nonvolatile register (90% sure it was A2).  This caused code that
  1320. > worked on Think C to fail when compiled under CodeWarrior (Think wasn't
  1321. > using A2, CodeWarrior used it for the C++ "this" pointer).
  1322. > 2) Under some conditions, Microseconds (stock 7.1) will warp back in
  1323. > time.  Successive calls are not guaranteed to return equal or greater
  1324. > values than previous calls.
  1325. > 3) Because of (2), QuickTime patches out Microseconds, so you will need to
  1326. > test your code with and without QuickTime.  I fell for this one, because
  1327. > the QuickTime version of Microseconds preserves A2, and all my machines
  1328. > have QuickTime.  It was only when I started distributing to beta testers
  1329. > that the bombs began bursting in air.  We ended up requiring QuickTime.
  1330. > 4) Trying to eliminate trap dispatcher overhead by jumping directly to the
  1331. > NGetTrapAddress hook will fail unless you are real careful.  Even though
  1332. > it is prototyped pascal stack based, it does not follow standard Pascal
  1333. > stack behavior.  On exit, A0 is the high word of a 64-bit value, and D0 is
  1334. > the low word.  You will need to do your own assembly glue if you want to
  1335. > avoid the trap dispatcher.
  1336. > 5) It is emulated on the PowerPC. (at least under 7.1.2, anybody know
  1337. > about 7.5?)  This will cause major performance degradation if you are
  1338. > calling it frequently.  I had a program that used Microseconds in a
  1339. > process scheduler, and it ran *slower* on a 6100 (with the app native)
  1340. > than on a Quadra 700.
  1341.  
  1342.  
  1343. Add this to the list. You should NOT call this trap at interrupt level.
  1344. The timer is incremented by a Time Manager task (level 1 interrupt).
  1345. Therefore, the time does not change during all but a VBL interrupt.
  1346.  
  1347. - ---------------------------------------------------------------------
  1348. Jim Reekes, Polterzeitgeist   |     Macintosh Toolbox Engineering
  1349.                               |          Sound Manager Expert
  1350. Apple Computer, Inc.          | "All opinions expressed are mine, and do
  1351. 2 Infinite Loop  MS 302-3KS   |   not necessarily represent those of my
  1352. Cupertino, CA 95014           |       employer, Apple Computer Inc."
  1353.  
  1354. +++++++++++++++++++++++++++
  1355.  
  1356. >From creiman@netcom.com (Charlie Reiman)
  1357. Date: Mon, 7 Nov 1994 05:46:39 GMT
  1358. Organization: NETCOM On-line Communication Services (408 261-4700 guest)
  1359.  
  1360. resnick@uiuc.edu (Pete Resnick) writes:
  1361.  
  1362. >In article <393q4s$gu0@newsstand.cit.cornell.edu>, Tim Dorcey
  1363. ><td11@cornell.edu> wrote:
  1364.  
  1365. >> Does anyone know where the Microseconds system call is documented?
  1366.  
  1367. >Inside Macintosh: Operating System Utilities. Page 4-49 in the Date, Time,
  1368. >and Measurement Utilities chapter.
  1369.  
  1370. No one has mentioned the biggest pitfall of Microseconds: It's emulated
  1371. on a powermac. If you plan to poll this trap, you can expect abyssmal 
  1372. performance from a native application.
  1373.  
  1374. -- 
  1375. "You can't cancel the project! We already made the T-shirts!"
  1376. Charlie Reiman
  1377. creiman@netcom.com
  1378.  
  1379. ---------------------------
  1380.  
  1381. >From reed@medicine.wustl.edu (Thomas Reed)
  1382. Subject: NOTE TO ALL SCREEN SAVER AUTHORS
  1383. Date: Mon, 07 Nov 1994 11:05:56 -0600
  1384. Organization: Washington University
  1385.  
  1386. (Sorry for shouting...  ;-)
  1387.  
  1388. I'd like to request of all screen saver authors that they start to support
  1389. at least the SAVR Gestalt.  Doing this would increase the possibility of
  1390. having programs interact with screen savers, which I think is a very good
  1391. thing.
  1392.  
  1393. I can understand if folks didn't support the SAVR selector because they
  1394. didn't know how.  So, I've made my SAVR_code source, available at:
  1395.  
  1396.   ftp://thomas_mac.wustl.edu/Public/for_ftp/
  1397.  
  1398. ...along with a file, AfterDarkGestalt.h, which supports calling these
  1399. selectors from a program and stuff like that.
  1400.  
  1401. With a few modifications, my code could also easily support the SAVC
  1402. selector, which provides a way for a program to actually control the
  1403. screen saver.
  1404.  
  1405. Hopefully, I'll be able to provide a fat version of the code therein soon,
  1406. but right now, it's just 68K code.
  1407.  
  1408. If you would like to use this code, feel free.
  1409.  
  1410. -Thomas
  1411.  
  1412. =====================================================
  1413. Thomas Reed                     Washington University
  1414. reed@telesphere.wustl.edu           Medical School
  1415. reed@medicine.wustl.edu            Saint Louis, MO
  1416. - ---------------------------------------------------
  1417. Clothes make the man.  Naked people have little or no
  1418. influence on society.  -- Mark Twain
  1419. =====================================================
  1420.  
  1421. Opinions posted are not the opinions of Wash. U.
  1422.  
  1423. ---------------------------
  1424.  
  1425. >From mrogers@well.sf.ca.us (Michael Rogers)
  1426. Subject: Power Plant Documentation??
  1427. Date: 30 Oct 1994 02:42:43 GMT
  1428. Organization: The Whole Earth 'Lectronic Link, Sausalito, CA
  1429.  
  1430. Hello, All:
  1431.  
  1432. I've just got CodeWarrior Gold, and am pretty dismayed at the
  1433. documentation for PowerPlant.  Is "PowerPlant Cookbook" all there
  1434. is?  Because it isn't much...
  1435.  
  1436. Mike
  1437. -- 
  1438. Dilbert for President!  Dogbert for First Dog!
  1439.  
  1440. +++++++++++++++++++++++++++
  1441.  
  1442. >From nick+@pitt.edu ( nick.c )
  1443. Date: Sat, 29 Oct 1994 23:40:13 -0400
  1444. Organization: The Pitt, Chemistry
  1445.  
  1446. In article <38v173$n5v@nkosi.well.com>, mrogers@well.sf.ca.us (Michael
  1447. Rogers) wrote:
  1448.  
  1449. > I've just got CodeWarrior Gold, and am pretty dismayed at the
  1450. > documentation for PowerPlant.  Is "PowerPlant Cookbook" all there
  1451. > is?  Because it isn't much...
  1452.  
  1453.  
  1454.    'Fraid that's it.  However, I've heard rumors to the efect that
  1455.      more info on PP will be included on CW 5 or perhaps with the
  1456.      netborne update for PP that's lagging behind the 4.5 release,
  1457.      but expected any day now.  No details, no guarantees.
  1458.  
  1459.    Also, I'm told many of the classes are documented at:
  1460.  
  1461.         http://www.iquest.com/~fairgate/cw/pplant.html
  1462.  
  1463.  
  1464.  Internet: nick+@pitt.edu            _/   _/  _/  _/_/_/   _/   _/  
  1465.    eWorld: nick                     _/_/ _/  _/  _/   _/  _/_/_/ 
  1466.       CIS: 71232,766               _/ _/_/  _/  _/       _/ _/    
  1467.      http://www.pitt.edu/~nick/   _/   _/  _/   _/_/_/  _/   _/     
  1468.                     
  1469.  
  1470. +++++++++++++++++++++++++++
  1471.  
  1472. >From Darrin Cardani <Darrin.Cardani@AtlantaGA.NCR.COM>
  1473. Date: Wed, 2 Nov 1994 19:28:13 GMT
  1474. Organization: AT&T Global Information Solutions, Atlanta
  1475.  
  1476. >In article <nick+-2910942340130001@ehdup-g-10.slip.net.pitt.edu>  nick.c  
  1477. writes: 
  1478. >In article <38v173$n5v@nkosi.well.com>, mrogers@well.sf.ca.us (Michael
  1479. >Rogers) wrote:
  1480. >>[...] Is "PowerPlant Cookbook" all there
  1481. >> is?  Because it isn't much...
  1482. >
  1483. >
  1484. >   'Fraid that's it.  However, I've heard rumors to the efect that
  1485. >     more info on PP will be included on CW 5 or perhaps with the
  1486. >     netborne update for PP that's lagging behind the 4.5 release,
  1487. >     but expected any day now.                    >
  1488.  
  1489. Thank God! I just started trying to write my first program using
  1490. PowerPlant, and I'm lost! Eagerly awaiting more docs.
  1491.  
  1492. Darrin
  1493.  
  1494.  
  1495.  
  1496.  
  1497.  
  1498.  
  1499.  
  1500. +++++++++++++++++++++++++++
  1501.  
  1502. >From avirr@well.sf.ca.us (Avi Rappoport)
  1503. Date: 3 Nov 1994 19:06:21 GMT
  1504. Organization: Metrowerks, Inc.
  1505.  
  1506. Darrin Cardani <Darrin.Cardani@AtlantaGA.NCR.COM> writes:
  1507.  
  1508. >>In article <nick+-2910942340130001@ehdup-g-10.slip.net.pitt.edu>  nick.c  
  1509. >writes: 
  1510. >>In article <38v173$n5v@nkosi.well.com>, mrogers@well.sf.ca.us (Michael
  1511. >>Rogers) wrote:
  1512. >>>[...] Is "PowerPlant Cookbook" all there
  1513. >>> is?  Because it isn't much...
  1514. >>
  1515. >>
  1516. >>   'Fraid that's it.  However, I've heard rumors to the efect that
  1517. >>     more info on PP will be included on CW 5 or perhaps with the
  1518. >>     netborne update for PP that's lagging behind the 4.5 release,
  1519. >>     but expected any day now.                    >
  1520.  
  1521. >Thank God! I just started trying to write my first program using
  1522. >PowerPlant, and I'm lost! Eagerly awaiting more docs.
  1523.  
  1524. >Darrin
  1525.  
  1526. True that there will be more docs on the January CW5 disc, but I doubt 
  1527. that we'll release them before that.  Sorry.
  1528.  
  1529.  
  1530.  
  1531.  
  1532.  
  1533.  
  1534. -- 
  1535. Avi Rappoport                             AviRr@metrowerks.com 
  1536. User Advocate                             AviRr@aol.com 
  1537. Online Documentation Lead                 AviRr@eworld.com
  1538. Metrowerks, Inc.                          AviRr@well.sf.ca.us
  1539.  
  1540. +++++++++++++++++++++++++++
  1541.  
  1542. >From mwron@aol.com (MW Ron)
  1543. Date: 3 Nov 1994 17:24:07 -0500
  1544. Organization: America Online, Inc. (1-800-827-6364)
  1545.  
  1546. In article <CynnF1.5xJ@attatl.AtlantaGA.NCR.COM>, Darrin Cardani
  1547. <Darrin.Cardani@AtlantaGA.NCR.COM> writes:
  1548.  
  1549. >>Thank God! I just started trying to write my first program using
  1550. PowerPlant, and I'm lost! Eagerly awaiting more docs.
  1551.  
  1552. Darrin,
  1553.    The best method for right now is to just get into one of the samples
  1554. and play with it.  We will have much better documentation with CW 5 with
  1555. the fast turn around and evolution of PowerPlant, it simply was not
  1556. practical to write any tutorials or references until now.
  1557.  
  1558. Ron Liechty
  1559. MWRon@metrowerks.com
  1560. Metrowerks Inc.
  1561.  
  1562. +++++++++++++++++++++++++++
  1563.  
  1564. >From nick+@pitt.edu ( nick.c )
  1565. Date: Thu, 03 Nov 1994 19:18:51 -0500
  1566. Organization: The Pitt, Chemistry
  1567.  
  1568. In article <39bnu7$qt1@newsbf01.news.aol.com>, mwron@aol.com (MW Ron) wrote:
  1569.  
  1570. >    The best method for right now is to just get into one of the samples
  1571. > and play with it.  We will have much better documentation with CW 5 with
  1572. > the fast turn around and evolution of PowerPlant, it simply was not
  1573. > practical to write any tutorials or references until now.
  1574.  
  1575. Ron:
  1576.  
  1577.    Simple question (I'm trying to figure out PP too :-), what is the
  1578.      purpose of the URegister class?  I realize it has something
  1579.      to do with telling PP you've got some custom classes - but I'm
  1580.      unsure of *why* you need to tell PP this.  TIA.
  1581.  
  1582.  
  1583.  Internet: nick+@pitt.edu            _/   _/  _/  _/_/_/   _/   _/  
  1584.    eWorld: nick                     _/_/ _/  _/  _/   _/  _/_/_/ 
  1585.       CIS: 71232,766               _/ _/_/  _/  _/       _/ _/    
  1586.      http://www.pitt.edu/~nick/   _/   _/  _/   _/_/_/  _/   _/     
  1587.                     
  1588.  
  1589. +++++++++++++++++++++++++++
  1590.  
  1591. >From h+@nada.kth.se (Jon W{tte)
  1592. Date: Fri, 04 Nov 1994 13:37:36 +0100
  1593. Organization: Royal Institute of Something or other
  1594.  
  1595. In article <nick+-0311941918510001@ehdup-f-5.slip.net.pitt.edu>,
  1596. nick+@pitt.edu ( nick.c ) wrote:
  1597.  
  1598. >   Simple question (I'm trying to figure out PP too :-), what is the
  1599. >     purpose of the URegister class?  I realize it has something
  1600. >     to do with telling PP you've got some custom classes - but I'm
  1601. >     unsure of *why* you need to tell PP this.  TIA.
  1602.  
  1603. PowerPlant doesn't provide new_by_name() or member() as the TCL 
  1604. does. In order to create classes from a stream though (view 
  1605. resources for example) it has to have SOME way of mapping some 
  1606. kind of name to a newly instantiated object of that class. 
  1607. URegistrar::RegisterClass() simply establishes a mapping from a 
  1608. constant used by the view editor, or your, to a function that 
  1609. instantiates an object of the class associated with that 
  1610. constant.
  1611.  
  1612. Cheers,
  1613.  
  1614.                         / h+
  1615.  
  1616.  
  1617. --
  1618.   Jon Wätte (h+@nada.kth.se), Hagagatan 1, 113 48 Stockholm, Sweden
  1619.  
  1620.   CFM 68k - solutions to yesterdays problems, tomorrow!
  1621.  
  1622.  
  1623. +++++++++++++++++++++++++++
  1624.  
  1625. >From spencerl@crl.com (Spencer Low)
  1626. Date: Fri, 04 Nov 1994 17:02:42 -0800
  1627. Organization: LowTek Creations
  1628.  
  1629. In article <nick+-0311941918510001@ehdup-f-5.slip.net.pitt.edu>,
  1630. nick+@pitt.edu ( nick.c ) wrote:
  1631. >    Simple question (I'm trying to figure out PP too :-), what is the
  1632. >      purpose of the URegister class?  I realize it has something
  1633. >      to do with telling PP you've got some custom classes - but I'm
  1634. >      unsure of *why* you need to tell PP this.  TIA.
  1635.  
  1636. If I remember correctly, the URegister class lets you associate a function
  1637. with a class so that the class can be instantiated from resources. Like
  1638. you could associate a function 'CreateMySpecialDialogFromStream' with the
  1639. type 'MySp' to create a dialog from a resource.
  1640.  
  1641. Spencer (check out the PowerPlant stuff at http://www.iquest.com/~fairgate)
  1642. ________________________________________________________________________
  1643.   Spencer "MaxRAM" Low ------ LowTek Creations ----- spencerl@crl.com
  1644.  
  1645. +++++++++++++++++++++++++++
  1646.  
  1647. >From ghd@aol.com (GHD)
  1648. Date: 6 Nov 1994 22:35:00 -0500
  1649. Organization: America Online, Inc. (1-800-827-6364)
  1650.  
  1651. In article <nick+-0311941918510001@ehdup-f-5.slip.net.pitt.edu>,
  1652. nick+@pitt.edu ( nick.c ) writes:
  1653.  
  1654. >    Simple question (I'm trying to figure out PP too :-), what is the 
  1655. >      purpose of the URegister class? I realize it has something 
  1656. >      to do with telling PP you've got some custom classes - but I'm 
  1657. >      unsure of *why* you need to tell PP this. TIA.
  1658.  
  1659. The URegister class maintains a table of Class ID's and function pointers.
  1660. This table is used when you create objects from a 'PPob' resource. PP
  1661. Constructor creates 'PPob' resources for View hierarchies; you can also
  1662. use Rez and Resorcerer to directly edit 'PPob' resources.
  1663.  
  1664. Since CW does not have a "new by name" feature (I don't think this feature
  1665. is in the ANSI C++ draft standard either), you need a way to create an
  1666. object from an external text description. PowerPlant does this by mapping
  1667. a Class ID (four-character code) to a pointer to a function that returns
  1668. an object of that class. You must explicitly provide this association
  1669. between Class ID and function pointer by calling
  1670. URegistrar::RegisterClass() for every class whose objects you wish to
  1671. create from 'PPob' resources.
  1672.  
  1673. -- Greg Dow
  1674. -- metrowerks
  1675.  
  1676. ---------------------------
  1677.  
  1678. >From d8berber@sisko.sbcc.cc.ca.us ()
  1679. Subject: Shareware successes?
  1680. Date: 27 Oct 1994 01:24:58 GMT
  1681. Organization: Santa Barbara City College
  1682.  
  1683.  
  1684. I'm new to Macintosh programming and I am curious to know whether people
  1685. who are releasing their software as shareware are making any money. What
  1686. do you do to 'coax' people into sending in that payment? A stern message in
  1687. a README file, a serial number scheme, annoying messages that show up when
  1688. the program is launched or when the user selects About..., software that
  1689. 'self-destructs' after a certain number of uses or time limit? Share your
  1690. experiences with the rest of us!
  1691.  
  1692. +++++++++++++++++++++++++++
  1693.  
  1694. >From andrewwelc@aol.com (AndrewWelc)
  1695. Date: 27 Oct 1994 07:57:06 -0400
  1696. Organization: America Online, Inc. (1-800-827-6364)
  1697.  
  1698. In article <38mvha$2bl@coyote.rain.org>, d8berber@sisko.sbcc.cc.ca.us ()
  1699. writes:
  1700.  
  1701. > I'm new to Macintosh programming and I am curious to know whether
  1702. > people who are releasing their software as shareware are making any
  1703. > money. What do you do to 'coax' people into sending in that payment?
  1704. > A stern message in a README file, a serial number scheme, annoying
  1705. > messages that show up when the program is launched or when the user
  1706. > selects About..., software that 'self-destructs' after a certain
  1707. > number of uses or time limit? Share your experiences with the rest
  1708. > of us!
  1709.  
  1710. While it wouldn't be proper to release sales figues, I can tell you that
  1711. nothing increases your revenues like releasing a quality product.
  1712.  
  1713. After that, making it easy for folks to register (credit card orders, 800
  1714. number) a registration and reminder system, and providing good support are
  1715. all factors as well.
  1716.  
  1717. Cheers,
  1718.  
  1719. Andrew Welch
  1720. Ambrosia Software, Inc.
  1721.  
  1722. +++++++++++++++++++++++++++
  1723.  
  1724. >From peter.lewis@info.curtin.edu.au (Peter N Lewis)
  1725. Date: Fri, 28 Oct 1994 10:51:14 +0800
  1726. Organization: NCRPDA, Curtin University
  1727.  
  1728. In article <38mvha$2bl@coyote.rain.org>, d8berber@sisko.sbcc.cc.ca.us wrote:
  1729.  
  1730. >I'm new to Macintosh programming and I am curious to know whether people
  1731. >who are releasing their software as shareware are making any money. What
  1732.  
  1733. Yes.  I am (reasonable amounts anyway :-), and I presume Aladdin and
  1734. Ambrosia are, and there are certainly others.
  1735.  
  1736. >do you do to 'coax' people into sending in that payment? 
  1737.  
  1738. Write good software and make it easy to pay for. 
  1739.  
  1740. I use a checkbox in the prefs window "I Paid", and change an about box
  1741. strings from "Please Register" to "Thanks for Registering" and stop the
  1742. non-modal about box from apearing at startup.
  1743.  
  1744. Aladdin and Ambrosia use a serial number scheme.  Aladdin unlocks extra
  1745. features, I don't think Ambrosia do anything.  
  1746.  
  1747. Enjoy,
  1748.    Peter.
  1749. -- 
  1750. Peter N Lewis <peter.lewis@info.curtin.edu.au> - Macintosh TCP fingerpainter
  1751. FTP my programs from redback.cs.uwa.edu.au:Others/PeterLewis/ or
  1752. amug.org:pub/peterlewis/ or nic.switch.ch:software/mac/peterlewis/
  1753.  
  1754. +++++++++++++++++++++++++++
  1755.  
  1756. >From Kevin.R.Boyce@gsfc.nasa.gov (Kevin R. Boyce)
  1757. Date: Fri, 28 Oct 1994 13:09:49 -0400
  1758. Organization: NASA Goddard Space Flight Center -- Greenbelt, Maryland USA
  1759.  
  1760. In article <peter.lewis-2810941051140001@rocky.curtin.edu.au>, 
  1761. peter.lewis@info.curtin.edu.au (Peter N Lewis) wrote:
  1762.  
  1763. >In article <38mvha$2bl@coyote.rain.org>, d8berber@sisko.sbcc.cc.ca.us wrote:
  1764. >
  1765. >>I'm new to Macintosh programming and I am curious to know whether people
  1766. >>who are releasing their software as shareware are making any money. What
  1767. >
  1768. >Yes.  I am (reasonable amounts anyway :-), and I presume Aladdin and
  1769. >Ambrosia are, and there are certainly others.
  1770. >
  1771. >>do you do to 'coax' people into sending in that payment? 
  1772. >
  1773. >Write good software and make it easy to pay for. 
  1774. >
  1775. >I use a checkbox in the prefs window "I Paid", and change an about box
  1776. >strings from "Please Register" to "Thanks for Registering" and stop the
  1777. >non-modal about box from apearing at startup.
  1778.  
  1779. Peter, I wonder whether you forgot a very important thing:  invent a price
  1780. for site licenses, and put it in your documentation.  You could say better
  1781. than anyone else what fraction of your money comes from site licenses, but
  1782. I suspect it's nontrivial.  I know that we at Goddard now have licenses
  1783. for Network Time, Fetch, MacHTTP, and something else I've forgotten, and
  1784. there's a big P.O. heading toward Oz now.  And I bet in every case the
  1785. site license was substantially more money than the total of users on site
  1786. who would have registered.
  1787.  
  1788. So can I check the "I paid" box now, or do I have to wait until you get
  1789. the PO and send it back, and purchasing cuts your check?  :-)
  1790. -- 
  1791. Kevin      Kevin.R.Boyce@gsfc.nasa.gov
  1792.   Hope that the music turns you
  1793.   On like it's turning on me.
  1794.      --Hatfield and the North
  1795.  
  1796. +++++++++++++++++++++++++++
  1797.  
  1798. >From quinn@cs.uwa.edu.au (Quinn "The Eskimo!")
  1799. Date: Mon, 31 Oct 1994 11:02:39 +0800
  1800. Organization: Department of Computer Science, The University of Western Australia
  1801.  
  1802. In article <Kevin.R.Boyce-2810941309490001@xrsmc4.gsfc.nasa.gov>,
  1803. Kevin.R.Boyce@gsfc.nasa.gov (Kevin R. Boyce) wrote:
  1804.  
  1805. >So can I check the "I paid" box now, or do I have to wait until you get
  1806. >the PO and send it back, and purchasing cuts your check?  :-)
  1807.  
  1808. My policy on this is that if I've paid, I will check the "I Paid" box.  If
  1809. the money doesn't make it to the author, that's tough on them.  They
  1810. should've support VISA registration.
  1811.  
  1812. Share and Enjoy.
  1813. --
  1814. Quinn "The Eskimo!"      "I wasn't the one who fired the heat seeking
  1815.                           population annihilator out the window!"
  1816.   And I have the hacking skill to support my policy (:
  1817.  
  1818. +++++++++++++++++++++++++++
  1819.  
  1820. >From lamcw@aston.ac.uk (CW LAM)
  1821. Date: Mon, 31 Oct 1994 12:13:48 GMT
  1822. Organization: Aston University
  1823.  
  1824. 'd8berber@sisko.sbcc.cc.ca.us' wrote:
  1825.  
  1826. ;I'm new to Macintosh programming and I am curious to know whether people
  1827. ;who are releasing their software as shareware are making any money. What
  1828. ;do you do to 'coax' people into sending in that payment? A stern message in
  1829. ;a README file, a serial number scheme, annoying messages that show up when
  1830. ;the program is launched or when the user selects About..., software that
  1831. ;'self-destructs' after a certain number of uses or time limit? Share your
  1832. ;experiences with the rest of us!
  1833.  
  1834.  
  1835. the best way is to produce something that's useful in the first place. then
  1836. if you really want to squeeze blood out a stone, chop out half the features,
  1837. stating that they only get them when they register. some people may then
  1838. bother to register, most won't. promises of enhanced versions and full
  1839. documentation may also help.
  1840.  
  1841. i may be wrong but my guess is that most freeware/shareware stuff is written
  1842. first for personal use and then made available to the public. i've heard 
  1843. some people say they have around a 1000 registered users. well at $10 a time,
  1844. it doesn't take a calculator to work out the net profit.
  1845.  
  1846.  
  1847. chris lam,
  1848. aston university,
  1849. u.k.
  1850.  
  1851.  
  1852.  
  1853. +++++++++++++++++++++++++++
  1854.  
  1855. >From jbeeghly@u.washington.edu (Jeff Beeghly)
  1856. Date: 31 Oct 1994 18:19:16 GMT
  1857. Organization: University of Washington
  1858.  
  1859. quinn@cs.uwa.edu.au (Quinn "The Eskimo!") writes:
  1860. >My policy on this is that if I've paid, I will check the "I Paid" box.  If
  1861. >the money doesn't make it to the author, that's tough on them.  They
  1862. >should've support VISA registration.
  1863.  
  1864. >Share and Enjoy.
  1865. >--
  1866. >Quinn "The Eskimo!"      "I wasn't the one who fired the heat seeking
  1867.  
  1868.  
  1869. Have you ever looked into getting a VISA (no, not the kind where you can 
  1870. PURCHASE goods from, but the kind where you get money)?  I agree, VISA is 
  1871. very easy on the register, and ideally, I'd like to support VISA as 
  1872. well.  The problem:  $$$.  Not only does it take a lot of money to get a 
  1873. VISA account set up, but there is a "minimum" monthly charge (which is 
  1874. quite a bit) and you need to guarente VISA that you will have at least 
  1875. X amount of business each month.  If you are a small shareware author, 
  1876. VISA is not feasible.  The worst part about it though is that without 
  1877. VISA, it makes internalional payments VERY difficult.
  1878.  
  1879.  
  1880.  
  1881.  
  1882.  
  1883. +++++++++++++++++++++++++++
  1884.  
  1885. >From h+@nada.kth.se (Jon W{tte)
  1886. Date: Mon, 31 Oct 1994 21:15:25 +0100
  1887. Organization: Royal Institute of Something or other
  1888.  
  1889. In article <quinn-3110941102390001@mac161.cs.uwa.oz.au>,
  1890. quinn@cs.uwa.edu.au (Quinn "The Eskimo!") wrote:
  1891.  
  1892. >My policy on this is that if I've paid, I will check the "I Paid" box.  If
  1893. >the money doesn't make it to the author, that's tough on them.  They
  1894. >should've support VISA registration.
  1895.  
  1896. NetCash. info@agents.com. 'nuff said :-)
  1897.  
  1898. Cheers,
  1899.  
  1900.                     / h+
  1901.  
  1902.  
  1903. --
  1904.   Jon Wätte (h+@nada.kth.se), Hagagatan 1, 113 48 Stockholm, Sweden
  1905.  
  1906.     Technology is not the problem;
  1907.     therefore, abondoning technology is not the answer.
  1908.  
  1909.  
  1910. +++++++++++++++++++++++++++
  1911.  
  1912. >From nick+@pitt.edu ( nick.c )
  1913. Date: Mon, 31 Oct 1994 17:02:05 -0500
  1914. Organization: The Pitt, Chemistry
  1915.  
  1916. In article <AADB0EED9668BF868@klkmac009.nada.kth.se>, h+@nada.kth.se (Jon
  1917. W{tte) wrote:
  1918.  
  1919. > NetCash. info@agents.com. 'nuff said :-)
  1920.  
  1921.    Don't those guys charge something like 20% to buy net cash?
  1922.      Doesn't seem like a reasonable option to me (yet).
  1923.  
  1924.  
  1925.  Internet: nick+@pitt.edu            _/   _/  _/  _/_/_/   _/   _/  
  1926.    eWorld: nick                     _/_/ _/  _/  _/   _/  _/_/_/ 
  1927.       CIS: 71232,766               _/ _/_/  _/  _/       _/ _/    
  1928.      http://www.pitt.edu/~nick/   _/   _/  _/   _/_/_/  _/   _/     
  1929.                     
  1930.  
  1931. +++++++++++++++++++++++++++
  1932.  
  1933. >From edw@distant.com (Ed Watkeys)
  1934. Date: Mon, 31 Oct 1994 19:08:19 -0500
  1935. Organization: 35th and Baring
  1936.  
  1937. In article <nick+-3110941702050001@ehdup-f-3.slip.net.pitt.edu>,
  1938. nick+@pitt.edu ( nick.c ) wrote:
  1939.  
  1940. > In article <AADB0EED9668BF868@klkmac009.nada.kth.se>, h+@nada.kth.se (Jon
  1941. > W{tte) wrote:
  1942. > > 
  1943. > > NetCash. info@agents.com. 'nuff said :-)
  1944. > > 
  1945. >    Don't those guys charge something like 20% to buy net cash?
  1946. >      Doesn't seem like a reasonable option to me (yet).
  1947.  
  1948. They have a new kind of currency, NetCash $US, and there's a 2% fee to get
  1949. it, and a 2% fee to cash it. It's a pretty good system, IMHO. A lot better
  1950. than sending junk in envelopes via snail mail. Read the info -- there's
  1951. little reason to not support it.
  1952.  
  1953. Ed
  1954.  
  1955. -- 
  1956. Ed Watkeys                     edw@infonautics.com  Infonautics Corp.
  1957. Nihilist-Software Engineer          edw@eworld.com  eWorld/NewtonMail
  1958. Infonautics Corporation            edw@distant.com  35th and Baring
  1959.  
  1960. +++++++++++++++++++++++++++
  1961.  
  1962. >From quinn@cs.uwa.edu.au (Quinn "The Eskimo!")
  1963. Date: Tue, 01 Nov 1994 10:05:00 +0800
  1964. Organization: Department of Computer Science, The University of Western Australia
  1965.  
  1966. In article <393cf4$f3@nntp1.u.washington.edu>, jbeeghly@u.washington.edu
  1967. (Jeff Beeghly) wrote:
  1968.  
  1969. >Have you ever looked into getting a VISA?
  1970.  
  1971. Yeah, I know exactly how painful it is, Peter Lewis moans about it quite
  1972. literally every day.  It's not the point though.  If you want to be a
  1973. successful shareware author then credit card registration is a starting
  1974. point IMHO.  Otherwise you're ignoring at least 50% of your market ('cause
  1975. 50% of Macs are sold outside the US) and probably a lot more ('cause more
  1976. people are going to register if they can do it via Email).
  1977.  
  1978. Share and Enjoy.
  1979. --
  1980. Quinn "The Eskimo!"     Pez:      "What's with all the happy sounds?"
  1981.                         Giggywig: "They're giddy with fear!"
  1982.  
  1983. +++++++++++++++++++++++++++
  1984.  
  1985. >From greeny@lanl.gov (J. S. Greenfield)
  1986. Date: 1 Nov 1994 03:20:21 GMT
  1987. Organization: Los Alamos National Laboratory
  1988.  
  1989. In article <AADB0EED9668BF868@klkmac009.nada.kth.se> h+@nada.kth.se (Jon W{tte) writes:
  1990.  
  1991. >>My policy on this is that if I've paid, I will check the "I Paid" box.  If
  1992. >>the money doesn't make it to the author, that's tough on them.  They
  1993. >>should've support VISA registration.
  1994. >
  1995. >NetCash. info@agents.com. 'nuff said :-)
  1996.  
  1997. Horrendously insecure.  NetThief steals your NetCash.  'nuff said. :(
  1998.  
  1999.  
  2000. -- 
  2001. J. S. Greenfield                                      greeny@thelair.zynet.com
  2002. (So what were you expecting?
  2003. A Gorilla?!)                        "What's the difference between an orange?" 
  2004.  
  2005. +++++++++++++++++++++++++++
  2006.  
  2007. >From greeny@lanl.gov (J. S. Greenfield)
  2008. Date: 1 Nov 1994 03:25:36 GMT
  2009. Organization: Los Alamos National Laboratory
  2010.  
  2011. In article <edw-3110941908190001@distant.com> edw@distant.com (Ed Watkeys) writes:
  2012.  
  2013. >> > NetCash. info@agents.com. 'nuff said :-)
  2014. >> > 
  2015. >> 
  2016. >>    Don't those guys charge something like 20% to buy net cash?
  2017. >>      Doesn't seem like a reasonable option to me (yet).
  2018. >
  2019. >They have a new kind of currency, NetCash $US, and there's a 2% fee to get
  2020. >it, and a 2% fee to cash it. It's a pretty good system, IMHO. A lot better
  2021. >than sending junk in envelopes via snail mail. Read the info -- there's
  2022. >little reason to not support it.
  2023.  
  2024. Actually, there's a very big reason not to support it--it is terribly
  2025. insecure.
  2026.  
  2027. No doubt, the time is right for NetCash.  Unfortunately, Software Agents
  2028. decided to give it a go before they had worked out a viable plan for insuring
  2029. the integrity of the system.
  2030.  
  2031.  
  2032. -- 
  2033. J. S. Greenfield                                      greeny@thelair.zynet.com
  2034. (So what were you expecting?
  2035. A Gorilla?!)                        "What's the difference between an orange?" 
  2036.  
  2037. +++++++++++++++++++++++++++
  2038.  
  2039. >From andrewwelc@aol.com (AndrewWelc)
  2040. Date: 1 Nov 1994 01:18:08 -0500
  2041. Organization: America Online, Inc. (1-800-827-6364)
  2042.  
  2043. In article <393cf4$f3@nntp1.u.washington.edu>, jbeeghly@u.washington.edu
  2044. (Jeff Beeghly) writes:
  2045.  
  2046. >  I agree, VISA is  very easy on the register, and ideally, I'd like
  2047. > to support VISA as  well.  The problem:  $$$.  Not only does it take
  2048. > a lot of money to get a  VISA account set up, but there is a
  2049. > "minimum" monthly charge (which is  quite a bit) and you need to
  2050. > guarente VISA that you will have at least  X amount of business each
  2051. > month.  If you are a small shareware author,  VISA is not feasible. 
  2052. > The worst part about it though is that without  VISA, it makes
  2053. > internalional payments VERY difficult.
  2054.  
  2055. Actually it doesn't cost money to get a Visa/MasterCard merchant account
  2056. setup -- it cost us a small application fee.  Also we have no monthly
  2057. minimum, and we only pay a rental charge on the unit we use, plus a small
  2058. percentage of sales.
  2059.  
  2060. The biggest problem is getting a bank to even talk to you about setting up
  2061. a merchant account.  The vast majority of banks won't even talk to you if
  2062. you're doing a mail order business -- which is what you are doing.
  2063.  
  2064. So then you're forced to go with a provider, who lets you use their
  2065. merchant account.  This is of course more costly, but it is the only
  2066. alternative if you can't get a merchant number.
  2067.  
  2068. Cheers,
  2069.  
  2070. Andrew Welch
  2071. Ambrosia Software, Inc.
  2072.  
  2073. +++++++++++++++++++++++++++
  2074.  
  2075. >From gasser@masg1.epfl.ch (Laurent Gasser)
  2076. Date: 1 Nov 1994 14:04:03 GMT
  2077. Organization: Ecole Polytechnique Federale de Lausanne
  2078.  
  2079. Many have reported difficulties to be accepted as VISA individual 
  2080. debitors.  That's one touchy subject about shareware: getting the
  2081. money to the author, not to the bank making the transaction.
  2082.  
  2083. In article <quinn-3110941102390001@mac161.cs.uwa.oz.au>, quinn@cs.uwa.edu.au (Quinn "The Eskimo!") writes:
  2084. |> My policy on this is that if I've paid, I will check the "I Paid" box.  If
  2085. |> the money doesn't make it to the author, that's tough on them.  They
  2086. |> should've support VISA registration.
  2087. |> 
  2088. |> Share and Enjoy.
  2089. |> --
  2090. |> Quinn "The Eskimo!"      "I wasn't the one who fired the heat seeking
  2091. |>                           population annihilator out the window!"
  2092. |>   And I have the hacking skill to support my policy (:
  2093.  
  2094. -- 
  2095. Laurent Gasser (gasser@dma.epfl.ch)
  2096. Computers do not solve problems, they execute solutions.
  2097.  
  2098. I know very few ideas worth dying for, none is worth killing.
  2099.  
  2100. +++++++++++++++++++++++++++
  2101.  
  2102. >From mat@idm.com (Mark A Thalman)
  2103. Date: Tue, 1 Nov 1994 13:49:04 GMT
  2104. Organization: Information Data Management
  2105.  
  2106. AndrewWelc (andrewwelc@aol.com) wrote:
  2107. [Snip]
  2108. > ...nothing increases your revenues like releasing a quality product.
  2109.  
  2110. He should know about releasing a quality product.  I'm a dedicated
  2111. Maelstrom addict.
  2112.  
  2113. > After that, making it easy for folks to register (credit card orders, 800
  2114. > number) a registration and reminder system, and providing good support are
  2115.                              ^^^^^^^^^^^^^^^
  2116. Unfortunately, Maelstrom's doesn't go away when you send in your fee, but
  2117. at least I don't have to press buttons that change their meaning  at
  2118. random (are you listening Aladdin?).
  2119. --
  2120. Mark Thalman;mat@idm.com;mat@mcs.com/*clever quote provided by "fortune"*/
  2121. Beware of low-flying butterflies.
  2122.  
  2123. +++++++++++++++++++++++++++
  2124.  
  2125. >From mspace@netcom.com (Brian Hall)
  2126. Date: Tue, 1 Nov 1994 21:10:20 GMT
  2127. Organization: Mark/Space Softworks
  2128.  
  2129. andrewwelc@aol.com (AndrewWelc) writes:
  2130.  
  2131. >In article <393cf4$f3@nntp1.u.washington.edu>, jbeeghly@u.washington.edu
  2132. >(Jeff Beeghly) writes:
  2133.  
  2134. >>  I agree, VISA is  very easy on the register, and ideally, I'd like
  2135. >> to support VISA as  well.  The problem:  $$$.  Not only does it take
  2136. >> a lot of money to get a  VISA account set up, but there is a
  2137. >> "minimum" monthly charge (which is  quite a bit) and you need to
  2138. >> guarente VISA that you will have at least  X amount of business each
  2139. >> month.  If you are a small shareware author,  VISA is not feasible. 
  2140. >> The worst part about it though is that without  VISA, it makes
  2141. >> internalional payments VERY difficult.
  2142.  
  2143. >Actually it doesn't cost money to get a Visa/MasterCard merchant account
  2144. >setup -- it cost us a small application fee.  Also we have no monthly
  2145. >minimum, and we only pay a rental charge on the unit we use, plus a small
  2146. >percentage of sales.
  2147.  
  2148. >The biggest problem is getting a bank to even talk to you about setting up
  2149. >a merchant account.  The vast majority of banks won't even talk to you if
  2150. >you're doing a mail order business -- which is what you are doing.
  2151.  
  2152. >So then you're forced to go with a provider, who lets you use their
  2153. >merchant account.  This is of course more costly, but it is the only
  2154. >alternative if you can't get a merchant number.
  2155.  
  2156. Most prviders also handle shipping, which is handy.
  2157.  
  2158. Shareware folks can get merchant visa accounts from several sources. Check
  2159. out the various BBS magazines (CONNECT, BBS Caller Digest, Boardwatch, etc)
  2160. for ads.
  2161. -- 
  2162. __________________________________________________________________________
  2163. Brian Hall, Mark/Space Softworks               Internet: mspace@netcom.com
  2164. Communicate, PageNOW!, CTB Tools                 AppleLink, AOL: MARKSPACE
  2165. Macintosh connectivity software.   Goodies at ftp.netcom.com in pub/mspace
  2166.  
  2167. +++++++++++++++++++++++++++
  2168.  
  2169. >From h+@nada.kth.se (Jon W{tte)
  2170. Date: Wed, 02 Nov 1994 00:05:48 +0100
  2171. Organization: Royal Institute of Something or other
  2172.  
  2173. In article <394c5l$7au@newshost.lanl.gov>,
  2174. greeny@lanl.gov (J. S. Greenfield) wrote:
  2175.  
  2176. >Horrendously insecure.  NetThief steals your NetCash.  'nuff said. :(
  2177.  
  2178. Tell me more?
  2179.  
  2180. As far as I know, the only way of stealing NetCash would be to 
  2181. have access to the raw network packets, AND filter through each 
  2182. and every one. That's of course doable, but anyone doing it on 
  2183. a larger scale would be found out.
  2184.  
  2185. However, if you use encrypted mail (like with PGP) this isn't a 
  2186. problem at all.
  2187.  
  2188. Cheers,
  2189.  
  2190.                         / h+
  2191.  
  2192.  
  2193. --
  2194.   Jon Wätte (h+@nada.kth.se), Hagagatan 1, 113 48 Stockholm, Sweden
  2195.   "After I first used the Mac, I had a dream in which I would walk up to
  2196.    people, touch them, and they'd turn black. Then I could talk to them."
  2197.                      -- Anon
  2198.  
  2199.  
  2200. +++++++++++++++++++++++++++
  2201.  
  2202. >From Grant Hulbert <guidude@netcom.com>
  2203. Date: 2 Nov 1994 03:47:17 GMT
  2204. Organization: GUI Dude Software
  2205.  
  2206. In article <394mj0$hq9@newsbf01.news.aol.com> AndrewWelc,
  2207. andrewwelc@aol.com writes:
  2208. >The biggest problem is getting a bank to even talk to you about setting
  2209. up
  2210. >a merchant account.  The vast majority of banks won't even talk to you if
  2211. >you're doing a mail order business -- which is what you are doing.
  2212.  
  2213. Call David Jones at TeleFlora: 800-325-4849 x2076 direct: 303-750-7958
  2214. BBS: 303-750-8198
  2215. david.jones@hotelnet.com
  2216.  
  2217. Believe it or not, TeleFlora (the people who do florist's VISA accounts)
  2218. has a special shareware author's account.  I called David and was set up
  2219. immediately for very little cash (no minimums).  I get money from people
  2220. in other countries all the time.  It's great!  They understand shareware
  2221. and mail-order.
  2222.  
  2223. --Grant Hulbert
  2224. guidude@netcom.com
  2225.  
  2226. +++++++++++++++++++++++++++
  2227.  
  2228. >From peter.lewis@info.curtin.edu.au (Peter N Lewis)
  2229. Date: Wed, 02 Nov 1994 11:40:17 +0800
  2230. Organization: NCRPDA, Curtin University
  2231.  
  2232. In article <393cf4$f3@nntp1.u.washington.edu>, jbeeghly@u.washington.edu
  2233. (Jeff Beeghly) wrote:
  2234.  
  2235. >Have you ever looked into getting a VISA (no, not the kind where you can 
  2236. >PURCHASE goods from, but the kind where you get money)?  I agree, VISA is 
  2237. >very easy on the register, and ideally, I'd like to support VISA as 
  2238. >well.  The problem:  $$$.  Not only does it take a lot of money to get a 
  2239. >VISA account set up, but there is a "minimum" monthly charge (which is 
  2240.  
  2241. Yes, believe me I've looked.  I finally found Kee Nethery who has set up a
  2242. shareware registration system that is reasonably priced (4%-10% depending
  2243. on the payment method (checks, cash, American Express, VISA, MasterCard or
  2244. NetCash US$ (original NetCash $ cost 20%, so they are pretty hideous to
  2245. process, but the new ones aren't bad)).  I've been using the system with
  2246. Kee for the last two months while we sorted out the kinks, and it's worked
  2247. very well.  Kee also has a permanent PO box so your address wont change,
  2248. and can reflect Email (eg peter@kagi.com is now my standard address) so
  2249. your Email address wont change, and accepts registrations via Email, FAX
  2250. or snail-mail.  Anyway, contact Kee <kee@kagi.com> for more information.
  2251.  
  2252. Note: I may end up having a small share of this system so I am not
  2253. entirely unbiased, but I would be using it and recomending it anyway -
  2254. does anyone think that VISA cards registrations wont increase your
  2255. payments by 10%?  or that having a nice "company" fronting you wont smooth
  2256. those anoying government/university/company people who don't like making
  2257. checks out to individuals (or sending them to strange Australians who for
  2258. some weird reason don't have a US SSN or tax number...).  For myself, just
  2259. having someone else deal with mailed registrations is worth 5% (although
  2260. my dad is really upset that his stamp collect
  2261.  
  2262. Note2: This is not "enough".  Nothing will turn you from unsuccessful to
  2263. successful except writing a decent program that people are actually going
  2264. to use.  So if you've got $20 worth of payments so far, it's unlikely this
  2265. (or anything else) will bring you thousands of dollars...
  2266.    Peter.
  2267. -- 
  2268. Peter N Lewis <peter.lewis@info.curtin.edu.au> - Macintosh TCP fingerpainter
  2269. FTP my programs from redback.cs.uwa.edu.au:Others/PeterLewis/ or
  2270. amug.org:pub/peterlewis/ or nic.switch.ch:software/mac/peterlewis/
  2271.  
  2272. +++++++++++++++++++++++++++
  2273.  
  2274. >From Andrew Barry <ajbarry@ozemail.com.au>
  2275. Date: Wed, 2 Nov 1994 09:02:57 GMT
  2276. Organization: Grishnakh
  2277.  
  2278. In article <CyJDz1.Hws@aston.ac.uk> CW LAM, lamcw@aston.ac.uk writes:
  2279. >;I'm new to Macintosh programming and I am curious to know whether people
  2280. >;who are releasing their software as shareware are making any money. What
  2281. >;do you do to 'coax' people into sending in that payment? A stern
  2282. message in
  2283. >;a README file, a serial number scheme, annoying messages that show up
  2284. when
  2285. >;the program is launched or when the user selects About..., software that
  2286. >;'self-destructs' after a certain number of uses or time limit? Share
  2287. your
  2288. >;experiences with the rest of us!
  2289.  
  2290. In Prince of Destruction we decided to limit the game through a number of
  2291. mechanisms:
  2292. - Limit areas of the game that can be accessed
  2293. - Limit 'power' level that player can reach
  2294. - Shutdown game after an hour
  2295. - Limit ability to load and save games
  2296.  
  2297. We're currently picking up about 10 registrations a week - who knows how
  2298. long
  2299. this will continue....
  2300.  
  2301. I must admit that I have a fairly low regard for the 'honour' system.
  2302. It's sad, I know.
  2303.  
  2304. +++++++++++++++++++++++++++
  2305.  
  2306. >From kee@kagi.com (Kee Nethery (+1 510 843 6140))
  2307. Date: Wed, 2 Nov 1994 19:17:45 GMT
  2308. Organization: Kagi Engineering
  2309.  
  2310. Figured I should say hello since I am acting as a shareware registration
  2311. service. Like Peter Lewis mentioned earlier, I accept; Visa, MC, AmExp,
  2312. US$checks, cash (from just about any country in the world), and NetCash. I
  2313. accept payment via; email, fax, postal. I do invoicing when required by the
  2314. payee and I provide paper receipts when required by the payee. I provide
  2315. email receipts for each payee (a copy to the author also) and in the
  2316. process send them the author's blurb describing their other products and
  2317. how to obtain them, etc. 
  2318.  
  2319. I offer permanent postal, fax and email addresses so that if you move,
  2320. payments still make it to you. There is a Mac shareware registration
  2321. program that I provide that is included in the fee that I charge. It
  2322. preprocesses the payment information to allow me to keep costs low. There
  2323. is a Newton shareware registration application being developed and I'm
  2324. looking for someone to develop PC and Unix versions.
  2325.  
  2326. I will soon be providing database type detailed summaries detailing payee
  2327. information in an electronic format (working out the desired outputs right
  2328. now). I'd say that half of the payments these days are electronic and half
  2329. are postal. 
  2330.  
  2331. As an FYI, my merchant account for Visa and MC has a minimum monthly charge
  2332. and a several hundred dollar setup fee and like someone else mentioned,
  2333. getting a mail order merchant account is not easy. Fortunately, I knew my
  2334. banker and was able to convince him to take the risk and to help me get a
  2335. merchant account.
  2336.  
  2337. If you have questions, feel free to drop me a line. 
  2338.  
  2339. Kee Nethery
  2340. kee@kagi.com
  2341.  
  2342. +++++++++++++++++++++++++++
  2343.  
  2344. >From gotow@ansoft.com (Jon Gotow)
  2345. Date: Thu, 3 Nov 1994 03:25:23 GMT
  2346. Organization: Ansoft Corporation
  2347.  
  2348. In article <394mj0$hq9@newsbf01.news.aol.com>
  2349. andrewwelc@aol.com (AndrewWelc) writes:
  2350.  
  2351. > Actually it doesn't cost money to get a Visa/MasterCard merchant account
  2352. > setup -- it cost us a small application fee.  Also we have no monthly
  2353. > minimum, and we only pay a rental charge on the unit we use, plus a small
  2354. > percentage of sales.
  2355. > The biggest problem is getting a bank to even talk to you about setting up
  2356. > a merchant account.  The vast majority of banks won't even talk to you if
  2357. > you're doing a mail order business -- which is what you are doing.
  2358. > So then you're forced to go with a provider, who lets you use their
  2359. > merchant account.  This is of course more costly, but it is the only
  2360. > alternative if you can't get a merchant number.
  2361.  
  2362. We just set up a merchant account, and found that the small community
  2363. banks were reasonably open-minded.  After the president of our local
  2364. bank finished chuckling at the notion of shareware, he was very
  2365. receptive.  
  2366.  
  2367. One of the big problems with mail order is the high rate of
  2368. charge-backs (ie. returns).  All I had to do was explain that the stuff
  2369. is distributed on a try-before-you-buy honor system in the first place,
  2370. and then they stopped worrying.  Who's going to voluntarily pay for
  2371. something they already have, then return the software for a refund?  If
  2372. you can get the banker to listen, it makes a whole lot of sense -
  2373. there's really very little risk at all for them in handling your credit
  2374. card transactions.
  2375.  
  2376. _____________________________________________________________________
  2377.  Jon Gotow           |  In this world there are only two tragedies.
  2378.  gotow@ansoft.com    |  One is not getting what one wants, and the 
  2379.                      |  other is getting it.         - Oscar Wilde
  2380.  
  2381. +++++++++++++++++++++++++++
  2382.  
  2383. >From jbobier@cybernetics.net (Jason Bobier)
  2384. Date: Mon, 31 Oct 1994 20:17:22 -0500
  2385. Organization: Prismatix Software
  2386.  
  2387. In article <393cf4$f3@nntp1.u.washington.edu>, jbeeghly@u.washington.edu
  2388. (Jeff Beeghly) wrote:
  2389.  
  2390. > Have you ever looked into getting a VISA (no, not the kind where you can 
  2391. > PURCHASE goods from, but the kind where you get money)?  I agree, VISA is 
  2392. > very easy on the register, and ideally, I'd like to support VISA as 
  2393. > well.  The problem:  $$$.  Not only does it take a lot of money to get a 
  2394. > VISA account set up, but there is a "minimum" monthly charge (which is 
  2395. > quite a bit) and you need to guarente VISA that you will have at least 
  2396. > X amount of business each month.  If you are a small shareware author, 
  2397. > VISA is not feasible.  The worst part about it though is that without 
  2398. > VISA, it makes internalional payments VERY difficult.
  2399.  
  2400. This is not necessarily true. It completely depends upon the bank that is
  2401. issuing the VISA account to you. Just like when you get a VISA card, the
  2402. bank determines many of the variables.
  2403.  
  2404. Moral of the story: Credit Unions are cool...
  2405.  
  2406. Jason
  2407.  
  2408. _____________________________________________________________________
  2409. Jason A. Bobier
  2410. Prismatix Software
  2411.  
  2412. Email: jbobier@cybernetics.net
  2413.  
  2414. "Living is easy with eyes closed..."  - The Beatles
  2415.  
  2416. +++++++++++++++++++++++++++
  2417.  
  2418. >From andrewwelc@aol.com (AndrewWelc)
  2419. Date: 3 Nov 1994 22:07:39 -0500
  2420. Organization: America Online, Inc. (1-800-827-6364)
  2421.  
  2422. In article <397245$flv@coyote.csusm.edu>, Grant Hulbert
  2423. <guidude@netcom.com> writes:
  2424.  
  2425. > Believe it or not, TeleFlora (the people who do florist's VISA
  2426. > accounts) has a special shareware author's account.  I called David
  2427. > and was set up immediately for very little cash (no minimums).  I
  2428. > get money from people in other countries all the time.  It's great! 
  2429. > They understand shareware and mail-order.
  2430.  
  2431. Yes, but you've made my point.  By going through TeleFlora you are going
  2432. through a middleman to a bank, which of course means that everyone wants a
  2433. cut along the way, and you end up paying pretty unreasonable rates.
  2434.  
  2435. We managed to get ours through a bank (so we actually have a merchant
  2436. number) but I'd consider ourselves extremely lucky, especially after
  2437. hearing the experiences of a number of other folks who have attempted
  2438. this.
  2439.  
  2440. Regards,
  2441.  
  2442. Andrew Welch
  2443. Ambrosia Software, Inc.
  2444.  
  2445. +++++++++++++++++++++++++++
  2446.  
  2447. >From sw@network-analysis-ltd.co.uk (Sak Wathanasin)
  2448. Date: Fri, 4 Nov 94 09:09:09 GMT
  2449. Organization: Network Analysis Ltd
  2450.  
  2451.  
  2452. In article <395hsj$959@info.epfl.ch> (comp.sys.mac.programmer), 
  2453. gasser@masg1.epfl.ch (Laurent Gasser) writes:
  2454.  
  2455. > Many have reported difficulties to be accepted as VISA individual 
  2456. > debitors.
  2457.  
  2458. Doesn't surprise me: the banks are wary of "businesses" who set up
  2459. shop, take credit card orders, and then do a moonlight flit, leaving
  2460. the bank to refund the poor punters when they realize that the goods
  2461. were never going to arrive. We had to provide 2 trade refs, a bank
  2462. ref, 3 years audited accounts, and they visited our premises. It's
  2463. hard on individual shareware authors, but the banks would be
  2464. negligent if they didn't make any effort to check that they weren't
  2465. throwing their customer's money away.
  2466.  
  2467. And if you are a merchant account holder, beware of people
  2468. approaching you to process credit card transactions on their behalf.
  2469. If they do a runner, you will be left with the "chargeback". There's
  2470. a scam currently going the rounds...
  2471.  
  2472. Sak Wathanasin
  2473. Network Analysis Limited
  2474. 178 Wainbody Ave South, Coventry CV3 6BX, UK
  2475.  
  2476. Internet: sw@network-analysis-ltd.co.uk 
  2477. uucp:     ...!uknet!nan!sw                       AppleLink: NAN.LTD
  2478. Phone: (+44) 203 419996 Mobile:(+44) 850 587411  Fax: (+44) 203 690690
  2479.  
  2480. +++++++++++++++++++++++++++
  2481.  
  2482. >From peter.lewis@info.curtin.edu.au (Peter N Lewis)
  2483. Date: Sat, 05 Nov 1994 16:28:35 +0800
  2484. Organization: NCRPDA, Curtin University
  2485.  
  2486. In article <39c8hr$t2s@newsbf01.news.aol.com>, andrewwelc@aol.com
  2487. (AndrewWelc) wrote:
  2488.  
  2489. >> Believe it or not, TeleFlora (the people who do florist's VISA
  2490. >> accounts) has a special shareware author's account.  I called David
  2491. >> and was set up immediately for very little cash (no minimums).  I
  2492. >> get money from people in other countries all the time.  It's great! 
  2493. >> They understand shareware and mail-order.
  2494. >
  2495. >Yes, but you've made my point.  By going through TeleFlora you are going
  2496. >through a middleman to a bank, which of course means that everyone wants a
  2497. >cut along the way, and you end up paying pretty unreasonable rates.
  2498.  
  2499. Well, that's true.  My solution (since there is no way I could get a VISA
  2500. merchant account to opperate in US dollars here (the *only* people who can
  2501. do that are the airlines, and I'm a bit short of cash to start up an
  2502. airline :-)) was to go thru Kee Nethery <kee@kagi.com>.  True, it costs 4
  2503. or 5% more than direct to the bank, but he also does all the processing
  2504. (and since I have a stack of letters from older versions that I have to
  2505. process once I finish reading news, his service looks even better - I'll
  2506. be happy when all my customers (except Australian ones) go thru him). 
  2507. Plus there is no monthly fees so there isn't any real disinsentive unless
  2508. you believe that credit cards wont increase your sales by 10% (I should
  2509. have some hard figures in the near future, although it's confounded by new
  2510. releases and the ever increasing Internet usership).
  2511.  
  2512. Enjoy,
  2513.    Peter.
  2514. -- 
  2515. Peter N Lewis <peter.lewis@info.curtin.edu.au> - Macintosh TCP fingerpainter
  2516. FTP my programs from redback.cs.uwa.edu.au:Others/PeterLewis/ or
  2517. amug.org:pub/peterlewis/ or nic.switch.ch:software/mac/peterlewis/
  2518.  
  2519. +++++++++++++++++++++++++++
  2520.  
  2521. >From mpeirce@outpost.peircesw.com (Michael Peirce)
  2522. Date: Sat, 5 Nov 94 18:21:43 PT
  2523. Organization: Peirce Software, Inc.
  2524.  
  2525.  
  2526. In article <39c8hr$t2s@newsbf01.news.aol.com> (comp.sys.mac.programmer), andrewwelc@aol.com (AndrewWelc) writes:
  2527. > In article <397245$flv@coyote.csusm.edu>, Grant Hulbert
  2528. > <guidude@netcom.com> writes:
  2529. > > Believe it or not, TeleFlora (the people who do florist's VISA
  2530. > > accounts) has a special shareware author's account.  I called David
  2531. > > and was set up immediately for very little cash (no minimums).  I
  2532. > > get money from people in other countries all the time.  It's great! 
  2533. > > They understand shareware and mail-order.
  2534. > Yes, but you've made my point.  By going through TeleFlora you are going
  2535. > through a middleman to a bank, which of course means that everyone wants a
  2536. > cut along the way, and you end up paying pretty unreasonable rates.
  2537. > We managed to get ours through a bank (so we actually have a merchant
  2538. > number) but I'd consider ourselves extremely lucky, especially after
  2539. > hearing the experiences of a number of other folks who have attempted
  2540. > this.
  2541.  
  2542. Peirce Software is setup through Teleflora (Visa/MC/AmEx).  I
  2543. switched from a bank provided account to them because they
  2544. offered better rates and lower fees than I could get almost
  2545. anywhere else.
  2546.  
  2547. Their tech support is excellent (I once had to reprogram my cc
  2548. terminal from a hotel room before a MacWorld Expo and they had
  2549. folks answering the phone at 10:30 PM).  They also have about as
  2550. clear a set of user guides and such as I have seen.
  2551.  
  2552. I highly recommend them.
  2553.  
  2554. __ Michael Peirce        __ mpeirce@peircesw.com    <- New ADDRESS!
  2555. __ Peirce Software, Inc. __ 719 Hibiscus Place, Suite 301
  2556. __                       __ San Jose, California USA 95117-1844
  2557. __ Makers of: SMOOTHIE & __ voice: +1.408.244.6554 fax: +1.408.244.6882
  2558. __    PEIRCE PRINT TOOLS __ AppleLink & AOL: peirce
  2559.  
  2560. +++++++++++++++++++++++++++
  2561.  
  2562. >From greeny@lanl.gov (J. S. Greenfield)
  2563. Date: 7 Nov 1994 19:41:00 GMT
  2564. Organization: Los Alamos National Laboratory
  2565.  
  2566. In article <AADC885C96688B738@klkmac009.nada.kth.se> h+@nada.kth.se (Jon W{tte) writes:
  2567.  
  2568. >>Horrendously insecure.  NetThief steals your NetCash.  'nuff said. :(
  2569. >
  2570. >Tell me more?
  2571. >
  2572. >As far as I know, the only way of stealing NetCash would be to 
  2573. >have access to the raw network packets, AND filter through each 
  2574. >and every one. That's of course doable, but anyone doing it on 
  2575. >a larger scale would be found out.
  2576.  
  2577. Well, that's certainly *a* way, and as you say is doable.  Of course,
  2578. one can also use any variety of trojan horse schemes to access only
  2579. email, and one can direct his efforts toward particular sites that
  2580. have significant numbers of NetCash transactions going on.
  2581.  
  2582. As for catching folks--I have very little confidence in this.  If you
  2583. consider how easy it is to be anonymous on the net, and if you consider
  2584. that Software Agents hasn't set up a system for dealing with such
  2585. matters.  It's quite believable that an individual could steal a significant
  2586. amount of NetCash and either cash it out or pass it on before the
  2587. principals involved are even aware that mail didn't make it through.
  2588.  
  2589. The phone companies and law enforcement have a terrible time trying to
  2590. shut down fly-by-night boiler room operations that set up to con people
  2591. out of their money.  This is an old and well-known paradigm for fraud.
  2592. What makes you think that one company that has just entered the net-cash
  2593. business and which has provided no security mechanism (other than some
  2594. limited protection against simple guessing attacks) is prepared to take
  2595. action against fraud?
  2596.  
  2597. And even if it were true that only small scale theft could succeed, so
  2598. what?  It certainly wouldn't make it acceptable to me, considering that
  2599. they have made essentially no effort to protect against such fraud.
  2600.  
  2601.  
  2602. >However, if you use encrypted mail (like with PGP) this isn't a 
  2603. >problem at all.
  2604.  
  2605. This is not an adequate solution.  First of all, the vast majority of
  2606. netters do *not* encrypt their email.  It makes little sense to count upon
  2607. encrypted mail as a security tool when most people won't use it.
  2608.  
  2609. Perhaps more importantly, this is the wrong way to approach things.  Requiring
  2610. that users be responsible for all security is not an acceptable solution for
  2611. system security problems.  It's akin to a bank saying "Sure, we'll give you
  2612. a safety deposit box, but it will be a box accessible to the public.  If you
  2613. want to put a lock on the box, you're welcome to do that.  However, the
  2614. box isn't nailed down, and we accept no responsibility should your box be
  2615. stolen."
  2616.  
  2617.  
  2618. I have, however, just returned from the ACM conference on Computer and
  2619. Communication Security, and I'm glad to report that there are other
  2620. entities (ranging from the major credit card companies to a new company
  2621. call CyberCash to academic researchers) that are working on the development
  2622. of network payment mechanisms.  Fortunately, these companies seem to be
  2623. seriously concerned by the security issues, and are actively working on the
  2624. development of systems in which security is an integral part of the design.
  2625.  
  2626.  
  2627. -- 
  2628. J. S. Greenfield                                      greeny@thelair.zynet.com
  2629. (So what were you expecting?
  2630. A Gorilla?!)                        "What's the difference between an orange?" 
  2631.  
  2632. ---------------------------
  2633.  
  2634. End of C.S.M.P. Digest
  2635. **********************
  2636.  
  2637.  
  2638.  
  2639.