Introducing personalized learning labs with Virtual Labs
Have you ever attended or taught in-person software training? It usually involves flying a group of people to a training lab, where they sit for 6-8 hours per day in a physical classroom as a trainer walks them through lessons and helps with problems students encounter.
And this model was a vast improvement over the prior one, which consisted of shipping a set of instruction manuals!
In-Person Software Training is Complex and Expensive
Training is a critical tool to enable the software innovation economy, particularly for getting people up to speed on complex systems. However, training in software—especially enterprise software—is often an expensive, time-consuming process.
In these labs, students are not free to use their own laptops, mainly due to concerns about inconsistent environments or incompatible hardware. On top of that, there are usually issues with installing the required software on students’ machines due to corporate restrictions.
In order to ensure that each learner has the same exact experience, many training labs have identically configured machines. Each machine must have the same hardware specifications and the image used to clone the OS and software must be set well in advance, so IT can use disk cloning software to push the images out to each student machine.
If at any point during the training, a student’s machine gets into a broken or misconfigured state, the process of “resetting” to a last known good state is a non-trivial one.
Virtualization Solves the Lab Setup Problem
Because software training departments have to rely on their corporate IT for these physical training labs, many have made the shift to using virtual machines, either running on the student machines or hosted in local or cloud infrastructure.
Virtual machines are easier to replicate than physical ones and allow students to use a wider range of hardware, especially if their interaction with the virtual machine is through a web app UI or secure shell.
Unfortunately, VMs still present an issue of management. If the training department needs to set up a new training environment–or even make changes to a course–they need to submit a request to corporate IT, who create, manage, and host the virtual machines.
Cloud-Based Training Labs in the Age of Online Learning
Even with virtualization, students have to travel, can’t take the training environment back to explore on their own, and are locked into a synchronous mode of education with a cohort of other students.
While in-classroom software training is still used, more companies are turning to online platforms to deliver their training. The virtualization of servers coupled with the rise in online education has given companies the ability to create software environments for each student, letting them interact via a web browser with software installed on a remote server. They can even log in to a terminal session on a server via secure shell. All of this is possible without requiring students to install software on their local computers.
However, setting up these virtual environments for online training still requires an IT department, to configure and host the virtual machines that the students access. Smaller organizations may not have access to the IT resources needed to support this type of learning environment. In larger organizations, the IT resources exist, but may not be able to respond quickly enough to requests to provision resources to meet student demand.
Enter the Virtual Software Lab
To address these challenges, we have built a new service: Appsembler Virtual Software Labs. This service, coupled with Open edX, provides software trainers the ability to create high quality, repeatable software learning experiences.
Appsembler Virtual Software Labs let you:
- Create a curated lab environment with the software the students need to learn. The Appsembler Virtual Labs service lets you build the environment with all of the software that students need — for example, a Cloud9 development environment coupled with a web application server. Once created, Appsembler Virtual Labs lets you “snapshot” the environment so each student gets a clean, uniform copy.
- Provide each student with a dedicated software environment. Each student is given their own virtual lab environment–based on the master “snapshot” but isolated from other students–where they can conduct exercises and complete hands-on assignments. Each environment can be kept active for however many days or weeks you want each student to have access to it, meaning their work is saved even if they take a break or close their browser.
- Allow your students to launch the virtual lab directly from an Open edX course. By embedding a widget provided by the Appsembler Virtual Labs, your course authors can give students the ability to launch the virtual lab environment directly from sections within their Open edX course. The widget is provided by using our Container Launcher XBlock.
- Focus on creating top-tier learning experiences without worrying about hosting. Once you have created the software environment for your training, the Appsembler Virtual Labs service handles the hosting, versioning, and backups. This way, you can focus your energies on using the rich suite of course creation tools that Open edX provides, so your students get a great learning experience. Your staff will still have access to the student environments, enabling them to audit them to ensure that the students have completed the work correctly.
- Meet the needs of a growing training program by automatically scaling up to meet student demand. Especially for on-demand software training, you may not know how many students at one time will need access to the lab environment. Appsembler Virtual Labs scales up automatically to meet the demand, automatically provisioning the servers needed. Our platform also scales up as you create additional courses with new lab environments, and provides your staff with a dashboard to manage them.
How to Get Started with Virtual Labs
Using the Container Launcher in Open edX to launch student lab environments
Nate: Here in chapter one, there’s a lot of content here, different examples of how to use Python code to go fetch data from Twitter, and this is all great. You know, the student could add a lab environment. So if I go over to studio and I add a new unit and I choose advanced, we’ve created a new XBlock called the Container Launcher, and what …
Okay, so now I’m going to click Edit and I’m going to put in the name of my project, which happens to be Twitter IPython notebook, and then I can give it a more friendly name, Twitter IPython Notebook, and hit save, and I need to publish this, and now I’m going to click on the View Live Version to take a look at my lab, so, and when I click on this launch Twitter IPython Notebook site watch what happens. So in just a couple seconds it has spun up a new virtual lab environment for me and given me a URL where I can, I can connect to that environment. So let’s go there. Click on that. Opens up a new tab in the browser, and I’m now in the IPython Notebook, which is now called Jupiter, and there’s already a chapter 1 mining Twitter IPython Notebook here ready for me to start using, so I just click on that, and I now have a much more interactive environment where I can actually, you know, type in Python code and I can run it and get immediate feedback. I don’t have to set up anything on my computer. Okay, so this one is called Cloud9 Twitter Examples, and we’ll give it a friendly name and hit Save. Another lab environment here called Cloud9 Twitter Examples. If I click that, it’s just been launched, and this one has a username and password, so if I click on that link it’s … Okay, so here’s our, our editing environment. You can see I have, you know, an editor. I have a terminal down here where I can, I can look at all the files and I can run them. I have a nav tree over here, so those new files, they can save this entire tree out to their, their local file system to plan it on their computer.
Okay, so that’s cloud nine. Now, something a little more advanced is if you want to actually give students … Okay, so I’m going to add another lab. So we go to Container Launcher, and this one is called sshdtest, so we’re going to just give that a friendly name, SSHd server. Hit save, and when I click this button something different happens, so instead of getting a URL to a web … that I can copy into a terminal … So let me flip over to my terminal here, and if I just copy-paste that, it’s now prompting me for a password, the password, and I am now logged into my own Linux machine that I can, I can install software in here.
Creating the lab environments
Nate:Prepare an environment for the student with that Twitter IPython Notebook already installed. So I would create a new Container. We’ll give it a name twitter-ipython- notebook-samples. Notebook- samples, okay? We’ll create that. And it’s now being created. It’s running. So if I click on this link, this HTTP link, it will take me into that environment, and you can see that it’s empty. There’s nothing here.
So I want to actually add some instance. So if I click Upload, I’ve already got this, this Twitter oneready to go. So I just click Open and I upload that. And this is now installed inside this Container, ready to go. Ready for student view. Make this available for student use, so I need to snap shot that as an image. So I hit Save As Image
and then we’ll, we’ll just say student-twitter- notebook. You can see it’s, it’s now saving that image. It’s been saved.
So if I click on new projects, we’ll give it the same name, student-twitter- notebook. And you can specify here how long you want this to run. The default is two weeks, but that might be too long. Maybe you only want to give the student four days. We click Create, and we now have a student-twitter-notebook project here. And we go to Advanced, Container Launcher, you paste that in here and call this Student Twitter Notebook. Publish it, and you’ll see when I, when I launch this, similar to what I showed you before, I get a unique environment and I can go look and there is my IPython Notebook already loaded for me.