CujoChat icon

CujoChat is an Internet Relay Chat (IRC) client for Magic Cap communicators. IRC is a multi-user, real-time conferencing/chat system running on the Internet. Users talk on topic-oriented channels, such as #magic-cap, or directly with other specific users. IRC has been around since 1988, and since then it has gained quite a bit of popularity. There are usually thousands of active channels, so you can find people talking about almost anything.

This is the manual for CujoChat for Magic Cap 3.x (DataRover); the 1.x version is similar.

Download CujoChat!

CujoChat is available from the packages pages.

Setting up CujoChat

The first step of setting up CujoChat is letting it know about your service provider (ISP). Please refer to the Magic Cap user’s manual for setting up a provider in the Internet Center. After the provider is set up, you can add “chat server” services to you services list.

You also need to pick a nickname to use on IRC, usually referred to as a “nick.” Nicks must be unique among all IRC users, so if you choose something like “bob,” chances are it’s taken and you will need to choose a different one. IRC users tend to be extremely creative with their nicks, so don’t be afraid of picking something too wacky.

Setup Steps

Setup is very straightforward, so get out your communicator and follow along!

  • Install CujoChat! Download the package from this site and install it on your communicator.

  • Go downtown and into the Internet Center.

  • Tap the name of the provider you want to use in the “Providers” list on the wall.

CujoChat add service

  • Go to the “services” tab if you’re not there already. Tap “add service.”

  • Tap “chat server” and a new chat stamp should hop into your services list.

  • Now it’s time to pick an IRC server. There are lots and lots of servers around, but the trick is finding one that is not full, crashed, or just won’t let you on. If you log in and it gives you a cryptic message like “authorization failed” and/or just disconnects, pick another server and try again.

CujoChat server address

  • Note that all of the servers on each major Net (like EFNet) are internetworked, so if you are using one EFNet server and another user is on a different EFNet server, you will still be able to talk to each other.

  • Be sure that the remote port number is set properly. This is usually 6667 for most servers, but some might be different.

  • Now go downtown and enter the CujoChat building.

  • Tap the Magic Lamp, and then tap “user info.”

CujoChat user info

  • Fill in your neato nick.

  • Fill in your real name. This will be given to other IRC users that request information about you (using the “whois” command). This doesn’t need to be your real name, but I usually put it in. You can also list your email address if you like.

That’s it! You should be set up to go now. Close the user info window, tap the “open link” button, and see if it works.

A Tour Of The CujoChat Scene

Let’s take a quick look at CujoChat’s scene and explain what a few things do.

CujoChat main screen

  • channel name: The scene name is the name of the channel you are chatting on. We’ll talk more about channels shortly.

  • show/hide button bar: This lets you hide the buttons on the right side of the scene. When the buttons are hidden, the “show button bar” button will be at the top right of the screen, and you can tap that to bring the buttons back.

  • button bar: When you are not chatting, the “open link” button will connect to the network and open the desired channel. When chatting, the button’s name will change to “close link” and allow you to disconnect from the network. The other two buttons will be discussed later on this page.

  • input field and choice boxes: This is the field where you compose messages to send to the channel or a specific user. These will be discussed in detail shortly.

Chatting Basics

To get on IRC, tap the “open link” button in CujoChat’s main scene. The modem should dial, the server will send you some informational messages like how many users there are, and then you should be live on a channel. When you first install CujoChat, the channel is set to #magic-cap. Note that channel names always start with a pound sign ‘#’ for historical reasons. You can think of using a channel as being in a room: when you say something to the channel, everyone hears it, and you hear everything that others are saying to the channel.

The following screen shot depicts a sample conversation between “flipper,” the CujoChat user, and another user named “dog.” Note the one-handed Dvorak keyboard which makes chatting much faster.

CujoChat online

