Thursday, July 5, 2012

Case Study: EucaSchool Part 5 - Screencast Your Shell

In my last post I detailed how to set up your own MeetBot to log your IRC presentations.  In this post I want to discuss how to log a screen cast your demonstration shell for later viewing.  While MeetBot can log your session interactions in IRC (such as lecture/talk and questions/answers from the audience), using shell logging on the demonstration screen session can lack being able to see what happens inside an editor, for example.  This leaves the lasting record lacking for demonstrative purposes.

This is where Shelr comes in.  To quote their about page " allows you to record something interesting from your terminal and share it to your followers."  This means you can upload a screen cast of your shell, and to add a dash of awesome, the uploaded video also allows for pause, rate changes in speed of playback and to be able to copy/paste from the video directly.  Let me repeat that:  Unlike a youtube video, or other screen sharing/casting program, you can copy/paste text of what happened in the shell demonstration when watching it later.

That's a pretty powerful video tool for teaching shell-fu.  So let's get it installed on the demonstration instance (referred to here as demo server.)  In Part 2 we set up a screen session that allowed multiple student connections to the teacher's demonstration.  This is the place where we will install shelr to record our session for later use by students.  Of course, you could install this on your local laptop/desktop and use it just the same.  Instructions to install in linux (Ubuntu-specific as our demo server is Ubuntu) are pretty simple.  Per the QuickStart section of the about page, add the repo/install the package of your distro and issue the following commands:

aptitude install ruby rubygems
gem install shelr

Now when you want to record the shell session, you issue the command:

shelr record

You will be asked to provide a title for your record and you're off to the races.  Once finished an exit command or a control-d stops the recording and you can push that record up to the hosting with shelr, play it locally or dump the session as a json.  Here's the help output of the shelr command:

  Usage: shelr command [arg]



      record              - record new shellcast


      push last           - publish last record
      push last --private - publish private record
      push RECORD_ID      - publish record with given id

    Getting record as json:

      dump last           - dump last record as json to current dir
      dump RECORD_ID      - dump any record as json to current dir


      list                - print list of records
      play last           - play last local record
      play RECORD_ID      - play local record
      play RECORD_URL     - play remote record
      play dump.json      - play local file dumped with `shelr dump`


      setup API_KEY [API_URL] - set your API key and API site
      backend [ttyrec|script] - setup recorder backend

    Visit: for more info.

You can sign in to with your Github, Google, Twitter or OpenID account and receive an API key to publish to their host with.  Before uploading, you'll want to issue the following command with that key:

shelr setup <API_KEY>
In the next installment, I will put all of the previous parts of this series together and demonstrate how to create a customized EMI in Eucalyptus to be launched on demand that will provide not only the host for the screen demonstration, but the IRC service (including MeetBot) and shelr capabilities as well.