September 93 - BAMADA Notes
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.
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.
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 firstname.lastname@example.org, 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.