At a time when Apple and the Macintosh seem to be whirling in fragments around my head, the release of Spreadsheet 2000 from Casady & Greene has given my spirits a much needed lift. It is a powerful, flexible, interesting way to store and retrieve information (in this case, numerical information, along with calculations). That, as longtime TidBITS readers know, goes right to the heart of what I want from my Mac. The light-hearted interface shows that there is still room for originality on the Mac. It is easy to learn: you do the tutorials, you grok the metaphor, and from then on it's completely intuitive. It was basically written by Steve Wilson of Emergent Behavior, reaffirming the place of small developers. And, the fact that Spreadsheet 2000 was written with Prograph CPX, my favorite Mac development environment (see TidBITS-312), is a delightful bonus.

<http://www.casadyg.com/C&G/Welcome.html>

Spreadsheet 2000, officially abbreviated S2K, is actually version 2.0 of Let's Keep It Simple Spreadsheet, officially abbreviated Let's KISS, or LKISS, or just plain KISS.

**Go With the Dataflow** -- A spreadsheet is a place where, typically, numbers live, some of which are the result of live calculations using others. For instance, in recording a budget, altering or adding a figure in a column of food-related expenditures for the month might automatically change entries for the month's food total, the month's grand total, and the year-to-date grand total.

In most spreadsheet programs, this is done through hidden formulas. You are presented with a blank grid of cells, into each of which you can put either a number or a formula describing a calculation based on other cells. A cell containing a formula, though, shows only the result of the formula's calculation. That number can then be used in still other formulas, and so on. This means that you must learn a formula language, which is often difficult. More important, it means that a spreadsheet is hard to explore and easy to harm: since you cannot usually see the formulas (and even when you can, it is hard to trace a cell's formulaic dependencies), you may accidentally make a change that causes a formula to give a bad result, or one that overwrites a formula altogether.

Spreadsheet 2000 is nothing like this. Instead, you are presented with a completely empty window. Into this window you place, by drag & drop from palettes, any of a number of objects, and by dragging arrange them as you like, much as in a drawing program. These objects are principally either rectangular grids of cells, or operators (such as "+", "*", "avg", and so on) represented as small named rectangular panels. You then click to draw connecting lines leading from grids to operators, and from operators to other grids ("output" grids). You can put numbers into the cells of grids - but not if they are output grids (output grids automatically take on a different color). So, the results of calculations are specially marked and automatically protected. Also, the structure of each calculation is visible as a physical flow of data: from an input grid or grids, through an operator, to an output grid.

The chain of grid-operator-grid can be extended as long you like; a grid may serve as input to more than one operator, and an operator may require input from more than one grid. To prevent a clutter of such chains from tangling up like spaghetti, you can select a segment of chain and "crunch" it, replacing it by a single custom operator. If you double-click the custom operator, an edit window opens and displays the grids and operators you crunched. You can work in this edit window, rearranging elements, altering data, modifying calculations, and even crunching segments of chain within it, too. By judicious naming and arrangement of crunched custom operators, you can create visual calculation structures which remain neat and easy to understand; yet the details remain available by quickly drilling down, opening the edit windows of custom operators to any desired level.

Spreadsheet 2000 also provides a second way to avoid clutter. This is called a report, though I prefer to think of it as a view, since it's really another way of looking at particular portions of your data. The main window (called the Master) is replaced by one containing just a designated subset of elements: typically, one window might show two or three chief grids, with no operators or connections at all. A document can have many different named reports, listed in a Report menu, and at any given moment you see either one report or the Master (which is another reason I call them views). How you use reports is up to you. You can enter data in a report, so when a calculation involves a lot of bits of data, multiple reports can provide multiple entry forms. They are also good places to summarize the grand results of a calculation.

I mentioned earlier that spreadsheet elements are added by drag & drop from palettes. You may create your own palettes to store elements you might need later (libraries, in other words). Such elements might range from a complicated, crunched custom calculation that generates histogram information to a simple, frequently needed grid of data or an empty 12-row grid labelled with the names of the months.

Spreadsheets can also contain special elements, such as charts that automatically show simple but effective graphs of any grid connected to them. There are also notes - simple text rectangles useful for placing comments and instructions - and graphics. These can all be arranged as desired, of course.

**True Grid** -- All data entry and display is, as already stated, by way of grids. You can type data directly into a grid cell, and of course you can cut and paste data between grids and another applications (S2K does some intelligent processing of clipboard contents); you can also export grid data as tab-delimited text files.

A grid can be resized to any rectangular dimensions in terms of the cells it contains: it can be a single cell, a single column, a single row, or a full rectangle. Labels can be attached to any grid's top, side, or both, letting you specify what each column or row denotes; with output grids you can attach labels yourself, or tell an operator to allow its input's labels to "flow through," so that the operator's output grid reproduces them.

