The Cube

Mr. Silverberg sez:

Just what the hell is this Cube thing anyhow?

It's a Sufi teaching exercise. The ladder is your friends. The horse is your lover. The clouds are your troubles. The flowers are little children. The Cube is you. I've just given you the punchline, so the teaching exercise is now utterly useless to you. Oops.

It's also a computer program for recording short, mildly amusing things that people say on zephyr, the CMU computer science department's electronic chat facility. Every time something is recorded, the program also responds with a previously recorded blurb. Most of this page concerns the gory details about how the program is actually used. Unless you're a member of the CMU computer science department, you will not care about these details. There are some other cube-related Web pages you potentially might want to peek at regardless, though:

Warning: the recorded material is occasionally R-rated, and often too technical to be understood and/or amusing to anyone other than serious computer geeks (and even then it's not always funny).

Zephyr-specific gory details start here.

Where does it get this stuff?

Mostly, previous zephyrgrams sent to the cube instance.

What sorts of things make good Cube submissions?

A good cubism should have at least two of the following characteristics:
  1. Witty
  2. Bizarre / Surreal
  3. Short (one-liners are best)
An optimal cubism makes the reader stare at it for a while, say, "What the...?", and finally burst out laughing. We don't get many of those. If a cubism gets a mild look of astonishment and a chuckle or two, then it's done its job.

What sorts of things should I avoid?

  1. Since the Cube is supposed to be amusingly surreal, it's best to avoid including too much context. For example, it's best not to include attributions in the text of cubisms.
  2. Dead baby jokes. But then that goes without saying. Almost. Actually, almost any joke of the form "Question? Answer" goes against the spirit of the Cube, since such jokes are overly self-contained.
  3. Non-English text. Many people will disagree with this guideline, but there are several reasons I personally advocate it:
    1. There's a good chance that the Cube will eventually use some reasonably complicated word-matching heuristics. These heuristics may involve looking things up in electronic dictionaries. English ones. In which case your non-English submission will probably never, ever show up again as a response. Bummer, eh?
    2. If 90% of the people reading zephyr can't even come close to parsing your cubism, that's a guaranteed 90% chuckle-free return on the Cube's investment.
    3. I do occasionally edit the Cube's database to remove things which I find unfunny. If I don't understand it, well...

Are the Cube's responses totally random, or is something more subtle going on here?

Hey! I sent something to the Cube, and it ignored me! What gives?

There are at least three possibilities:
  1. The Cube is hosed. It happens. Often.
  2. You're sending it unauthenticated zephyrgrams. In order to prevent certain forms of cube abuse and decrease the likelihood of unpleasant bot-generated infinite zephyr loops, the Cube has been programmed not to respond to unauthenticated zephyrgrams, except perhaps for a bitchy warning that you're not authenticated.
  3. The cube really is ignoring you, because someone told it to.

Is there any way to get the Cube to give me one of its cubisms without my submitting anything?

Yes. Send a personal zephyrgram to zbot on the cube.gimme instance. A personal zephyrgram containing a cubism will be sent back to you on the cube.spew instance. Note: this is one of the few Cube operations that will work with unauthenticated zephyrgrams. Thus, other zephyr-bots can use the cube.gimme instance as a read-only interface to the Cube.

Wait a minute. This doesn't actually have anything at ALL to do with Sufi teaching exercises, does it!?

You have gained wisdom, my friend.

Can I ask the Cube how many submissions it's received so far, and from whom?

Not now. There used to be a way to do this, but that feature got dropped during the transition to a disk-based database. This'll probably get added back in again later.

How do I submit something amusing that someone else just said on zephyr?

There are two officially sanctioned ways of doing this.
  1. Send a zephyrgram to the cube.slurp instance containing a subset of the words used in the original zephyrgram. If no other recently seen zephyrgrams contain all the words in the zephyrgram you send to cube.slurp, the Cube will slurp in the original zephyrgram and treat it as if it had been sent to the cube instance. You will be noted as the cubism's "submitter," while the original zephyrgram's sender will be noted as the "author," a.k.a. "slurpee."
  2. Submit it to the Cube on the cube instance as usual. As long as the set of words you use in your submission is a subset of the words used in the original zephyrgram, the Cube will notice that you're handing it someone else's weirdness, and will attribute it accordingly.
Note that you must submit someone else's cubism fairly quickly, or the Cube will forget that someone else said it first, and you'll wind up stealing the credit for it. Also note that any spelling corrections will confuse the Cube, with similar results. Unauthenticated zephyrgrams are ignored.

How can I tell how many times people's zephyrs have been submitted to the cube by other people?

You can't. Sorry. Again, there used to be a feature to do this, but it hasn't been reimplemented since the move to an on-disk database.

ARGH! What is all this gibberish about "zephyrgrams" and "instances"?!

Oops. You're probably not at the Carnegie Mellon School of Computer Science, in which case there's really no good reason for you to be reading this. Otherwise, you might want to look at the FZQ for a general tutorial on zephyr.

Is there a way to put words in the Cube's mouth?

Yes. Send a personal message to zbot on the cube.forward.<blah blah> instance, where <blah blah> is the actual zephyr instance to which you want the Cube to forward your message. For example, in order to get the Cube to forward you message to the cube.d instance, send a personal message to zbot on the cube.forward.cube.d instance. You are discouraged from forwarding anything to the actual cube instance in this manner, however, since then it might not be clear that your message wasn't actually generated by the Cube itself.

You can also send a personal message to zbot on the anon.<blah blah> or anon-<blah blah> instance, and the message will be forwarded to the <blah blah> instance, but as the "anonymoose" rather than as the Cube.

In order to distinguish between multiple anonymeese, you may also add a (non-negative) integer after the anon in the instance name; this integer will then show up at the end of the anonymoose's userid in the resulting anonymized message.

Is there a way to compose and read e-mail with the Cube?


Oops. I just accidentally cubed something stupid. How can I get rid of it?

Send a message to the cube.nuke instance -- either a private zephyrgram to zbot or a public zephyrgram will do. Any recent cube submission or response that contains all the words in your cube.nuke message will be "nuked". That is, it will never be used as a response again. It still sticks around in the database as a permanent reminder of your foolishness, however.

Can I nuke other people's cubisms?

Yes. Happy nuking!

Can I edit cubisms?

Yes. Send a message to the cube.edit instance -- either a private zephyrgram to zbot or a public zephyrgram will do. The message should contain a Perl string substitution operation. The most recent cube submission/response which is affected by this substitution will be edited. For example, if you send a message containing s/thier/their/, the most recent cube submission/response containing the word "thier" will be edited to contain "their" instead.

Another edit interface is now available, also from the cube.edit instance. If your zephyrgram contains "match: .... replacement: ...." , the stuff after match will be used to determine what cubism gets edited, and the stuff after replacement will be what the cubism gets replaced with, verbatim. The stuff after match should be a bunch of words, each of which must be in the cubism you want to edit.

Oops! I just nuked or edited something incorrectly. Can I undo it?

Yes. Send a message to the cube.undo instance (again, either publicly or privately to zbot). Any cubism which contained the words in your message before it was edited will be restored back to the state it was in before it had been edited.

Someone else is abusing the Cube. How can I get the Cube to ignore him?

Send a public message to the cube.ignore instance. In the body, put the userid of the obnoxious cube-abuser, followed by a number of minutes for which that user should be ignored.

I told the cube to ignore this loser, but then he got really really sad and swore on his mother's grave that he'd never ever do anything mean to the poor defenseless Cube again. How can I get the cube to forgive him?

Send a public message to the cube.forgive instance with the previously excommunicated dweeb's userid in the body.

Does the Cube have a Web interface?

Sort of. You can now get a transparent-background GIF of a random cubism by fetching Thus, you can include random cubisms in your own Web pages without doing any CGI hacking yourself, simply by adding the appropriate image link to your HTML. If you fetch cube-nocrop.gif instead, you'll get a GIF with a bit more of a border, which is better for tiling. If you fetch cube-notrans.gif , you'll get an uncropped GIF with a white background rather than transparent. If you're the sort of freak who uses frames, you can get a vanilla html cubism from cube.html.

Of course, then the inevitable occured: the Cube Web Counter. This monstrosity gives you the capability of including a page hit count and any other text you want, along with cubisms if you like, all in one GIF. If you fill out the Cube Counter Configuration Form Cube Counter Configuration Form, you'll get back a bug-ugly IMG link that you can cut and paste into your HTML files. Poof! You've got a counter that's not only functional but cubey!. Unfortunately, speedwise, we're talking galloping tortoise at best here.

There's a Cube Hall O' Fame containing any particularly funny submission/response exchanges that people might have deemed worthy of saving.

How can I have the Cube save a particularly appropriate or funny submission/reponse exchange?

Send a zephyrgram to the cube.record instance containing a set of words such that each word in the set is either in the submission or the response. The chosen submission / response pair will be stashed away on the Cube Hall O' Fame.

Why "Cube", and who is this Silverberg guy?

The current incarnation of the Cube isn't the first -- the original implementation was coded up by Greg Nelson, another CMU SCS Ph.D. student. Greg's explanation:

"It's a simulation of a toy from a Robert Silverberg novel (Tower of Glass). The story itself is about a revolt by genetically manufactured androids (a little like Blade Runner, I suppose, but a very different plot). The cube itself is a little toy that people put on the coffee table, or whatever. It listens to conversations going on around it, and responds to things by doing some sort of fuzzy match on things it is hearing on other parts of the network."

Greg's implementation was performing such a fuzzy match that it was in fact, for most practical purposes, completely random. Nevertheless, those of us CMU SCS students with sufficiently disturbed minds found it amusing. After Greg left CMU, the Cube was resurrected from scratch and peppered with additional goofy features. The Cube retains its original name primarily so that people who were annoyed by its first incarnation may merrily continue to ignore it without having to change their zephyr filters (too much).

Is this really as silly and pointless as it sounds?

Yes, only more so.

Here's a link back up to my Scott Davies's home page.