Use Shift to Compare Edits in iPhoto '08
In iPhoto '08, while you're editing a photo, press the Shift key to see a "before" view; let it up to see the "after" view. It's much faster and easier than using Undo and Redo.
Innovative drawing program specializes in diagrams, concepts, and figures.
Article 1 of 1 in series
by Matt Neuburg
Sooner or later, you're going to want to draw a diagram. Of course, you may already know the importance of diagrams - perhaps because you have to chart team organization or workflow at the officeShow full article
Sooner or later, you're going to want to draw a diagram. Of course, you may already know the importance of diagrams - perhaps because you have to chart team organization or workflow at the office. But if you're like me, diagramming just sneaks up on you; you give it no thought until suddenly you need to show someone some sort of conceptual structure. And it isn't just the final presentation that's significant; it's the whole process of thought, creation, and alteration. What you want is the computer equivalent of a pencil or a blackboard, but neater, cleaner, quicker; it should be easy to sketch your initial idea and easy to change it without messing it up.
How do you do that on the Mac? Many programs I've discussed in past issues of TidBITS can be used for diagrams, including Inspiration, Canvas, and even Excel. But ConceptDraw, from Computer Systems Odessa Corp., is dedicated to diagramming, and brings great ease, originality, and power to the task.
To understand ConceptDraw, let's explore it in three conceptual layers that reveal themselves as you dig successively deeper into its workings: drawing, connections, and "smart" objects.
Drawing -- When you start using ConceptDraw, you'll probably wonder what the fuss is about. It looks like a drawing program. Indeed, all the standard basic drawing features are present; ConceptDraw may feel a bit clunky in comparison to the slick, powerful interfaces of Canvas or CorelDRAW, but no important basic functionality is missing.
You can draw a path of lines, Bezier curves, and sectors of circles and ellipses. A path can have line color, thickness, dot-and-dash style, and arrow style. A closed path can have fill color, pattern, and shadow. Every distinct path is an object, or multiple paths can be joined to form an object; multiple objects can be grouped. Objects can be resized, flipped, and free-rotated. Every object has a movable text box, whose text can be styled. There are helpful tools for aligning and distributing objects, and for copying style features between objects. The cursor can snap to a grid or to an object's bounding box or outline, and objects can be "glued" to a guideline. Documents can even have multiple layers and multiple pages.
Still, although ConceptDraw wouldn't be useful if you couldn't draw with it, drawing alone is not enough to make a diagram. For that, you need connections.
Connections -- It turns out that every object in ConceptDraw is either a normal object or a connector object. A connector object has two inherent connection points, one at each end. A normal object has four inherent connection points, at the midpoints of the sides of its bounding box. Furthermore, you can give any object as many additional connection points as you like, which you can move or delete if you change your mind.
Now, when you drag one of a connector object's two inherent connection points, its other inherent connection point stays put; the object stretches and rotates to compensate. And when you drag one of a connector object's inherent connection points onto a connection point of another object, and let go, the two connection points become attached; this means that if you move the second object by dragging, resizing, or rotating it, the connector object's inherent connection point moves too - while its other inherent connection point stays put. Thus, if you have some normal objects linked by connector objects, you can move any of the normal objects and still maintain the linkages.
ConceptDraw supplies two default connector objects - a straight line, and a sequence of lines that magically stay straight and perpendicular to each other. However - and this is the Really Interesting Part - you can turn any object into a connector object; so connections can appear exactly as you want them. And any object (including a connector object) can have text; so connections can be labeled. Plus, you're in charge of where an object's connection points are; so connections stay neat and precise.
Thus, ConceptDraw supplies you with much more power to create and maintain your diagram the way you want it than does a drawing program not dedicated to diagramming. However, the best is yet to come: ConceptDraw's objects can be "smart."
"Smart" Objects -- Any draw program maintains, for each object, certain internal data describing it and dictating the object's drawn representation - the object's height, its width, its degree of rotation, the endpoints and other determining parameters of all the segments of all its paths, its line thickness, its fill color, its text and all its text style information, and so forth. ConceptDraw, unlike any drawing program I know, gives you direct access to all this data. Select any object and choose Show Table from its contextual menu, and a new window opens, rather like a spreadsheet; that's the object's data.
You can modify the data in this table, and see your changes instantly reflected in the drawn representation; you thus have precise numeric control over the object. But the true power emerges when, instead of a raw value, you enter a formula describing a value as the result of a calculation, using standard arithmetic operations and a repertoire of other math and string functions. Such a calculation can involve other values from this object's table - or from another object's table. Thus, you can give an object special customized behavior.
For example, normally when you rotate an object, its text rotates with it; for an object whose text should never rotate, set its TextAngle to -Angle (the negative of the object's own rotation). To make an object's width always be the same as that of another object named ObjID1, set its Width to ObjID1.Width. To make an object's text always state the object's height, set its TheText to ValToText(Height). You can even give an object its own custom contextual menu, whose items can operate on the object's values.
As you contemplate the power of such formula-based access to an object's specifications, you may experience a feeling of awe, like that well-known woodcut where the scholar pokes his head out through the night sky to see the wheels and gears of the universe beyond. You may also have a feeling of regret that you didn't pay more attention to your high school trigonometry. For example, I was able to create a rectangular object which, when rotated, remains always a parallelogram with vertical sides; but it took four cups of coffee, and afterwards I had to lie down.
[Kerry Magruder, one of the creators of the HyperCard-based notetaking program HyperNote, has researched the fascinatingly convoluted history of the image Matt mentions above. It's worth reading. -Geoff]
Pet Project -- ConceptDraw comes loaded with libraries of normal and connector objects, many of them smart, ready for you to assemble into diagrams. There are libraries for describing object-oriented structures and information models, such as Booch, UML, and Express-G (don't worry, I don't know what any of that means either); for flowcharting and dataflow; for database modeling; for drawing networks; for showing relationships among Web pages; for constructing room layouts; for circuit diagrams; for technical drawings; for organizational charts and project planning; and lots more, including extra clip art, symbols, and map pieces.
You can also create your own libraries; so naturally I had to give this a try, using a pet project of mine, sentence diagrams. (Readers who are old enough may remember sentence diagrams from high school; as an ex-language teacher, I still use them.) The results were spectacular. After a few days of design and experimentation, I ended up with a small library that makes sentence diagrams dead simple to construct. Individual words are "smart" objects whose line length automatically adjusts to the length of the text, and with connection points that stay evenly spaced. Horizontal words are linked by connector objects expressing subject-predicate, object-complement, and so forth. Slanting modifier words are "glued" to horizontal words at connection points through something called a "control point," which is too complicated to explain here. My most brilliant achievement was the right-angle that connects one modifier to another (as in "very humane"); it's a smart connector object that keeps its right-angle and its rotation when its connection points are moved.
To see what I'm talking about, check out the Web page below, which shows two of my sentence diagrams. But you won't learn much from this, because what's important is not the diagram but the process by which it was created. You'll just have to trust me when I say that once I had the library developed, the diagrams were really quick and easy to make.
Wish List -- ConceptDraw is a young program with frequent updates, and it feels immature, even a bit raw in some ways. It treats screen real estate like a Windows port, with status bar at the bottom and innumerable palettes at the top. The interface design is odd: many common actions are available only through palette buttons (they have no menu equivalents), while others are buried deep in dialogs. If you make a mistake entering a formula you get the most unhelpful error message I've ever seen. The program employs some non-Mac-like conventions, and there are lots of "secret" keyboard equivalents that you can discover only from the manual.
The manual is decent HTML, with excellent use of animated GIFs to illustrate procedures, but it's tedious and compendious, not instructive or explanatory, and contains some confusing errors. What's really needed is a tutorial, as well as a guide to the libraries, which are not explained at all. Also, someone whose native language is English should be hired to correct the spelling and grammatical errors that pervade the manuals and the program itself.
I occasionally saw ConceptDraw crash, particularly when I tried to paste something it didn't like; so save your work often. Several times I had to force-quit when it refused to quit normally. Some operations, such as opening certain libraries, are very slow. It initially didn't print properly (rotated text was not rotated on paper as on the screen), but the developers eventually sent me a beta that fixed this. Also, I was astonished when I opened a saved ConceptDraw document and found that the text had been corrupted wherever I had used high-ASCII characters (for example, Option-p had become a question mark); the developers told me of a setting that prevents this, and explained it as a cross-platform issue, but to me there can be no excuse for text changing between closing a document and opening it again on the same machine.
Finally, now that I've developed a taste for ConceptDraw's smart objects, I wish they were even smarter. If its formula language were more like a programming language, and if it could express valuable notions such as "all objects to which this object is connected," some even more powerful effects could be achieved. Perhaps this will be forthcoming in a future version.
Endpoint -- It's hard to believe, but there's quite a bit about ConceptDraw that I haven't mentioned. You can customize object behavior in other ways, such as what properties (e.g. rotation) are locked, and what an object does when double-clicked, or when its group is resized. Objects can contain links, and can be made to open other documents, other pages of the same document, or Web URLs. Also, ConceptDraw is cross-platform; the Windows version does OLE embedding and linking, and there's a converter for importing files from Visio (its main competitor, now owned by Microsoft).
ConceptDraw does two things I really like. First, it helps you draw diagrams, a functionality hitherto essentially missing on my Mac. Second, it opens its power to the user, exposing its objects through data tables and making them customizable through formulas - and I'm a complete sucker for programs that do that. It has its faults, but it's also still under development, so look for future improvements. Meanwhile, if you draw any sort of diagram or even think you might have reason to do so, now is a fine time to look into this fascinating program.
ConceptDraw 1.55 requires a PowerPC-based machine with Mac OS 8 or later. It takes up about 30 MB of hard disk space and prefers 30 MB of RAM. ConceptDraw costs $160 (boxed) or $125 (downloadable, with a discount to $98 currently available), and a demo is available for download.