home *** CD-ROM | disk | FTP | other *** search
/ ftp.mactech.com 2010 / ftp.mactech.com.tar / ftp.mactech.com / csmpdigest / csmp-digest-v3-070 < prev    next >
Text File  |  2010-09-21  |  105KB  |  2,665 lines

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