Squash!
A File Compression Utility from Agog

Is it just my imagination, or are software packages ending with exclamation points becoming more popular? First we had Diagram!, now today I'm reviewing Squash! The developer of Squash, Agog, Inc. just wrote me saying that I didn't have to put the ! on the end of Squash. The real name of Squash is Squash. Apparently the ! was intended only for large type. Back to reviewing software.

Installation

Squash comes on a single 800Kb 3.5" disk. It doesn't use the Installer application. Rather, the Squash and Unsquash applications are dragged-and-dropped into your /LocalApps folder. The auxiliary documentation for programming front-ends to Squash come in a Squashed bundle. Squash also comes with a printed manual and has the entire manual on-line via a Help menu option. Squash must be installed with root privileges so that it can install the /usr/etc/SquashHelper utility. This utility formats and names floppy disks for Squash, a function which requires super-user authority. The rest of Squash runs at normal user privileges and cannot be used to circumvent security.

General Impressions

Squash is a data compression and file archiving utility. That means that it acts very much like PKZIP on MS-DOS machines and the famous StuffIt program for Macintosh. On UNIX machines, archiving and compression has traditionally been the forte of such utilities as tar and compress. Squash uses two types of compression, Lempel Ziv and Welch (LZW) for `fast' compression and `4th order finite context' for the `slow' compression. Both are lossless forms of data compression. The `slow' algorithm is considerably better than the adaptive Lempel Ziv algorithm used in `fast' mode and in the UNIX compress utility. Both forms of compression (slow and fast) beat standard Huffman compression. If you aren't a compression-ologist, this is all gobblygook. What it boils down to is that Squash can achieve about a 70 to 90% compression ratio on various types of files.

Squash treats sound files differently from normal files. It basically uses deltas with arithmetic encoding (see above concerning compression gobblygook), which means it can compress both 8 bit MuLaw and 16 bit linear sound files with quite impressive ratios (20 to 45%). UNIX compress cannot compress sound files at all since they tend to look like random data samples, so the fact that Squash can do any amount of compression is pretty remarkable. However, the sndcompress utility on the NeXT will do greater than 50% compression on 16 bit sound files (not MuLaw), but unlike Squash, this is a command line utility and does not have clean interface of Squash.

Utilities such as Squash are best judged by their features and how well they integrate them. This is my own list of Squash functions. Most of them are self explanatory.

o Compresses and bundles files and folders seamlessly through the Workspace Manager and Services menu.
o Easy decompression by double-clicking icons.
o Ability to archive folders to floppy disks, automatic formatting and naming of floppies and full prompting.
o Provides UnsquashOnly utility which you can distribute freely with your squashed files.
o Can extract individual files from folder bundles without decompressing the entire folder.
o Does Cyclic Redundancy Check (CRC) of compressed files and folders to warn against data corruption.
o Allows you to split squashed files into chunks. Useful when you have to put them on small floppy disks.
o Ability to set Squash to do file compression only when the screen is dimmed to allow maximum CPU efficiency.
o Ability to tell Squash to compress files/folders that are older than a certain number of days. This compression will occur at the time you specify (usually the wee hours of the morning) and is useful for compressing files which aren't used very often.

I've found the automatic `Old File Squashing' facility to be extremely useful. I've set it to search my entire /LocalLibrary/Documentation and other directories at 3:00 am, looking for files which are more than 30 days old. If it has found any folders or files which match this criteria, it promptly squashes them. This has reduced the amount of wasted space on my drive considerably. Files which I never used are automatically squashed and files which I do use aren't. Very useful. Another great feature is that you can tell Squash to compress only when the screen is dimmed. That means that you can queue up a whole bunch of squash requests and Squash won't interfere while you do other work. When you leave your station and the screen dims, Squash will compress the files in the queue. Sort of a one computer Zilla.app, if you might.

Squash displays a Status panel that shows you how much of the compression has been done and the estimated time left. It also has a To Do Panel that shows how many squash requests are in the queue and their order. If you try to quit Squash when it is processing files, it will ask you if you wish to save the squash requests. If you do then the next time you login in and launch Squash, it will continue where it left off.
Squash is a full NeXTstep application. You can tell Squash to compress a file or folder three different ways. One is to drag the file or folder onto the Squash icon. You can use the Services menu option or launch the Squash application and specify the file or folder manually.

Results

