Index Data is an international company. There is a small HQ in Copenhagen with 3 developers and the other developers works from their home in England, Germany, Toronto and the northeastern US. [not to mention that many of our customers are also far away from our offices]
Working from home is great until you need help from your colleagues. Traveling is usually not an option. You have to use an instant messaging service or the phone. Talking about error messages or config option on the phone is difficult and annoying - the other person doesn't see what you are doing and you have to explain every detail and what you see on you screen.
There are many screen sharing tools available on the market. The most known is VNC. VNC works fine if you want to share your desktop screen with someone else. You need to tweak your firewall and a good Internet connection with at least one Mbit upstream. A large monitor is a plus.
But often VNC is overkill. Your network connection is slow or unstable and to debug a server application you don't need a graphical user interface. Also, many system administrators forbid the installation of graphical UI on a server.
There is a simple solution for this problem: ASCII terminal sharing with screen! Screen(1) is a full-screen window manager that
multiplexes a physical terminal between several processes - typically interactive shells. Screen has a multi user mode which let you share an ASCII terminal to different users and machines. You can see the input and output of someone else terminal.
How it works:
The colleague starts the
command in a terminal. You login into the same machine with the same user name as the colleague (or use sudo) and start
$ screen -x.
[If you use sudo, you may need to change the permission of your tty:
$ chmod a+w `tty`]
If you takeover the terminal, the colleague will see all your actions in real time and can see how do you fix the problem on the command line. It is like someone looks over your shoulder!
You explain on the phone why you are doing what or why the program failed for the colleague. You - as a developer - get 100% of the information and don't have to worry about details which the colleague forget to tell you (or don't even know that this information is important or exists).
Screen is a mature program and was originally created by Oliver Laumann in 1987 at the Technical University of Berlin. It is freely available under the GPL license on MacOS, FreeBSD and most Linux distributions.
I have been using screen(1) for a long time to work on remote servers. Screen has many other cool features and I discovered the multiuser session support some month ago. I wish I had known about it earlier!