[net.micro.mac] Ten Challenges

nathan@orstcs.UUCP (05/05/86)

Ten Challenges:

      The Macintosh has been out long enough now that there is a large
community of people sufficiently skilled, and equipped, to program it.
There is no lack of coding talent, but it's often applied in obsolete
ways.  Each of us, after climbing the learning curve and  wanting to
display our skill, writes a little  utility. (Remember all the
screensavers, minifinders, and clocks?)  While these have added to our
capabilities, we still don't have the "shower-of-sparks" effect that
occurs when our creations resonate together, as occurred under Unix,
and Smalltalk, and certain Lisps.  If we are to uphold the revolution,
we must automate our automation.

     What is short now is not coding, but design.  "What can we do to
multiply the effects of all our efforts?"  In this spirit I offer ten
Challenges to the Macintosh software community.  Some may seem wildly
impractical (or just too hard); others too pedestrian.  Choose wisely.

Myers Challenge #1:
     A serious weakness found in every Mac editor I know of is the
search/replace function.  Search patterns on obsolete systems have
always been restricted by the typographical problem: each additional
meta-symbol made it that much harder to use and to understand.  On the
Mac we have a couple of new problems -- fonts & styles, and a distaste
for complexity -- but we have a huge advantage: we don't have to use
ASCII characters as meta-symbols!  If you think of the "search window"
as being set up like a construction kit, you're on the right track.
     But this is just the beginning: Why restrict ourselves to regular
expressions, when context-free expressions could be at our fingertips?
(Picture the day when every editor has a "railroad diagram" window)
     The person who designs such an interface will have the adulation
of thousands.

Myers Challenge #2:
     On Unix, we get tremendous mileage out of the "pipeline" concept.
Every little program is part of a (more-or-less) integrated system.
Without it, Unix would feel a lot like CP/M.  On the Mac, each
program stands alone, except for a few DA's which have to be on the
boot disk.
     What we need is support for a building-block approach that
allows dozens of little filters, on various volumes, to interact.  In
place of Unix's pipe we have the Desk Scrap.  I picture a DA, which I
call "Plumber", that (quickly) loads and runs miniprograms: they read
the Scrap, munch it, and write the result.  
     These miniprograms wouldn't have to handle events or
initialization, so they'd be much simpler than a Mac application.
Plumber would remain resident, so they'd be quick.  The most common
library code would be in Plumber itself, so they'd be small.  Plumber
would contain code to operate a dialog box that supplies option flags
& parameters to the miniprogram, if needed.  It would also "redirect"
data to and from files.  Allowing old pipelines (with their options
intact) to be left scattered about would subsitute for the "history"
mechanism found on obsolete systems.
     The person who designs and publishes a "Bus Interface" to
miniprograms will be worshipped (and $upported?) by millions.

Myers Challenge #3:
     Every RAMdisk I've seen on a Mac has been terribly primitive.
Why do they use up space not occupied by files, instead of claiming
the storage when it is needed?  Further, when a program is run off
of a RAMdisk, why is it in memory twice?  Free up the blocks it
occupied and use the core image from then on.  Allow files to be
copied into RAM when they're first opened instead of at startup.
     The person who builds a smart Ramdisk will own the business.

Myers Challenge #4:
     Not to leave the bit-bangers among us unchallenged, I propose
that a two-button mouse is possible and desirable.  The Mac has the
only one-button mouse on the market, and portability suffers.  The x/y
data would have to come in serially to free up a wire for the second
button, but many mouses on the market are programmable, so that's not
so bad.  The extra button would be be useful in existing programs,
emulating a Shift or Option key, but new programs could use it as
intended -- and it would be easier to make things run the same way on
Mac's, Atari's, and Amiga's.  If you believe in portability, you may
have found your calling.

Myers Challenge #5:
     The only Finder function I haven't seen duplicated in a desk
accessory is this: copying files.  Why has this been neglected?
Having a fast multi-file copy function as a DA would mean never having
to use the Finder at all!  The author of a successful Copy DA would be
admired by everybody but Steve Capps, and maybe him too.

Myers Challenge #6:
     Anyone who's used an Atari knows that GEM's menu-bar approach, in
