Friday, July 23, 2010

Virtual Machine 2.0

Latvian programmer and blogger Peter Krumins (Pete) has recently announced that he along with James Halliday. I came to know about Pete a couple of years ago. As many of you might know, I am big fan of computing, and programming. Pete's blog is a must read for anybody with a similar interest. James Halliday is known for his work on node.js, an easy and practical way to build scalable network program. He authored DNode, the node.js library that enables asynchronous, bidirectional RMI for node.js and browser. Anybody who knows something about computing would call this an amazingly smart idea. When I started dipping my legs into Haskell based parallel computing, I admired at his simple and neat demonstration of the principle of Matryoshka Doll - a beautiful abstraction that I would certainly use someday.

I digress; Coming back to the original subject, the startup founded by Pete and James Halliday is called StackVM. We know that virtualization has a lot of potential and is going to play a vital role in future. StackVM takes it one step ahead by taking the VM to web. It is a much more accessible online virtual machine, making it sharable and usable from anywhere. That means, at one point I would be able to access my personal, preferred operating system from a public library. StackVM also allows you to share your virtual machine with its state through Internet in the same way you share your photos or videos. This means that you do not have to type verbose description about your problem in Ubuntu's forum. Picture = 1000 words; Movie = 1000 pictures; Shared VM = 1000 movies => Shared VM = 1,000,000,000 words.

Fasten your seat belts. This is just the beginning of their scope. As I said earlier, one of author is wrote asynchronous RMI for node.js. So what do you expect from him? Yes. They are making networking between the StackVMs easy, just drag and drop to create any virtual network topology you wish, with firewalls, switches, bells and whistles. Also they are making something called "vmcasts" - to explain in Pete's own words: "much like a screencasts, except the computation is recorded, meaning that at any point you can break into the playing vmcast and change the course of computation (and return back to it later)."

So what are the potentials uses of such a system? I can think of a lot many, but Pete has listed a few of them:
Here are a few use cases:
  • Suppose you're selling software and you want your users to try it before they buy it. Perfect use of StackVM - put your software in the virtual machine and embed it on your products page. The potential customers can try your software before they buy it right from your website!
  • Suppose you're an application developer and have written a program that should work cross-platform. You can easily rent 10 virtual machines with Linux, Windows, MacOS, and other operating systems and test your software. Just drag and drop it into the virtual machines, and you can test your software!
  • Suppose you want to teach someone how to work in Perl in a series of blog posts (like I do), you can embed the terminal with a vmcast in your blog post, and everyone can follow your tutorial, and also try out the examples interactively, in a real shell!
  • You can build a virtual honeypot network and have hackers break into it, then analyse how they did breakins. Or, you can build a huge network and learn routing and networking concepts!
  • Suppose you want to share your work with a group of people. You can easily do it in stackvm! Just send the other people link to your VM and they can connect to it with any web browser. They'll be able to see what you're doing, comment on your work, and if you allow fix your bugs (think pair programming!)

Running virtual machines on web requires a lot of infrastructure. They are working on it and until then we have to use their demo site. StackVM is completely open source and idea open, which means any of you smart guys can contribute through code and idea.

To Pete, Good Luck with your startup! Let this small and humble beginning take you to greater heights!!