Please Note:  This is a direct (well, ASCII-fied) version of the text available in the help window of the program.

Conference:

Welcome to Conference, a nifty new app I wrote for no real reason.  Conference does essentially what the unix "talk" utility does, but with a real user interface.  Also, Conference is much more functional than Talk.  As the name implies, Conference is designed to let a number of people on a network hold a conference... that is, direct what they have to say to more than one person at a time.

Licence (Sort Of):

I hereby release this in the public domain.  Do whatever you want with it, but please don't try to sell it.  It would be kind of you to attribute to me any of the code you use directly, but don't feel obligated unless you use the whole thing.  Please send me bug reports, I have no idea how solid this thing really is, and I will probably fix bugs and re-post a new version of the code.  Please note that "It doesn't run under X" is not a bug.  To quote someone famous "X is brain-dead."

Operation:

The operation of Conference is simple.  Drag the program to your dock, double click on it.  In the window labeled "Participants", you will find a list of people who are currently running Conference somewhere on the network.  To send a message, simply select the people you want to receive your message in the browser, using the ordinary NextStep click-and-drag paradigm, and type your message in the TextField labeled "Input", located at the bottom of the "Conference Log" window.  As soon as you enter a carriage return, your message will disappear from the "Input" field, and appear in the "Log" fields of all of the recipients that you selected.  In addition, your message is always echoed to your own "Log" field, preceeded by your name, in bold.  Other's messages will appear beside their names, which are echoed to the "Log" field in italics.  It's really that simple.  There is nothing more to Conference but a whole bunch of Preferences that make the program easier to live with.

The Connect and Disconnect buttons located at the top of the "Participants" window allow you to connect or disconnect from a participant.  Their function is self-explanatory, so I won't explain it, other than to note that the Disconnect button only disconnects you from the last selected participant.  The Select All button, obviously, selects all the participants in the browser.

Preferences:

You can obtain the preferences panel by typing command-p, or selecting Info/Preferences from the main menu.  There are three important sections to the Preferences panel.  They are easily separated by their titles.  In the panel there is a box labeled "Machines", another labeled "Identify By", and another labeled "Message Alerts".  It should be noted that all of the preferences that you set in the preferences panel are permanent, and will remain in the setting that you choose even after you quit the program.

The first, and largest box, entitled "Machines"  controls how the program will initially connect to other machines.  The two most important options here are located at the top of the box, entitled "Use ".conference" file" and "Use Network Info".  The first switch, when turned on, will cause the program to read a file from the current user's home directory, called ".ConferenceMachines".  When told to read this file, the program will take each line and try to connect to a Conference program on the machine described by the line.  You should not edit this file directly, at least not when the program is running.  To add and remove machines from this file, use the Add and Remove buttons located to the right of the browser.  The browser itself should at all times show what is contained in the ".ConferenceMachines" file.  The other switch, located at the top right of the box, when selected will cause the program to poll the entire network for machines running Conference.  Care should be used when selecting this switch, as large networks can take some time to scan completely, and while the program does not hang for the entire time the scanning takes place, it does hang for seconds at a time.  This switch is best set only when connected to networks of about 10-20 machines or less.  The connect and Disconnect buttons in the "Machines" box will allow you to connect to or disconnect from the machine currently selected in the browser to the left.

The second box, entitled "Identify By:", controls what the name of a message sender or recipient looks like in the "Participants" and "Log"  windows.  The three switches toggle whether the user's login name, real name, and machine to which they are logged in will be shown.  it is usually most convenient to leave either or both of the login and real names selected.

The third box, entitled "Message Alerts" , controls how the program will prompt you when you recieve a message after hiding Conference or iconifying the "Conference Log" window.  The first switch, when set, unhides the application when a message is recieved.  The second switch causes the Conference program icon to flash several (5) times.  The third swich causes an audible alert, either the system beep or a sound which you may supply by entering the pathname into the field at the bottom of the box or by pressing the "Get Sound" button and selecting a sound from the Open panel.

Defaults:

As mentioned before, all of the items in the Preferences panel are set permanently as soon as you change them.  For dread/dwrite/dremove enthusiasts, the following are the names and values of the settable defaults:

Conference ActivateOnAlert YES/NO
Conference ShowLogin YES/NO
Conference ShowMachine YES/NO
Conference ShowReal YES/NO
Conference UseConference YES/NO
Conference UseNetwork YES/NO
Conference UseNoiseAlert YES/NO
Conference UseVisualAlert YES/NO
Conference SoundFile <STRING>

The Source Code:

I've included the source with this release, because I think it might be useful to anyone writing simple Speaker/Listener code.  Methods used in Conference include:

Speaker/Listener
Timed Entry
Reading/Writing to the Defaults database
Using the UNIX hostent routines
Multiple NXBrowsers with the same delegate
Modifying the Application icon
Peer-to-peer model communications code (as apposed to server/client)
Using the Storage object
Using the UNIX pwent routines
Text, Application, and NXBrowser delegation
How to make the *!@#$* Makefile do a msgwrap when it ought to.

Note that in almost all of these areas, the code is fairly simple.  In almost none of the above areas does the program use more than a few of the routines provided.  This application could be useful to anyone curious about how to do basic things in the above areas.  If you wan to do anything really complex or obscure, chances are you won't find it in this code.

For any further information, e-mail me, Thomas Burkholder, at

burkhold@scheme.cs.ubc.ca (NextMail OK)
UBC undergrad (CPSC 4),
Next Developer, and
Next Campus Consultant.

When I speak, I speak in gutteral monosylables.  There is no possible way that anything that I say can be attributed to anyone but me.  In no way, shape or form do I speak for anyone but myself.  Cross my heart, hope to die, plunge a needle in my eye, etc.