Software at Anamorph

A funky floppy disk

My Programs

Between 1988 and 1994, I wrote a number of small programs, mostly for education and for fun. They're all meant to be shareware, but most of them have only been seen by friends, family, and my students. (It seems that I'm good at a particular type of programming, but horrible at distribution). However, the Web makes distribution easy: here they are.

You'll need a Macintosh to run these programs; all of them were written in HyperCard. HyperCard is generally considered to be a "toy" programming language, but it is far quicker to develop a working program in HyperCard than it is anywhere else that I've seen, and it's a terrific teaching tool. The programs here include the HTML document editor that was used to build the documents at this site, a neural network tutorial with a working neural network, a standalone version of the card trick that runs at this site, and a few other things.

If you're going to download one program, try the neural network (Letter Learner); even if you don't know what a neural network is, it's still fun. And I'd be curious to know what people think of the HTML document editor (QuickHTML). Is this useful for anyone else besides me?

The available programs (listed here from my favorite to my least favorite) include:


Letter Learner

When you were a baby, how did you learn to tell your mother from your father? And how can a computer learn to tell two people (or 26 letters, or 200 voices) apart? One traditional approach has been to give the computer a list of rules by which it can divide things into categories. For example, a programmer might tell the computer "if the letter is a circle that is open on one side, it is probably the letter C; if it is a circle that is closed, it's the letter O; if it's a circle with a tail; it's probably a Q (unless the circle is small, in which case it might be a small a)."

Unfortunately, this system doesn't seem to work all that well, and when you think about it, it's not the way people learn. When you were learning to tell Mom from Dad, did you have to say to yourself "Black hair...big nose...short... this must be Dad!", or was there some other mechanism that your brain used?

Neural networks are mechanisms for programming (or building) computers that learn by experience, much like our brains do. I wrote Letter Learner in 1988; it's a neural network that learns letters that you draw by hand. It starts with no knowledge of letters; as you draw new letters for it, it learns their shapes and can tell them apart. It also contains a series of lessons that explain how neural networks work.

If this intrigues you at all, try it out. I'm quite proud of this program.


HyperLOGO

I teach a programming class at Pasadena Art Center. I'm lucky: I have only three or four students each semester, they all start out thinking that they're not capable of learning programming, and I get to teach the class any way I want. The school is almost entirely Mac-based, so I'm limited to teaching a Macintosh programming language.

Most of our time is spent learning HyperCard's programming language, HyperTalk. This class is for art students who have never programmed before and who may never program again after the class is done, so teaching a language like C (with its pointers and header files) would be overkill. With HyperCard, I can teach the students to build good, basic interfaces in a single session, and they can build those interfaces in 15 minutes (HyperCard's reward/work ratio is very high). That leaves us the bulk of the semester and our class time to discuss programming issues.

And HyperTalk is a nice little language. All the basic programming concepts in the languages they might be using in the future are implemented simply and well: variables, conditionals, loops, procedures, functions, and parameters. (My one complaint: it's not object-oriented. Adding support for simple classes, inheritance, and polymorphism would make the language a better teaching tool).

But Logo is also a good teaching language: it lets you program a mock Turtle to draw simple pictures, which is great for art students. And the most basic pictures can be drawn with a combination of just two commands, so Logo has probably the highest reward/work ratio of any language. It also provides good, simple illustrations of the usefulness of procedures and functions.

Rather than try to teach two languages in one semester, I wrote a version of Logo that runs under HyperCard. This is non-standard Logo: I appropriated the Turtle commands from Logo, and let the control structures, procedures, and variables be written in straight HyperTalk. Once the class has progressed far enough, I can use the HyperTalk scripts themselves to illustrate programming points.

HyperLogo includes the HyperLOGO program, a manual, tutorials, and sample programs (including some standard fractals). If you're not a programmer, but want to try playing around with programming, this may or may not be a good place to start; it usually (but not always) helps to have a teacher when learning programming concepts. If you try to use HyperLOGO to learn programming and you get stuck, I'll probably help you if you ask me nicely.

If you're a HyperCard programmer, you might be interested in the handlers that rotate the Turtle's head. It's a neat little hack.


QuickHTML

This program is the most useful thing I've ever written, at least for my needs; but I have no idea if it will be useful to anyone else. It's a Web-site editor; it was used to create all the documents at this site. I've found it especially valuable in moving back and forth between many different documents while editing; the problem for anyone else will be that all the pages it creates come out looking exactly like the pages here (although you can personalize the header and footer information for your site).

You're welcome to try it. It looks pretty rough, but it works well; the sample files / tutorial that come with it should make this more or less self-explanatory. I don't currently plan to do a lot more with this other then fix some bugs and add some features I need; however, if someone wants to use this and asks for some easily-implemented features, I'll probably put them in. But if you want that, you really should pay me.

If you'd like to read the tutorial that comes with the program before downloading entire file, you can view it from this site.


A Card Trick

This card trick is extremely mystifying when done properly. The effect is this: the magician gives a spectator a deck of cards and asks them to choose any five at random (or the spectator can choose any five cards they like). The magician chooses one of the five cards, and removes it. The spectator then sits in front of this program, uses the mouse to drag each of the four remaining cards to the bottom of the screen, and then presses a Guess button. The program correctly guesses the fifth card.

How is it done? I'm not telling you yet. Treat this like a puzzle; try to figure it out on your own by testing different sets of cards and seeing what card the program guesses. If you need hints, ask me; if you can't figure it out, but you've ask me enough questions, and I'm convinced you've tried to figure it out on your own, I'll send you the secret. Even then, it'll probably take about half an hour or so of practice before you can make it work.

You can also do the card trick over the Web from a document at this site.


HyperComputer

When I was studying programming in college, we learned how computers worked via this neat little device called CARDIAC (Cardboard I-something A-something Computer). This was a big piece of cardboard into which we would write computer instructions in machine language (the language the computer understands), and run these programs by hand. It helped me understand a lot about computing that I didn't previously comprehend.

HyperComputer was my attempt to make a working model of a CARDIAC-like machine. With HyperComputer, you can type in machine-language programs and watch them run, one instruction at a time. HyperComputer may be a bit too advanced for non-programmers; but if you've done even a little programming, you might want to try this out.

Caveat Emptor (even though the program is free): HyperComputer was never completely finished, and I don't like its appearance at all. It works, for the most part, but the shift command doesn't behave properly, and the tutorials are incomplete. Still, I get email from people once a year or so, telling me that they liked the program, so I'm making it available here.


Wow! Can I Pay For These?

Sure. Read my fantasies.


Other Sites with Unusual Mac Software


Software at Anamorph
Last Updated: November 12, 1995. Created May 28, 1995
Copyright 1995 Robert Orenstein. Your Comments are welcome: atempaddress@netscape.net