|Column Tag:||Tools of the Trade
The "Easy" Life
By Dave Kelly, Editorial Board
Programmers Utilities Make Life Easier
In 1984 the Macintosh was revolutionary. It was unique. It was fun. But MacWrite just wasnt enough power. MacPaint 1.0 seemed to do a lot, but is a wimp by todays standards. Thats innovation. No matter how good software or hardware gets, it wont be good enough, ever. There will always be bugs in software, even the software that comes from the big companies (sometimes especially the software that comes from big companies) have bugs. Otherwise you wouldnt see version 1.02 around anywhere.
Every year new software updates and hardware upgrades are released. It seems that there are more updates and upgrades than new product releases. The more software you own, the more software updates youll be forced to buy. I hate buggy software. When I know there is a bug fix available I want it.
The updates are not what I want to talk about in this article. We need them and cant live without them. Instead, lets talk about a few ways that we can extend the capabilities of the software we already have while we are waiting for innovation to catch up to our wants. Im referring to the ways we can make our existing systems do more.
First I refer you to THINK Pascals pop up menus. THINK Pascal gives you a quick way to move to any procedure, function, or method in your source code file. With the source code file open, hold down the Command key and click in the title bar of the Edit window. THINK Pascal will display a pop-up menu of the routines defined in the file. When you select on of the procedure or function names from the pop up menu, the insertion point moves to the beginning of the routine. This is a great time saver that was not part of version 1.0.
Symantec also publishes what I feel is the most popular C compiler around, THINK C. The THINK C editor is somewhat different from the THINK Pascal editor. If you hold down the Option or command key as you click the title bar of a THINK C source files edit window, you get a pop up menu listing all the #include files that are called out in the source file. Wouldnt it be advantageous to be able to find functions or routines like you can in THINK Pascal?
This is exactly how PopUpFuncs 2.0 from SciComp Software was born. Eric Slosser, the author of PopUpFuncs, had just finished a major contract using THINK Pascal. He had grown to love the pop up function list feature, and sorely missed it when using THINK C. Eric stated, I couldnt break the habit of holding down the command key and clicking on the title bar to get that menu, and I was frustrated every time it didnt appear. I was sitting in a BMUG programmers meeting. The topic was the forthcoming version of THINK C (back when 4.0 was about to come out). I asked if my favorite feature was included.
Someone said that it was in one of the early beta-versions, but was yanked in the later ones, and wasnt going to be in the release. Since THINK revs its products at a quick pace, I knew it would be a long time (if ever) before I saw the feature. I asked, how hard could it be? That was the end of my spare time for the next month. The MPW version was produced with Apples blessing, and the aid of an engineer on the MPW project.
PopUpFuncs 2.0 (PUF) adds a pop up menu to THINK C, MPW C (3.0 or later), Pascal and Rez file windows. PUF installs a small icon on each end of the window title bar. Clicking on the icon activates the pop up menu. The PopUpFuncs menu lists functions, typedef, and locations that are marked with #pragma mark. #pragma is ignored by the compiler and PUF makes use of it to mark a location. With Pascal, the menu has indentation that mirrors the nesting of the subroutines. The Rez parser makes it much easier to get around in those long files (the text listing of your resources). A feature of PUF that really wasnt planned is that it parses all three languages, even inside THINK C. (good when viewing converting sample code from Pascal to c). Parsing takes place when you click the button on the control in the title bar.
If the pop up menu of functions isnt enough, PopUpFuncs also supports external functions. PUF can change text in a file. There are many different text altering utilities that can (and should) be written or integrated into the PUF environment. Examples are block commenting, comment wrapping, pretty-printing, C-style prototypes, list of routines. A unique resource of type xPop carries the code for the extension to PUF. One xPop comes with PopUpFuncs (including C source code and xPop specifications) for commenting/uncommenting lines. This is similar to the Block Comment FKEY that comes with THINK Pascal. You can access the external functions through the pop up menu by using Command-Click. Youll have to write your own extensions though; the comment xPop is the only one available now. Future xpops written by users will be distributed (with their permission) in future versions.
Using PUF is simple, just run an installer program to install or un-install PUF. You wouldnt know it was simple by its documentation though. The scarce documentation is limited to the About window and a Read-me file, not enough to go on without a little bit of intuition. Experienced programmers with intuition should have no trouble making excellent use of PUF, but some people would be just a little lost initially. The Read-me file is primarily a list of bug fixes from previous versions and some instructions on how to install PUF.
PopUpFuncs 2.0 About Dialog
PopUpFuncs is a convenience that is worth the expense. If youre not sure, SciComp Software promises: Were pretty sure that youll soon find it an indispensable part of your programming environment. Were so sure that youll like it, we guarantee it. If you find in the next 30 days that you can live without it, let us know and well refund your money.
The Macintosh system is still evolving as I said at the beginning of this article. System 7.0 is coming just around the corner and for those of us who have seen it know that there are some marvelous new bells and whistles. Many of these functions are already available without waiting for System 7.0. The problem is that adding these capabilities usually means adding INITs. Adding INITs often causes the system to slow down and sometimes even crash (especially when INITs conflict with one another).
There are some INITs that can be an asset to any Mac user and without really trying can help improve working conditions. Software developers should want to improve their working conditions too.
Utilities Every Programmer Will Use NOW!
Now you can get a powerful collection of system enhancement utilities in one package. Now Utilities from Now Software has 12 great extensions. For several months since the release of Now Utilities I have received advertising literature about Now Utilities. From the advertising I thought it looked interesting, but I didnt get too excited because some of these utilities had previously been seen as Public Domain or Shareware versions. Thats true but the Shareware/PD versions were not nearly as powerful as the current version.
Since MacTutors primary concern is in the ways that the programmers life can be made easier, Ill focus on the ways that Now Utilities can help you as a programmer to both be more productive and enjoy the Macintosh too. Since any or all the utilities can be installed each one works independently of the others. Yet, each complements and supports the others.
Now Utilities 2.0 includes (alphabetically):
AlarmsClock: This INIT puts an alarm clock in the menu bar. The best part about this alarm clock is that multiple alarms can be set to remind you of important events. I use it to remind me when to quit what Im working on and get some sleep. I tend to stay up too late working if I dont remind myself. The clock display can be configured in any font and whatever size is available for the selected font.
Customizer: As many of you know, there are attributes of the Finder that can be modified to change the display of icons, text, color, and window location. The Customizer is an application that modifies these Finder attributes. The equivalent of this application is built into System 7.0.
DeskPicture: The pre-commercial version of this bombed on the newer Macintoshes. This INIT lets you set up a PICT as the background of the screen. This new version also lets you select a folder for the INIT randomly to select the PICT to be used. I like this since it adds variety and I dont have to look at the same background every time I use my Macintosh. Since DeskPicture also works on large monitors, a provision has been added to keep the PICT files on disk instead of in memory. This could reduce that amount of RAM used for a 19 32 bit monitor from 3 megabytes to 84 kilobytes.
FinderKeys: Converts to the Mac who miss being able to type commands at the keyboard will love this one. The way it works is that the first letter you type will automatically select all the files/folders that begin with that letter. As you enter more letters, only the files starting with the letters you have typed will remain selected. If you press return the folder or file selected will be opened. FinderKeys also provides a way to copy or move documents from inactive windows by selecting a combination of Command, option, and shift keys.
MultiMaster: This INIT provides an instant pop up or pull down menu to launch files and applications. A pull down menu (similar to On-Que) can be configured so you dont have to search through multi-levels of folders to find files or applications that you use frequently. You can use the Memory Sizer option to edit an applications default memory size. This is quicker than opening up Get Info window to change each application. Since memory size is usually something that is set only once or only occasionally, the Memory Sizer wont be that important.
Programmers will like MultiMasters Memory view option, a memory map for optimizing your memory use under MultiFinder. The memory map shows memory usage for each application and the System Heap and shows which portions are free blocks, non-relocatable, and relocatable. For the casual user, the memory map is helpful to visualize where free memory is available and which applications must be closed to free up memory for another application.
MultiMaster also gives you the set aside feature similar to set aside in System 7.0. If the Set aside option is selected windows of a foreground application will be hidden as it switches to a newly selected application when using MultiFinder. This feature will help relieve the window clutter that sometimes occurs when several applications are open.
NowMenus: Now you can open CDEVs and Chooser documents directly from the Apple Menu. Submenus are created for these and any DA that has a menu. You can now change printers in one quick click of the mouse or open the SmartScrap table of contents directly from the Apple Menu. In addition, an option can be selected to cause NowMenus to display a pop up menu whenever you click on the desktop, or anywhere when selected modifier keys are pressed. From this pop up menu you can select any running application and any item in the menu bar. You see, the menu bar items are duplicated in the pull down menu.
Print Previewer: Print Previewer is a Chooser extension that lets you view your document on the screen before printing. An FKEY is also provided to switch automatically between the Previewer and whatever printer you have selected.
Profiler: This one is helpful if you are responsible for maintaining the configuration of several Macintoshes. The profile analyzes all system version information, memory status, hardware attributes, and Startup documents. Profiler also lists all applications on any locally mounted storage drives. Too bad, but Profiler wont list applications on Tops or Appleshare volumes. An option to do that would be useful to system operators.
Screen Locker: This INIT provides password protection for your Macintosh. In addition, a screen saver function is provided which displays a message or a picture when the screen blanks out. The screen saver is not as versatile as After Dark or Pyro. The screen locking function can be used without starting screen saving so that other screen savers can be used with it.
StartUp Manager: This INIT alone is worth the price of Now Utilities. The StartUp Manager keeps track of all INITs, CDEVs, and Chooser documents. They can be turned on or off so that the INITs you dont use always can be bypassed. There are other INIT manager type programs available such as INIT Picker and Aask from CE Software. The difference is in the way that they keep track of the Startup documents. StartUp Manager detects a system crash after it has already happened and gone through the standard Macintosh system error handler. INIT Picker on the other hand, hacks in into several low-memory globals and exception vectors to catch the error that would cause a system crash. Because of this, their crash protection doesnt work as well as the StartUp Manager, and in particular, its annoying for programmers using MacsBug, who would prefer to have a chance to catch the problem before their machine reboots. You see, if an INIT crashes with MacsBugs and StartUp Manager loaded, you end at MacsBug with a chance to correct the problem If an INIT crashes with MacsBug and INIT Picker loaded, the machine immediately re-boots or bombs without a chance to look at the problem. For programmers writing INITs, this is extraordinarily annoying. When restarting after an INIT crashes, StartUp Manager turns off the offending INIT and warns you that it did so. The offending INIT may not be the cause of the problem, but the StartUp Manager helps track down the INIT conflicts as they happen.
Another feature that StartUp Manager includes is the ability to set up selected groups of INITs to be loaded. These groups of INITs can be selected when starting up by holding down a Startup dialog key. I have one set that I usually use (day to day) and another when I connect to an AppleShare network remotely. Any number of groups can be set up.
Besides selecting INITs, the StartUp Manager preference options let you adjust the size of the system heap before the INITs are loaded. This helps eliminate crashes at startup due to low memory constraints caused from poorly written INITs.
Super Boomerang: This is the commercial big brother of the popular Boomerang INIT written by Hiroaki Yamamoto. Boomerang received a 5 mouse rating from MacUser and Super Boomerang is a big improvement on that. Instead of a pop up menu (in Boomerang), Super Boomerang has pull down menus which appear at the top of the Open and Save (SFGetFile, SFPutFile) dialog boxes. In addition, Super Boomerang attaches a Hierarchical menu to the open command of your application, showing your previously opened files.
You can find files quickly from the Open and Save dialogs. SuperBoomerangs Find function has been rewritten to search a 600 MB CD Rom in 15 seconds and a 100 MB hard disk in 3 seconds. The edit files option lets you rename, duplicate, or delete files. You can create a new folder with the New Folder option. Applications and desk accessories can share up to 5 common groups of files and folders which you can define. If you like Boomerang, youll really like Super Boomerang.
WYSIWYG Menus: This INIT is for the user that can never remember what each font looks like and spends forever switching fonts to find the right one. I prefer the regular font menus without WYSIWYG every time I pull down the menu. I can disable it with the command key, but I prefer the option to enable it with the command key, an option not available with this INIT. (SuitCase II gives you this option!)
Now Utilities has something for everyone. Programmers will especially like the Startup Manager, MultiMaster and Super Boomerang. I have no doubts that youll like it.
PopUpFuncs is available from:
2912 Claremont Ave #21
Berkeley CA, 94705
To order: 800 522-5939. 8AM-6PM PST
Tech Support: 415 649-8525 9AM-9PM, with the possibility that you may have to leave a message and be called back.
AMERICA ONLINE eslosser
Price: $45 + $3 shipping & handling; quantity discounts and site licenses are available.
Requires: Any Macintosh with THINK C or MPW C.
No copy protection
Now Utilities is available from:
Now Software, Inc.
520 SW Harrison, Suite 435
Portland, Oregon 97201