The display of numeric data can be formatted by dragging & dropping a formatting icon onto it; various basic formatting icons live in a toolbar at the top of the screen, or you can tear off a formatting palette which lets you be more specific about things like the number of decimal places to be displayed. Text formatting works similarly, or you can choose from a Text menu. S2K enforces formatting consistency: you can numerically format a whole grid or selected columns, or textually format a whole grid or all top or side labels, but not individual cells.

One of Spreadsheet 2000's cleverest features is the intelligent behavior of its operators with respect to grids. Take, for example, the "+" operator: what it does depends on the shape you give its output grid. Imagine you have a 5-by-4 grid of numbers connected into a "+" operator. If the "+" operator is then connected to a single-cell grid, that cell will display the sum of all 20 input cells. If it is connected to a single-row grid, that grid is automatically resized to 5-by-1, and displays the sum of each column of the input. If it is connected to a single-column grid, that grid is automatically resized to 1-by-4, and displays the sum of each row of the input.

Other operators that take multiple inputs react to the shapes of those inputs. For instance, the "A+B" operator, which adds two inputs, will add two single-column grids by making the output a single column each of whose cells contains the sum of the corresponding pair of cells. It will add a rectangle grid to a single-column grid by making a rectangle grid, summing corresponding pairs of cells one column at a time. It will add a single-column grid to a single-row grid by making a rectangle grid, each cell containing one of the possible sums of pairs. And so on.

The extraordinary thing is that, although this sounds very involved when I describe it, in action it is immediately obvious and intuitive. S2K gives you a sense of doing the right thing, of knowing what you mean (often better than you do yourself!).

**Spreadsheet Icing** -- Native operators include standard numeric functions (arithmetic, trigonometric, exponential, rounding), and "form" operators act as a shortcut in the composition of elementary algebraic expressions; basic statistical functions (such as average and standard deviation) are included too. Grid operators let you count cells, columns, and rows; combine or decompose grids; copy, rotate, and sort grids; and extract grid parts by various match criteria. Logical operators let you perform Boolean tests and even build "if-then-else" constructs. Loop operators generate automatic fill data, and let you construct cumulatively computed output grids (such as a running bank balance).

These operators turn out to be sufficient for most needs; the trick, when you want to build a new function, is getting used to the dataflow model, which works differently from an algebraic language. To help you, a large selection of pre-built custom operators is included; these can be used as shortcuts, and (being constructed from the native operators) they are also valuable study models. They range from simple unit conversions and physical constants to arithmetic representations of complex numbers, polynomial roots, primeness test, Fibonacci series, pseudo-random number generation, linear regression, and various financial operators - enough to prove that S2K's dataflow language is pretty powerful (especially considering its lack of recursion).

Many model solutions are also included in the form of stationery and other files. Again, the wide range testifies to Spreadsheet 2000's power: break-even and depreciation, budget and car leasing, triangle solution, Fourier sine wave addition, numeric integration by Simpson's rule, a gradebook, even baseball statistics. More user-created templates can be found on Casady & Greene's Web site.

<http://www.casadyg.com/C&G/Products/ spreadsheet_2000/ Solutions/ solutions.html>

The manual, unfortunately, fails to document any of this (except for the native operators). Otherwise, though, it is quite nice: it consists mostly of chatty tutorials and general advice, followed by some lightly written reference material, which is all you need because the program is easy to use once you've done the tutorials. There is also good balloon help, plus some Apple Guides.

**The Magic Draggin'** -- If I have one overall complaint about Spreadsheet 2000, it is that the program is strongly mouse-oriented. I like dragging & dropping as much as the next person (and S2K's optional sound effects add to the fun), but the program calls for more physical dexterity than I possess and more reaching hither and yon than I have patience for.

I've made this and several other suggestions to S2K author Steve Wilson - such things as having crunched operators' edit windows remember their size and position next time they're opened, and an optional dialog to make it easier to size a grid. His receptive attitude suggests that, with constructive suggestions from users, S2K's future incarnations will be even better.

Having exhausted my feeble supply of negatives, I'll reiterate: Spreadsheet 2000 is a fine program. It seems rock solid (I haven't been able to make it choke or crash); its behavior is intuitive and convenient. It has those direct, simple, Mac-defining qualities that come along once in a blue moon, giving it the potential to be a classic. It performs a powerful, basic function, yet is easy to learn, and satisfying and fun to use. In my opinion it is the everyday spreadsheet that every Mac owner must have.

**Hot Off the Grid** -- A splendid QuickTime movie showing S2K in action can be found on Casady & Greene's Web site (200K), along with demo versions of S2K for both 68K and PowerPC-based Macs (a little over 2 MB):

<http://www.casadyg.com/C&G/Products/ spreadsheet_2000/ S2Kmov.html>

In our checking, the street price for Spreadsheet 2000 ranged from $60 to $75, and there's currently a $30 rebate if you own another spreadsheet. The LKISS upgrade is $20 (free if purchased in 1997).

<http://www.casadyg.com/C&G/Products/ spreadsheet_2000/ description.html>

**DealBITS** -- Through the URL below, Cyberian Outpost is offering TidBITS readers Spreadsheet 2000 for $54.95, which is $5 off the standard price.