Messages from the server, or other informational status messages, are always prepended with an asterisk (*) so you can quickly tell them apart from stuff that others are saying. When another user says something to the channel, the text is prepended with their nick in less-than and greater-than signs, e.g. “<dog> hello there.” Messages that you send to the channel are prepended with a single greater-than sign.

To send a message to the channel, type the message into the “you say:” text field and press the “return” key when you are finished. At that point CujoChat will send the message to the channel. If you want to say more than will fit on one line, break your message into multiple lines.

Changing Channels

CujoChat channel selector

To leave a channel and participate in another, tap the “change channel” button and enter the new channel name. You don’t have to type the beginning pound ‘#’ sign if you don’t want to; CujoChat will automatically insert it if needed. If the channel is left blank, CujoChat will default to #magic-cap.

Talking To Specific Users

CujoChat user selector

Immediately beneath the “you say” text field is a choice box labeled “say to” which determines who receives your messages. By default this is set to “entire channel,” so whenever you press return in the “you say” field, all users on the channel will hear your message. If you want to talk to a specific user, though, you can set the box to “specific user.” All messages sent in this way will only be heard by the other user.

To specify the recipient of your messages, tap the adjacent “user” choice box and pick a nick from the list of users on the channel. Whenever people enter or leave the channel, this list is updated to reflect the current channel state.

Messages sent and received using “specific user” are visibly different from normal channel-wide messages to help you differentiate personal conversations from the normal channel traffic. Messages sent are prepended with “you tell nick:” where “nick” is the other’s nickname. Messages received from others using this means are prepended with “nick tells you:“. IRC clients on other platforms will also differentiate personal from channel-wide conversation, so this feature is useful for conversations with any other users, not just ones running CujoChat.

Channel and User Information

CujoChat channel info

Channel Topic and Flags

IRC Channels have several attributes besides their name. Every channel has a current topic, for example the topic on #magic-cap might be “vote for your favorite Magic Cap stamps” at some point. The channel topic can be set at any point by a Channel operator. Operators will be discussed in greater detail shortly. To see the current topic, tap the “channel info” button in CujoChat. The first text field in the resulting window displays the current topic.

Channels can be marked with several flags to change the IRC server’s default behavior when stuff happens. You can’t change the flags for a channel unless you are a channel operator, but you can always see what the current flags are. CujoChat provides an interface for some of the most common of these: secret, private, and invite-only.

The first flag, secret, prevents the channel from showing up in the master channel lists that other users can browse through. The result is that someone must know the name of the channel to join it, but nothing is done to prevent their entry when they know the name. Many channels set this flag to reduce the amount of random people wandering through.

The private flag on a channel goes much further than secret: it prevents any other users from joining the channel. If you want to converse with a few other specific users and not allow others in, go to a new channel and set the private flag. See more on channel creation below.

The final flag, invite-only, prevents all uninvited users from joining the channel. Inviting users to the current channel requires a special IRC command (not yet covered here).

“Away” Messages

One final field in the options window lets you set an “away” message. If you have to take your attention from CujoChat for a while, but don’t want to disconnect and leave the channel, set the “send away msg” check box. If another user sends a message directly to you while the away box is checked, the server will automatically send a reply telling the user that you are away. If you filled in a message in the adjoining text box, this text will also be sent with the message. Keep in mind other users will only get this automatic reply if they send a message directly to you; channel-wide messages are not auto-replied to.

Nifty Sounds

By default, CujoChat plays sounds when various events occur on the channel, most commonly people joining and leaving. To turn CujoChat’s sounds on or off, tap the Rules button in the Magic Lamp and check the box for your preference.

Disconnecting From IRC

To disconnect your communicator from IRC, tap the “close link” button. The open and close link functions are shared in a single button that toggles its function depending on if the IRC link is up.

Creating and Destroying Channels

If there are thousands of channels on IRC, how did they all get there? Channels are not fixed entities, but rather are created and destroyed on the fly. If you try to join a channel that does not currently exist, the IRC network of servers will dynamically create one. Well-known channels like #irchelp or #macintosh exist continuously due to the fact one person created the channel, others joined, and since then there have always been a few users around at all times. If all users of a channel leave, the channel is destroyed.

