Pair Programming Tips

You may find that due to limited lab hours or file permissions, that it is difficult to work with your partner as easily as you might like. We are working to overcome some of these problems, but in the meantime, there are some things you can do to make it easier to work with your partner.

Overcoming Limited Lab Hours

You do not have to be physically located in our labs in order to work on our machines. You can load software onto your PCs that will allow you to login remotely to the department's computers. Once you have done so, you can meet your lab partner anywhere you wish--at a coffee house, in the library, or at one of your residences, and work together from there. Alternatively, if your schedules do not allow you to physically work together, you can use instant messaging or the phone to work together, while each of you works on your own PC.

If you go to the link, you can find information about what type of remote connection software to download to your machine and how to do it. As you will see, you will need software that supports SSH, which stands for Secure Shell. If you have a Linux machine or a Mac, then you probably already have SSH installed and can simply invoke it from a terminal window. If you have a Windows machine, I would recommend downloading PuTTY.

If you have a graphical interface for using SSH, feel free to use it. If you need to use it from the command line, then the general form of the command is:

ssh -l username machine_name_and_address
Our machines are named cetus# or hydra#, where the # is replaced with a number between 1 and roughly 28. The address portion is For example:
ssh -l bvz
You will be prompted for your EECS password, after which you should be able to work as though you were logged in in the lab.

Overcoming File Permissions

It is not a good idea to make your files world-readable in order to allow them to be shared with your lab partner. First the labstaff may have placed commands in your login shell that prevent you from changing your permissions. Second, even if you can change the permissions to make your files world-readable, they will be readable by the other students in the class, not just your lab partner. We are working on obtaining meeting software that will allow you to look at each other's screens, even when working remotely. Unfortunately that is a long-term solution that will probably not be available to you this semester.

So what can you do? There are probably two good solutions:

  1. Email your files back and forth to one another. I know this solution is clunky because there is some delay, but it does work.
  2. Use the subversion version control software to share files. I will have more information on this option in a week or so.

How to Email Files Back and Forth

If you are working locally on your own machines, rather than on the department's machines, then you can use your own mailer to attach files and send them to your partner. If you are working remotely on the department's machines, then you will need to use a mailer that is located on the department's machines. I would suggest using alpine. To email your partner using alpine and to attach a file, perform the following steps (thanks to Jeff Harmon for originally enumerating these steps for me):

  1. From your putty or SSH connection to UT, type "alpine" at the command prompt
  2. You might or might not be prompted for login and password information. If so, use your EECS login and password.
  3. Select "C" for compose which brings up the familiar email sending protocols (there may be a delay of a few seconds--don't panic):
  4. You can use the up/down arrows to move between lines
  5. To add an attachment, you use control j which brings up a menu that prompts you for a filename. At any time during the attachment process you can type control-c to cancel the operation.

  6. Control x sends the email, and it asks for a yes or no (Y,N).
  7. Control c cancels the email, and asks for a confirm (C) or no (N).
  8. Q in the top-level menu quits alpine. It will ask you whether you really want to quit (Y,N).