I tried to pick a good variety of data files and folders that I felt represented the types of data people use. I did not include any TIFF files because Squash will not compress TIFF files that use the built-in TIFF compression schemes (LZW, packbits, and JPEG). JPEG is the best scheme for compressing 8 bit grey scale and 24bit color images, so there isn't any benefit in using Squash for those images, however for 1, 2, and 4 bit monochrome images, Squash's `slow' algorithm is better than TIFF's LZW algorithm, so you might want to save the TIFF's without compression and then compress them with Squash. The side-bar tables on the next pages show the results of my tests.

Squash has two modes, `Smaller but slower' and `Faster but not as much.' The manual notes that the difference is that `Faster' is five times faster, but that `Smaller' compresses files 30% more. My own findings verify that for files greater than 1Mb, the `Smaller' is from 0% to 28% more efficient but was three to four times slower. My own default is to use `Smaller but slower.' Since you can set Squash to compress only when your screen is dimmed, there really isn't that much of a time trade-off anyway.

Bugs

I didn't find any major bugs in the Squash application. I've been on the beta list for this program and all of the major bugs have been fixed. What remains are just quirky problems. I've never seen Squash unable to unsquash a file in my months of constant use. In programs such as this, reliability is essential. As noted above, Squash computes a CRC checksum for each package it squashes, which means that there is an added degree of data reliability.

Problems

As you might have noted from the results tables, Squash doesn't warn you if squashing a file or folder will actually increase the size of the folder. This is bad behavior, in my opinion. Squash should warn you and give you the option of not squashing. Agog tells me that this only happens when the file size is less than 8 kilobytes since they don't do all of the checks for small files, but in my opinion this is a simple check that should be run all of the time.

The printed manual does not come with an index and the on-line manual does not allow search by keywords, which compounds the problem. The on-line manual entries are unstructured, sorted by alphabetic titles rather than by the order they appear in the printed manual. Also, 2.8Mb floppies are assumed when estimating disks required for archiving.

It would be nice if there was an option to write directly to the raw floppies, bypassing all of the overhead of the UNIX filesystem which on 800Kb floppies can be quite large (200kb). My wish list also includes being able to archive to DAT or other tape drives, but then that would begin to change the very nature of Squash. It would also be great if Squash let you set its priority so that it could run `nicely' (in the UNIX sense) in the background. Currently Squash adjusts its priority depending on whether or not it is the `active' application and whether the Status Panel is visible.

It would be nice if Squash could open other compression formats such as compress, ZIP, ARC, SIT, pack, etc. There should be a command line version of Squash (not the one provided in the package that needs access to the Workspace Manager) so that I can use Squash when I Kermit things over to NeXT's at other sites (but don't want to have to be physically present to unsquash them). In any case, both Squash and Agog are very young, so it will be interesting to see how they mature. The upgrade policy (see below) is very good, which is encouraging.

Upgrade Policy

The current version of Squash is 1.0d. Registered users in the U.S. and Canada can upgrade to version 1.0d by either e-mailing squash@agog.com and receiving it by NeXTMail, or by sending Agog $5 for postage, diskette, and handling via US-Mail. I assume you should include your serial number. Free upgrades! What a concept (are you reading this Wolfram?).

Conclusion

Ultimately, the question is, will you use it? Certainly one can live without Squash and if you have a good knowledge of UNIX, you don't really need to have Squash. On the other hand, I've found Squash to be very useful and is one of the utilities that I use a lot. Its compression is significantly better than compress's, it does an automatic tar (bundling) of directories, and it is totally click-and-play. Files which are squashed become unsquashed with a double click in the Workspace Manager and are then opened in their native application. This makes the difference between squashing and not squashing simply one of a speed sacrifice and a large space saving on your disk.

I am gratified to see that a lot of excellent programs have emerged on the NeXT. Rather than everyone coming out with Yet-Another-Drawing-Application or Yet-Another-Spreadsheet, the NeXT market is unique in that there is usually one excellent application that fills each niche in the marketplace. There is Create! for fun and snazzy drawing, Diagram! for quickly doing illustrations for publication and presentations, VOID the ultimate in space shoot outs, Improv the truly NeXT generation spreadsheet, DataPhile (still in beta) the friendly flat file database, and finally Squash the file compression and floppy archiving package. All of these are truly excellent products (in the most sincere Bill & Ted meaning of excellence). At $80, Squash is fairly priced. The comparable utility on Macintosh costs approximately the same, yet doesn't provide as many functions. Since Squash does something that can already be done using UNIX tools, one has to debate whether or not it is worth the ease of use and greater compression. I highly recommend it to those folks who could only afford a 105Mb drive. Squash will greatly reduce the amount of wasted space on your drive and let you easily archive things to floppies. People with larger drives will find Squash to be useful as well. There's no such thing as enough disk space!

Summary

Application Type: Data compression and file archiver
Version Tested: 1.0a
JiroRating: ****1/2 (Good to Excellent)
Languages Supported: English

File Formats Supported:
Can squash any folder or file
Squashed files have suffix .squ
Squashed folders have suffix .squfold
Squash floppy archives have suffix .squarchive
Split squash files have suffix .squsplit

List price: $99.95
NeXTConnection price: $79

Group Pricing:
Available in quantities of 10 for $699 through NeXTConnection
Academic Pricing:  $49 through NeXTConnection $429 for a 10 pack

ã Jiro Nakamura

Jiro Nakamura is the Group Leader of FuNK, the Finger Lakes NeXT Users Group. He has no connections with Agog, Inc. Contact him at jiro@shaman.com.