To illustrate this point, say a person named “dogman” changes their channel to #lizard-herding. If #lizard-herding does not exist already with other users there, it will be created and dogman will be the only user on the channel. If another user “flume” joins the channel and dogman leaves, the channel will still exist because flume is there. If flume leaves, the channel will be destroyed. Dogman can always go back to #lizard-herding and the channel will be recreated, but the old topic and channel flags will not carry over; dogman will have to set them again.

Channel Operators

When a channel is created, the person that created it is given special “operator” privileges. The channel operator, or just “op,” can set the channel topic and change its flags, such as making the channel secret. Ops can also “op” others, that is make other users channel operators. If all of the ops on a channel leave, then nobody can set anything, so everybody must leave and then rejoin. This is a caveat in IRC and not CujoChat specifically. To get around this problem, some channels have “robots” (or just “bots”) which are automated programs that constantly stay on a channel and do stuff like op well-known users.

As an aside, bots can make IRC pretty interesting. For example, some bots are programmed to automatically respond to certain keywords and “play human.” If you’re familiar with the Turing Test in artificial intelligence, you’ll recognize why some extremely advanced AIs were developed as IRC bots to facilitate real-world conversation testing. Most bots, though, are not very advanced and just do stuff like auto-op other users. Bots will sometimes kick users off a channel, for example when I was testing CujoChat with netcom, I was kicked off a channel because a bot was programmed to auto-kick netcom users off. Every now and then a bot will go nuts, e.g. the programmer messed something up, and the results are pretty funny. On more than one occasion I’ve seen a bot go berserk and start auto-kicking everyone off a channel as soon as they joined.

Special Commands in CujoChat

If you’re an experienced IRC user, especially on unix, you are probably familiar with typing strings like “/mode #magic-cap +o flume” to make flume a channel operator on the #magic-cap channel. CujoChat supports some of these same commands since it does not have a pretty Magic Cap interface for all of the available IRC features.

To type a special command into CujoChat, just type into the “you say” text field, but precede all text with a period ‘.’ or slash ‘/’ character.

Implementation of CujoChat

Magic Internet Kit

CujoChat was written using the Magic Internet Kit, a developer framework I created at General Magic for easily writing Internet applications. If you have used CujoTerm, the terminal template that comes with the Kit, you will quickly notice that CujoChat was cloned from this app.

This application started off as a sample program for use in a developer magazine article about the Magic Internet Kit, but it quickly became apparent writing an IRC client was far beyond the scope of a 4000 word article. I continued on it, however, because I thought it would be lots of fun to use, especially wirelessly with a Ricochet modem. The first pre-release version of CujoChat, which did not have much of a frilly interface for anything, was completed in about 12 hours of work. Two more days of work were spent creating the released CujoChat 1.0, and that includes time spent in Photoshop creating the building and icons. Total implementation time was about 30 hours.

So what took 30 hours? Writing CujoChat’s text parser took about 80% of the time; the IRC protocol is horribly designed, so parsing raw data sent back from the server is a total pain. CujoChat’s parser is quite robust and fast, but it took a while to get it there. Another 10% was spent figuring out the Magic Cap user interface for CujoChat. The last 10% of the implementation time was spent in Photoshop drawing icons and buildings.

There were two previous building styles before the one you see now, but neither were worthy of CujoChat’s coolness. I noticed that the buildings I drew were about the same shape as the In-N-Out Burger at which I ate lunch at earlier that day, so my former uberboss Mark “The Red” Harlan suggested that I make the sign look like In-N-Out as well. The final result, drawn while consulting my official In-N-Out Company Store catalog, was just so neat that Mark and I agreed it would be the one to use. Of course, I had to give credit to In-N-Out in the about box, as well as their phone number (800.786.1000).