Prediction #12: Rise of the (virtual) machines

Posted on January 05, 2007 at 06:32 PM by John Repko

Make it 12! Predictions and Snowfall

Might as well start with the snowfall first: another twelve inches on the ground today. We've fallen into a pattern - Thursday = storm starts, Friday = storm ends and some chunk of the day is spent digging out. Only a foot today, so maybe the weekly effect is damping out.

But on to my final prediction for 2007 - the Year of the Software Appliance.

I'm working on Pikaplanner, a lean manufacturing application that's designed to be run in a hosted environment. I have a great setup for it, with custom gems installed and a beta version of a hyper-fast Ruby virtual machine. It works great for me, but moving it to a hosting provider has proved problematic.

At this point in our malware-infested world, installing anything new anywhere is a risky proposition. Installing enterprise software can also be time-consuming: back in the day for a decent-size Oracle apps installation you would want to set aside a full week just to get the software installed.

All of these problems (custom environments, malware, and difficult installs) are remedied by the concept of a software appliance. Illustrative of the SA concept, Digium this week announced the release of it's Asterisk VOIP PBX as a software appliance. Asterisk is a terrific product—an open source (free as in beer) IP switching system. This monumental breakthrough in cheap communications systems has seen rapid growth, limited only by the difficulty of getting linux and telephony setup and configured by mere mortals.

Enter the software appliance - a bundle that includes the operating system, all the extra packages needed, and the VOIP switch software all pre-configured and delivered to be run virtual player environment. A tricky install becomes a simple, 30-minute exercise.

This is revolutionary—VMware (popular maker of virtualization products, recently acquired by EMC) products are generally already well-accepted in corporate IT departments, and encapsulated applications take a lot of the risk out of new software deloyments. SO ... if you want my Pikaplanner (complete with customized environment), all I need to do is package it up, lock, stock and barrel, and deliver it as a software appliance. The "tricky install" and "customer environment" problems are solved in one fell swoop.

A software appliance is completely contained within its virtual environment, so if you're worried about security, just throw the appliance away and start again!

That's really only the beginning. If you write linux-based applications and need to deliver them in a Windows-only environment, just package up an appliance and run it in a virtual space on that Windows machine.

I can barely scratch the surface here, but VMWare turbocharged the software-appliance idea with their VMWare Player, Xen is white-hot in pursuit of the same idea, and the force of it is so powerful that even Microsoft has to conform to it..

Billy on Open Source has some terrific writings on the software appliance idea. There's a lot more to discuss here, so for now I'll leave my final prediction that "2007 is the year of the software appliance."

Ruby Joy #2 - tight code

Posted on December 11, 2006 at 09:03 PM by John Repko

Ruby is a high level language, which means you can do generally something in Ruby in less language than it takes to describe it.

This is a life/time-saver in creating large systems, and with Ruby and Rails a little code goes a long way. For instance, in my manufacturing system Pikaplanner, if I'm assigning a product to a product family, I can create an HTML select statement that finds and collects all the product families in a single line of RoR code:

<%= select 'product', 'productfamilyid' , ProductFamily.findall.collect {|p| [ p.familyname, p.id ] } %>

A lot happens in that one line - I query the database (find_all) for all the product families, create an array of them (collect), and fill an HTML Select statement so that if the name of a family is chosen, the id of the family is assigned to the product.

A thousand lines of RoR can produce a useful system, and the blog code that underlies this post is about 3,200 lines of code, with 1,000 of them test code.

A good developer can keep 10K - 100K lines of code in his/her head. If it takes millions of lines of code to make a system, then you'll need a lot of developers, and nobody will understand the whole system. With Ruby/Rails, a single developer can create whole, usable systems, with the benefit of the consistency that comes from understanding the whole system. THAT is TIGHT.


../themes/pikasoft/views../../themes/pikasoft/views../../themes/pikasoft.