which you don't have to hold the mouse button down while you make a
menu selection, is less fatiguing than Apple's.  What we need is a
replacement for the desktop code that tracks the mouse.  It would pop
up the menu without prodding from the button.  Probably most
applications wouldn't even notice the difference.  (Them that do could
have a resource pasted on which disables the feature.)
     This one sounds like a weekend's work in the right hands.  I'm
sure everyone would send scads of money to the person who pulls this
one off.

Myers Challenge #7:
     Apple's resource editor is huge, cumbersome, non-expandable,
and unreliable.  The only thing to say in its favor is that it's
indispensable.  (This is not to criticize the authors: it had to be
written before its problems could be understood.)  But it's not
irreplaceable.
     I propose a core program which itself is little more than a
resource mover.  It would load an edit module for each resource
type, as needed, from a separate file identified by the resource
name.  The interface for such modules could be very similar to
that for DA's, so existing compilers could be used to create
the edit modules.  Supporting a new resource type would require
*no* changes to the core program.  Bugs would be easily localized.
The core program would be small enough to be a DA.
     If the interface for the edit modules were published, Apple
would be rid of a big maintenance headache, and "the rest of us"
programmers wouldn't have to be so paranoid about our resource
editor wiping out our new programs.  Further, anyone could write
an editor for "his" resource type, and not have to wait for Apple
to get around to it.  Even Andy Herzfeld will thank you for
tackling this one, and Gassee will invite you to lunch.

Myers Challenge #8:
     Another thing that makes Unix powerful is that almost everything
is accessible through the file system.  On the Mac, there are all kinds
of different incompatible channels for data: serial ports, floppy
drivers, the sound driver, Quickdraw, the SCSI port, Appletalk, the
keyboard -- none of which are accessible through a common interface.
We need an equivalent of "/dev" to integrate all these channels.  In
place of driver or manager calls, I propose that we use Resources.
The file "Serial 1", for example, might have "Baud", "Flow", and
"Fram" resources to control the port.  An Appletalk virtual circuit
could be established by writing to certain resources; then data could
be sent (perhaps by another program which knows nothing of Appletalk)
just as if to a file.
     With this scheme we could eliminate the proliferation of trap
calls, and make our programs more flexible too.  This is one place
where I expect we'll need cooperation from Apple.

Myers Challenge #9:
The corporate market is starting to demand compatibility among word
processors.  Unfortunately, what they're specifying is IBM's
DisplayWriter format: an abomination.  Only a strong, flexible
standard can overcome IBM backing, but it is needed NOW!  So: Design a
document-description interchange standard powerful enough to
represent all document-processing needs for both present and future
document systems.  It need not be terribly compact; but it must be
capable of representing all constructs found in Microsoft Word, Troff,
TeX, Word Perfect, and Interleaf files.  To do this, it must of course
be an extensible, hierarchical language.  Get an ANSI or NBS
committee to rubber-stamp it, and make a fortune.

Myers Challenge #10:
Come up with a better set of challenges, and put your own name on
them.  Offer prizes, record contracts, talk-show circuits, dates with
starlets, marketing agreements, Knighthood, fame, anything you can afford.

******
I encourage collaboration on these goals, and ask for help in
cross-posting them to other networks and BBS's.  The more people who
know about them, the sooner we may hope for results.  Also, I am
willing to co-ordinate collaboration on projects and offer any
assistance I can.  I hope someone will volunteer to forward mail from
other nets to me.  I will keep all posted on any progress I hear
about.

Nathan C. Myers     uucp: {hplabs!hp-pcd|tektronix}!orstcs!nathan
780 NW 11th St.       arpa: nathan@oregon-state
Corvallis, OR 97330   belltel: (503) 753-5110
Quote: "Laugh-a while you can-a, Monkey-boy!" -- John Whorfin

lamy@utai.UUCP (Francois Lamy) (05/13/86)

In article <21100039@orstcs.UUCP> nathan@orstcs.UUCP writes:
>Myers Challenge #1:
>     A serious weakness found in every Mac editor I know of is the
>search/replace function.

Before thinking of meta-characters and font searches, how'bout making
Write and Word searching BACKWARD?
-- 

