September 93 - BAMADA Notes
BAMADA Notes
Robert Lenoil
After a winter hibernation, BAMADA-the San Francisco Bay Area MADA affiliate-is
back in business, with illustrious speakers, first-peek demos, and one of the toughest
audiences a presenter could ever dare to meet. BAMADA is now holding court the first
Thursday of each month at 7pm in Apple's spanking new R&D campus, at 4 Infinite
Loop (no, I'm not kidding) in Cupertino. Thanks to Bill Harris of Apple Computer for
arranging the wonderful new meeting space. At the July meeting, attendees were
treated to demos of the lightweight application framework QuickApp and the latest
revision of the venerated MacApp view editor IcePick.
QuickAPP
First up were father-son duo Dave and Steve Wilson of Emergent Behavior, who
demonstrated and discussed their latest entry in the frameworks wars: QuickApp.
QuickApp is a C++ application framework for use with Symantec or MPW C++ that is
well suited to prototyping, writing small utility programs, and other such endeavors
that can benefit from a lean and mean framework. Dave Wilson's motivation to create
QuickApp was his desire (need?) to program anywhere, anytime, on his PowerBook
170. Development with big macho frameworks just can't be done in "only" 8
megabytes of RAM. With QuickApp and Symantec C++, compile-run cycle times of
10-15 seconds are practical on a PowerBook 170. A do-nothing application is about
40Kb in size, over 100Kb smaller than MacApp's null application.
QuickApp owes its performance to the Wilson less-is-more design credo: "I guarantee
that QuickApp has less features than your framework." It uses true pointer-based C++
objects and C++ language features. For example, objects are initialized by their
constructor methods, eliminating the error prone procedure of having to create a new
object and then explicitly call its initialization method. Another language feature used
in QuickApp is multiple inheritance; the model for doing this is the LISP-like notion of
mixin classes, which add well-defined behaviors to other classes. An example of a
QuickApp mixin class is MDraggable. View objects that have MDraggable mixed in
know how to be dragged, although the current implementation doesn't support multiply
selected objects. Another mixin is MIdler, which lets objects perform periodic
processing. Not a threads-based solution, an MIdler object must manually save and
restore its context between calls to its idle method.
Is QuickApp right for you? The product is young and evolving rapidly, and therefore
will not be stable like the more established frameworks. However, if you want to be
productive while sitting in a doctor's waiting room (Dave Wilson had been enhancing
the framework that day in just such a fashion), then the product is worth looking into.
QuickApp sells for $99, and can be purchased direct from Emergent Behavior.
ICEPICK
The next guest for the evening was Chris Arbogast of Sierra Software Innovations, who
trekked to Cupertino from Nevada to show off the latest version of IcePick, the view
editor for MacApp. IcePick 3.0, which should be available by the time you read this,
does everything that the last version does, plus it now handles the MacApp 3.0 view
resource format, including sup-port for behaviors and adorners. Views can be
converted back and forth between 2.0 and 3.0 formats, allowing old views to be moved
to the new format, and vice-versa. There's probably not much call to port 3.0 views
back to 2.0, but Chris did point out that the 3.0 view format takes nearly twice the
space than an equivalent 2.0 view, so a program with large numbers of views could
conceivably benefit from storing those views in 2.0 for-mat (providing that the views
don't use adorners or behaviors).
A powerful new feature in this version is the ability to add support to IcePick for
user-defined behaviors, adorners, and views. Users must write code to support editing
and streaming of their custom classes, using objects provided by Sierra in library
form. This custom code is not dynamically bound into IcePick at runtime; instead it is
linked along with the IcePick code (provided in library form) and the MacApp
libraries to produce a custom version of IcePick. This seems much more cumbersome
than using Shared Library Manager, but is a positive first step. The distribution will
include a pre-linked binary for those who don't need the customization features.
Another nice new feature for IcePick is greatly improved handling of string resources.
IcePick can read STR# resources from one or more files. View parameters that point
to strings (such as are found in TStaticText) can be set by choosing the desired string
from a popup menu. IcePick even endeavors to filter out duplicate strings in your
application; if the string you type in for a TStaticText matches an existing string,
IcePick will use the resource id and index of that string; otherwise it will create a new
one. Of course, the programmer might actually want two separate strings in certain
circumstances (localization comes to mind); Chris took suggestions from the audience
on how to accommodate everyone's needs.
If IcePick 2.0 is a reliable indicator, 3.0 could be the view editor to beat. Pricing for
IcePick 3.0 is $245 retail, $195for MADA members, and free (plus shipping) for
registered users of IcePick 2.0.
The final event of the evening was the customary after-meeting meeting at the
Peppermill, where among other things, BAMADA regulars got to say their last
good-byes to BAMADA founder James Plamondon before he left the Bay Area for
Redmond, WA (will he found RAMADA there?). The current authority figure for
BAMADA is Tom Becker. If you're interested in speaking at an upcoming meeting, or
want to be placed on the mailing list for BAMADA announcements, contact Tom at
twb@apldbio.com, or call (415) 570-6667.
AUGUST: Object Master 2.0 and AppleScript
The August BAMADA meeting was held one week later than usual due to the mass
migration of people to the east coast for MacWorld. Returnees were treated to a full
demonstration of the latest version of Object Master by Loïc Vandereyken of ACI US,
while the proud new Newton owners in the crowd vainly tried to scribble notes with
the house lights off.
Before Loïc took the stage, Steve Jasik of Jasik Designs showed off the new features in
the latest release of his Macintosh debugger, The Debugger. Along with new user
interface enhancements like option-shift-left bracket, The Debugger now sports a
scripting language and the ability to execute MacsBug dcmds. With looping and
conditional support, the scripting language allows users to perform dcmd-like things
without having to code in C. Jasik showed example scripts that walked the open window
list and that imitated the MacsBug drvr dcmd. He also ran the real drvr to show the
dcmd support. Unlike MacsBug, dcmds can be dynamically added to The Debugger at
runtime.
Object Master is ACI's source code editor magna cum laude. With its direct knowledge
of C, C++, Pascal, Modula 2, and resource files, Object Master parses your source
code and builds a dictionary of every function, method, class, constant, and structure.
You then edit your code in a hypertext wonderland, never having to care what file a
particular item is defined in. Version 2.0 Universal, shipping now, has over 150
improvements to version 1.0 - and Loïc tried to show the BAMADA audience every one
of those improvements. Among the major functionality enhancements are:
• Fully integrated Projector/SourceServer support.
• Direct editing of class definitions.
• Popup menus of recent text searches and recently edited functions for fast
navigation.
• AppleScript scriptability.
• Regular expression searches.
All of these features are seamlessly tied into Object Master's existing windows. For
example, while editing a method in a browser window, choose Check Out from the menu
bar and Object Master checks out the file containing that method from the appropriate
project. Change a method's parameter list while editing the method and Object Master
volunteers to automatically update the method declaration in the object's class
definition. Regular expression searching is facilitated by a commando-like interface
for building search patterns without remembering what •, , , and ∞ mean.
The program is extremely powerful, and this power is multiplied by the use of
AppleEvents and AppleScript. Double click on a resource in the resource map window
and Object Master opens ResEdit (or the editor you specify) and brings up the
resource for editing. Similar hooks exist for sending commands to MPW/ToolServer.
The program has a high degree of support for the AppleEvent object model and can be
manipulated quite readily with AppleScript. Scripts placed in the program's startup
folder are executed at startup and can add menus and other functions to Object Master's
repertoire. The only sore spot in the AppleScript support is that the program's actions
are not recordable.
Object Master, other than being the editor with which 4D is developed, bears little
relation to ACI's core database business and sometimes received little corporate
attention. This appears to have changed. Loïc and ACI product manager Eric Gries (who
raffled off a free copy of Object Master 2.0 at the meeting) announced a full slate of
upcoming Object Master releases. A Think C version of Object Master will appear in
1-2 months. This version, tentatively priced at $255, will have Pascal, Modula 2,
and MPW support removed. Around the same time, the universal version will be
upgraded to version 2.1, mainly to match the bug fixes and features available in the
Think version. A 3.0 version of Object Master is being planned for next year, to debut
first for Microsoft Windows in Q1, and then for Macintosh in Q2. Features being
considered for 3.0 include parsing of Rez files and whatever else users suggest or Loïc
dreams up.
The evening concluded with a panel discussion, chaired by BAMADA organizer Tom
Becker and featuring Loïc and object model personality Eric Berdahl, on strategies for
adding AppleScript support to Mac applications. For Object Master, Loïc wrote a
framework-independent set of classes for parsing and responding to the AppleEvent
object model. He then hooked those classes into the (MacApp 2.0, Object Pascal based)
Object Master source code, calling existing MacApp methods to responsd to many of the
standard events (open, close, resize, etc.). The total implementation time for
AppleScript support in Object Master was on the order of two months. Eric claimed
that properly designing for and coding AppleScript support into an application is
closer to a one year endeavor, which prompted some audience members to remark
"he's obviously using Taligent time schedules." All agreed that supporting AppleScript
is difficult, framework support is critical but lacking, and that small developers now
have but another hurdle to jump over in order to create fully featured Macintosh
applications. Perhaps Ken Ryall's MAScript package, which adds AppleScript support
to MacApp, will help in this regard.
BAMADA meets the first Thursday of each month at 7 P.M. at 4 Infinite Loop in Apple's
R&D campus in Cupertino. At the September meeting, the Newton team will talk about
and answer questions regarding the Newton Toolkit. If you're interested in speaking at
an upcoming meeting, or want to be placed on the mailing list for BAMADA
announcements, contact Tom Becker.