Technology for doing Plone on-line training

published Oct 20, 2011 09:04   by admin ( last modified Oct 20, 2011 09:04 )

Summary: Skype, VNC and VirtualBox in combination works really well.

I recently got a request for and did Plone online training (plug: there will be a Plone course in London in December), and it gave me the opportunity to try out a technology stack that I had had in mind for this purpose for some time. It turned out to be a complete success.

By using two VNC screen sharing servers there was good visual communication. Secondly, by using a VirtualBox instance for the course participant's work, there were no snags in setting up and running Plone, and the course participant could download the virtual machine image afterwards, with a complete buildout/subversion combo.

 

Setup

First, you need voice communication. There are many technologies you can use including the plain old telephone. In this case we used Skype. It worked fine with good sound quality without hogging to much bandwidth.

Secondly, set up two screens, one controlled by the teacher and one controlled by the course participant. Both screens are displayed on both computers. The teacher screen is basically a replacement for the projector screen in a classroom environment. The course participant's screen is where he will do all work, and the teacher can pop in and see what's happening and give help.

 

Achieve total awareness with two VNC servers and a VirtualBox

We used tightvnc, which has the option to have one view password and one full control password. So, on my workstation I set up a tightvnc server called the "teacher server". This screen will be controlled by the teacher and viewed by the course participant. The screen resolution should be set to something that fits on the participant's computer's screen. We used 1024x768.

The course participant's VNC server was set up in a slightly more complicated way. When teaching Plone in a classroom setting, it can be a bit complicated to get the buildouts to run on all kinds of different platforms that the course participants are bringing: Windows in different versions and OS X. Linux usually just works.

If you are teaching remotely, as you do with on-line training, you do not want to troubleshoot the course participant's computer: It would be close to impossible. Instead, I created a virtual Linux running under VirtualBox on my machine, and configured that machine with all libraries and stuff needed to develop in Plone. Then I set up a tightvnc server inside of that VirtualBox, and gave the password to the course participant. This means that the course participant is effectively working on my computer, which machine I have no problems troubleshooting of course, if need be. The course participant controls that screen and I open a view only VNC viewer to it and can see exactly how work progresses and the participant can show stuff.

This means that the physical computer that the course participant is using, just needs to be able to run a VNC client (viewer). After the course, the course participant simply downloads the VDI file (hard disk) of the VirtualBox he's been using, and that will give him the whole development environment plus all his work. I used Ubuntu 10.10 for the VirtualBox, with Gnome installed. Make sure the course participant's download the VNC and VirtualBox software from trusted sources, since there are quite some shenaningans going on on the Internet.

Caveats and snags

There was actually not much trouble, except for things that are totally avoidable that simply had to do with how I happened to set up the virtual computer. I was short of time so I used a ready made Ubuntu 10.10 VDI image for VirtualBox, and that one turned out to be in Italian. It took a couple of minutes to change it

Secondly there was something funky with the virtual storage. It reported that the disk was full, when there was 1.5GB left according to the df command. That was solved by uninstalling OpenOffice to make some free space.

These things were rectified before the course started I should add.

Thirdly, VNC makes Ubuntu assign "d" to minimize all windows instead of "meta-d". I have written about that and how to solve it here.

Fourthly, when the course participants should download their vdi VirtualBox images, be careful with compression, since many do not have adequate programs for uncompressing, or may have trouble using them.

Some weeks ago I tried to help a friend install a Ubuntu vdi image that had been compressed into the .7z format. He used a Mac that he had just got from work, and he had never used a Mac before. After about one hour's phone conversation and unreliable screen sharing over Skype with installing software, dragging, dropping and guessing, it all ended in confusion. If possible, provide the vdi images uncompressed.

Future improvements

One thing that is a bit hard with just having view access to a screen is that you cannot point at different parts of the screen. Sometimes it is easier to say "click there" and point, than saying "click the rightmost button at the bottom of the left pane". Or actually it is quite easy to say it, but not that easy to parse it for the course participant if he or she is in the middle of a difficult task.

I wonder if there exists a VNC client/server combination which would allow a view-only mode where you can point at stuff with an extra pointer that does not interfere with the work?

Furthermore the virtual machine image can be slimmed down to a server + just enough GUI for web browsers and a decent GUI text editor. One might even not need Gnome or KDE and instead go with something more lightweight such as XFCE.  Still, even a non-GUI Ubuntu server install from scratch, which I have done in Virtualbox for other tasks before, is quite hefty, weighing in at about 800MB if i remember correctly.

If one wants more security against eavesdropping one can use noVNC (see guide here) as an intermediate server in which case the connection over the Internet can optionally be encrypted. noVNC also has the added benefit of only requring Google Chrome or Chromium on the course participant's computer, requiring no installation of a VNC client.