Jean-Francois Lamy             
Department of Computer Science CSNet: lamy@toronto                             
University of Toronto          EAN: lamy@ai.toronto.cdn                        
Toronto, Ontario	       UUCP:{ihnp4,decvax,decwrl,uw-beaver}!utcsri!lamy
M5S 1A4			       ARPA: lamy%toronto@csnet-relay                  

mkg@lzaz.UUCP (Marsh Gosnell) (05/13/86)

In addition to copying files, there are two HFS related functions that haven't
been duplicated in desk accessories until recently. They are creating new HFS
folders and launching documents.

There's a new DA called HFS Locater Plus from PBI Software that does all of
these and a lot more.  Locater is a DA that searches your HFS volumes for files
files by name (with wild cards) and/or by modification/creation date.  If you
run it with an application, Locater defaults to finding documents for that
application (e.g., find me MacPaint docs if I'm in MacPaint.).  The default
can be changed to any file or a different application.

Once you've found a file, you can do almost anything to it--copy it to another
folder or to a different volume for quick backups, you can move it to another
folder, rename it, delete it, show the Finder info, or launch it.  When you
launch a document, Locater finds the application and sets things up so that
when you quit the current application, the new application will be launched
and the selected document opened--exactly the same as double-clicking on the
desktop.  The launch is immediate if you use Locater from the Desktop.

Locater also lets you:
	- make new folders at any time during a search,
	- save the full pathnames of matches in a text file (a mini-catalog),
	- restrict the search to a particular sub-tree or a particular folder,
	- and lots more.

One other nice thing Locater does for you is set up the Standard file routines
so that the next open will display the folder that contains the file that
you found.  This makes Locater nifty for finding a misplaced document and
then opening it in the application.
  Marsh Gosnell

rb@ccird1.UUCP (Rex Ballard) (05/13/86)

In article <21100039@orstcs.UUCP> nathan@orstcs.UUCP writes:
>Ten Challenges:
>
>     What is short now is not coding, but design.  "What can we do to
>multiply the effects of all our efforts?"  In this spirit I offer ten
>Challenges to the Macintosh software community.
>
>Myers Challenge #1:
>     A serious weakness found in every Mac editor I know of is the
>search/replace function.
>
>Myers Challenge #2:
>     On Unix, we get tremendous mileage out of the "pipeline" concept.
>Every little program is part of a (more-or-less) integrated system.
>     What we need is support for a building-block approach that
>allows dozens of little filters, on various volumes, to interact.
>
>Myers Challenge #3:
>     Every RAMdisk I've seen on a Mac has been terribly primitive.
>     The person who builds a smart Ramdisk will own the business.

RAMdisks, memory resident programs, and other "tricks" seem like
a poor substitute for real multitasking.  It might be nice to have
a little Cache for the disks, but rather than try to "band-aid" around
the "one task" limitations, multitasking should be considered #1 on
Apple's priority list.  Demand paging, virtual memory, and Cached
read-ahead would be nice, but the current Macs don't have the
hardware to support these.  It is possible to get some degree of
multitasking even with the limitations of the Mac.  It might not
be "full blown UNIX with Graphics", but at least you wouldn't be
waiting 20 minutes for "MacDraw" to "print" to your Imagewriter.

>Myers Challenge #4:
>     Not to leave the bit-bangers among us unchallenged, I propose
>that a two-button mouse is possible and desirable.

I would suggest that the second button have the "double click"
functionality, since this seems to be the most frustrating part
of the mouse.  Every tried to click-drag a selected application
only to find yourself going into McDraw instead?  This can be
real bad when people "take turns" at the Mac and set preferences
to very slow.

>Myers Challenge #5:
>     The only Finder function I haven't seen duplicated in a desk
>accessory is this: copying files.

I would like to see both a true "copy" and a true "move" to move
and copy files in and out of folders and across drives.

>Myers Challenge #6:
>     Anyone who's used an Atari knows that GEM's menu-bar approach, in
>which you don't have to hold the mouse button down while you make a
>menu selection, is less fatiguing than Apple's.

Actually, this is a mixed blessing, unfortunately if you accidentally
"bump" the menu bar, you need to to some heavy maneuvering to get
that menu to go away.  If you really want it, great, try it first.

>Myers Challenge #7:
>     Apple's resource editor is huge, cumbersome, non-expandable,
>and unreliable.  The only thing to say in its favor is that it's
>indispensable.
>     I propose a core program which itself is little more than a
>resource mover.  It would load an edit module for each resource
>type, as needed, from a separate file identified by the resource
>name.

I'm not sure if this would be better than having separate editors,
rather than one core program with different edit modules.
Unfortunately, Mac has a lot of "Magic cookies" that are difficult
to comprehend, let alone edit.

>Myers Challenge #8:
>     Another thing that makes Unix powerful is that almost everything
>is accessible through the file system.
>     With this scheme we could eliminate the proliferation of trap
>calls, and make our programs more flexible too.  This is one place
>where I expect we'll need cooperation from Apple.

You're sounding more and more like an OS-9 for Mac supporter :-).
You are right, "transparent drivers" would be a useful way of
improving the "modularity" of Mac software.  I don't know how
much co-operation we can expect from Apple, but it should be
possible to get OS-9 with VDI before the end of 1986.

>Myers Challenge #9:
>The corporate market is starting to demand compatibility among word
>processors.  Unfortunately, what they're specifying is IBM's
>DisplayWriter format: an abomination.
>It need not be terribly compact; but it must be
>capable of representing all constructs found in Microsoft Word, Troff,
>TeX, Word Perfect, and Interleaf files.  To do this, it must of course
>be an extensible, hierarchical language.  Get an ANSI or NBS
>committee to rubber-stamp it, and make a fortune.

Actually, there are several usefull alternative standards including
the PostScript used by the AppleTalk/Laserwriter.  The main obsticle
here is that the Mac can go from "Pict&Text" to "PostScript" but not
the other direction.  Actually, if Mac could accept any of the
available "document description formats" as INPUT, the issue would
be settled quite easily.  Anybody got a PostScript to ScrapBook
interpreter?  Also, definitions of "objects" should be sufficiently
complete to allow transfer in/out of ANY editor, including say,
McProject, McDraw, and McDraft.

>Myers Challenge #10:
>Come up with a better set of challenges, and put your own name on
>them.

Ballard Challeng #1:
Data Transfer Capability.  Come up with the necessesary interpreter
so that one can create a file on ANY computer (UNIX, PC, or other),
bring it into Mac, edit on ANY editor, transfer back to UNIX,
run through filters, then print on ANY graphics capable printer.
I should also be able to edit on any OTHER graphics capable computer.
Just as you are capable to manipulate UNIX "text" files with several
different "tools", you should be able to manipulate Mac "picture"
files in the same way.  Ideally, it should also be possible to
use a "text only" editor to intelligently manipulate the files as well.

Macro, Search, and "Define" capabilities.
It should be possible to write "Macros" which can extend the
capabilities of existing tools, much the same way as Aliases,
Shell scripts, and user defined functions extend the capabilities
of otherwise "trivial" UNIX commands.  Ideally, such a process
should be as interactive and intuitive as the current desktop
and Mac editors.

It should also be possible to Search for object such as "a rectangle
containing the text 'rex ballard'" if such a box exists.

Considering the Object Oriented organization of the Mac, it should
be possible to view N dimentional matrices of commands or available
functions.  For example, you might touch an Item on the menu bar
which gives two columns.  Click one from each column, and it will
resolve into a single command.

Have a way of determining which fonts, accessories,... must be
loaded to view a document.  I have a couple of documents I can't
read because MacWrite can't find all the right fonts.  I should
be able to put the Mac in a "status mode" where selecting an
item will tell me which application should be run, what fonts
and resources are needed, and what can be done with it.

There should be a "more" or "preview" format in which the document
can be examined, but not modified.  It shouldn't be necessary
to load an entire application just to "peek" at a one or two page
"picture", especially considering the 2 minute waiting period
for going in and out of some of those applications.

jmm@pavepaws.berkeley.edu (James M. Moore) (05/16/86)

In response to the multitasking issue, Bill Atkinson is supposed to be hard
at work at this very moment (and many pastmoments) on something called Servent.
Multitasking in windows on the same screen.  Rumor had it serveral months ago
that it was due to be released this summer, approximately in June.  I have no
idea if this is still the case.  

James

ephraim@wang.UUCP (pri=8 Ephraim Vishniac x76659 ms1459) (05/19/86)

> Ten Challenges:
> ...
> Myers Challenge #3:
>      Every RAMdisk I've seen on a Mac has been terribly primitive.
> Why do they use up space not occupied by files, instead of claiming
> the storage when it is needed?

There are two general ways to allocate storage: permanently, from high memory;
or temporarily, from one of the heaps.	The first can't be done while most
programs are running, since it involves moving the stack.  The second isn't
very useful for a RamDisk.  The system heap is too small and the application
heap is re-initialized at every program launch.

> Further, when a program is run off of a RAMdisk, why is it in memory twice?
> Free up the blocks it occupied and use the core image from then on.

The copy of a file (resource, data segment, ...) in system memory is
*modifiable*.  Even code segments can contain modifiable local data areas.
(No flames about coding styles, folks, it's just an ugly fact of life.)
They also move around at the whim of the memory manager or application.

> Allow files to be copied into RAM when they're first opened instead of
> at startup.

That's a disk cache (exists already) or a memory manager/segment loader
(exists already).

>     The person who builds a smart Ramdisk will own the business.

Let's see here...  Apple built a disk cache, and they built the memory manager.
And - they own the business!

A RAMdisk is an attempt to improve memory management based on the idea that
the user knows better than the system what should be where in the storage
hierarchy.  Mr. Myers isn't asking for a "smart ramdisk", he's asking for
a better memory manager.

borton@sdcc3.UUCP (05/22/86)

In article <355@cad.UUCP> jmm@pavepaws.UUCP (James M. Moore) writes:
>In response to the multitasking issue, Bill Atkinson is supposed to be hard
>at work at this very moment (and many pastmoments) on something called Servent.
>Multitasking in windows on the same screen.  Rumor had it serveral months ago
>that it was due to be released this summer, approximately in June.  I have no
>idea if this is still the case.  
>
It is Andy Hertzfield, author of Switcher, who is working on Servant.
`Multi-tasking' is a tough term to define, but a more correct description of
Servant would be allowing applications to co-reside, as they do now in
Switcher, with `context-switches' happening on mouse-clicks (in which
window).  The primary reason people want `multi-tasking' is to be able to do
`menial' tasks such as printing and file transfer `in the background' while
they don something else.

Switcher currently has the hooks necessary to achieve this `background'
work such as printing; I am disappointed that only ThunderScan is the
only application I have seen take advantage of it.

Andy said last January he hoped to start beta-testing in ~June, with release
perhaps in Fall.  For a more complete description of what he said at
the San Diego Mac Users Group meeting in January see Best of BIX, Mac
section,  BYTE April issue (it might be May)

--Chris
-- 
Chris Borton, UC San Diego Undergraduate CS; Micro Consultant, UCSD
borton@sdcsvax.UCSD.EDU || ...!{ucbvax,decvax,noscvax,ihnp4,bang}!sdcsvax!borton
"Ist alles klar, Herr Kommissar?"  "Ganz!  Sie sind der Dieb!"

ngg@bridge2.UUCP (05/23/86)

> In response to the multitasking issue, Bill Atkinson is supposed to be hard
> at work at this very moment (and many pastmoments) on something called Servent.
> Multitasking in windows on the same screen.  Rumor had it serveral months ago
> that it was due to be released this summer, approximately in June.  I have no
> idea if this is still the case.  
> 
> James

	Servant is being created by Andy Hertzfeld. It will not be multi-
	tasking, but will be a switcher/finder replacement. It has the
	ability to load several programs at once, and you can move from
	application to application by locating the window of the application
	that you wish to use. or use the window locator on the menu bar.
	this is only a few of the MANY features that Servant has. It 
	should appear towards the end of Summer and Andy said that it may
	only work work on Macs that have the 128k roms as Servant will be
	able to so more if Andy doesn't have to worry about trying to make
	it run on 64k roms.

	Norm Goodger at Bridge Comm.....!bridge2!ngg

baron@runx.OZ (Jason Haines) (05/23/86)

I thought Servant was (your Guru and mine) Andy Hertzfeld's pet project?
D