Capital expenditures

Hardware and software costs can be very costly, especially if you have a smaller company. Cloud computing allows entry into just about any type of software at a very low cost, very often at a per user rate.


The architecture inherent in cloud platforms like EC2 brings the ability to add and remove virtual machines and other resources as needed.
A small company offers a solution that lets customers stress test their web-based software ( A customer can specify 2500 browsers with automated test scrips to access their own web page at the same time, and the cost for that is a mere $500. This kind of testing was only available to very large companies like Microsoft just a few years ago.


Anywhere you have access to the web, you have access to the cloud. As time goes on, accessibility gets both more common, faster, and maybe even cheaper.

Data/File sharing

This can be a culture changer. Through the use of Wikis, websites, web-based software like Google Docs, and many other means, people across the planet can share documents and other data. I believe we're only scratching the surface of this. We're are the 1985 Wordstar version of data and document sharing.



Since you can access the cloud from anywhere on the Internet, anyone else on the Internet can possibly access the same thing. Strong passwords, security-aware programming, and smart firewalls can greatly mitigate the risk, but a small risk remains.


SAAS vendors are starting to address this through very strong contracts and service level agreements. In addition, communications companies that provide the wired and wireless based access to the Internet, as well as the backbone, have improved and are continuing to improve Internet quality.

Loss of control

A lot of IT shops struggle with this issue. They have learned the hard way that hardware and software upgrades, and new software installations can wreak havoc with systems, and can have a very hard time with relinquishing that control.

Communication between applications

This item is still in its infancy in Web-base applications. Most data-intensive systems have import and export features, but haven't been build to accommodate communicating to another application from somewhere else. The need for this feature is quite high, though, and is a priority of many SAAS vendors.

Immaturity of products

In some ways, the concept of cloud computing is decades old. But in its current evolution, it is only a few years old. Software development methodologies and tools are lagging behind, and operating systems and virtualization have just reached the point of commoditization. I don't feel this is bleeding edge, but it's certainly leading edge, with corresponding risks and rewards.

Cloud Vendors and Products


Although the term had been around for a long time, Amazon got the ball rolling with their Amazon Web Services. After the Dot com bubble, they found that their infrastructure was usually only utilized around 10%, so they thought they could try to recoup some of the money spent on building up the infrastructure. Most familiar to developers and other people in the industry are two of Amazon's products, S3 (Simple Storage Service), which simply allows you to save data on their hard drives, and EC2 (Elastic Compute Cloud), which allows you to use as many virtual computers as you want, using Xen.


Using GMail and Google Docs is using Google's cloud infrastructure, and they offer an application development and hosting environment called Google App Engine.


Microsoft introduced Microsoft Online Services, which offers Office, EMail, CRM and other software online, and shortly after announced Windows Azure Platform as their cloud platform.


Salesforce has always offered their CRM product online, and not long ago they extended that to, allowing people to develop applications on their platform.

There is a large and growing list of cloud vendors.

  • Apprenda (SaasGrid)
  • ServePath (GoGrid)
  • Sun Microsystems (Sun Cloud)
  • 3tera (AppLogic)
  • Rackspace (Rackspace Cloud)
  • Engine Yard (Engine Yard Cloud)
  • etc., etc.

SaaS Vendors and Products

With such a fluid and subjective definition of SaaS, we currently find ourselves with an overwhelming amount of vendors claiming to offer 'SaaS products'. One site,, lists 887 SaaS vendors and products. Based on some of the vendors listed, and others not listed, there are lots of products 'dressed up' as SaaS offerings, but are more along the earlier ASP model. There are also plenty of very good SaaS products that aren't listed on this site. So check your sources carefully, and due diligence is a must when selecting software services.

Here are some of the larger SaaS vendors:

What is SaaS?

To figure out what Software as a Service means, we need to define a bunch of terms:

ASP (Application Service Provider)

This seems to be sometimes interchangeable with SaaS. The generally accepted definition of ASP is software that is hosted by a vendor and delivered over the Internet to one or more clients. Historically, ASP products became popular in the late 1990s and early 2000s. They were often Client/Server applications that were converted to allow access over the Internet. They tended to be hampered by slow Internet infrastructure and weren't necessarily designed from the ground up as Internet based applications.

Cloud Computing

If you asked a group of 20 computing professionals for a definition of cloud computing, you will likely get 20 different answers. The problem is that all the answers would probably be right, if not totally complete. The general definition of cloud computing is using applications and resources on servers and infrastructure that are located somewhere on the Internet.

Grid Computing

Wikipedia defines grid computing as "a form of distributed computing whereby a 'super and virtual computer' is composed of a cluster of networked loosely coupled computers acting in concert to perform very large tasks". In practice, grid computing allows customers to dynamically adjust the amount of computing resources they need to solve a particular problem.

IaaS (Infrastructure as a Service)

The delivery of computer infrastructure (typically a platform virtualization environment) as a service. [Wikipedia] IaaS leverages the "commoditization" of hardware, which has greatly reduced the cost of computing components, and virtualization technologies that have greatly reduced the cost of managing these resources.

PaaS (Platform as a Service)

Also called cloud platform, PaaS offers the infrastructure, plus a "solution stack", as a service. A solution stack is a package of operating system and software components required to offer a complete solution. From PaaS we get a newer term, OPaaS (Open Platform as a Service), which allows users to use any development software and any operating system, avoiding locking in to a specific vendor solution.

OSS (Open Source Software)

Open Source software is "software for which the source code and certain other rights normally reserved for copyright holders are provided under a software license that meets the Open Source Definition or that is in the public domain." [Wikipedia] For the typical user or developer, it can be considered free software that you can access and modify the source code. Any support is usually offered by the community of technical and non-technical people that use the software. It has become a major factor in the computing world of today when deciding software and hardware platforms.

So what is SaaS?

Putting together all these definitions, SaaS can be defined as evolved ASP software that has been designed from the ground up as a scaleable, multi-customer solution. Current SaaS vendors use advanced capabilities of browsers, newer development tools and methods, and often leverage the benefits of cloud computing, which includes open source software and standardized hardware platforms.

Great Summary of Cloud Computing

How to Be a Cloud Computing Vendor

Mindtouch DekiWiki

I've been working at some MindTouch wiki skin changes for my client. It was pretty painful, although it's neat that it can be done at all.

It sure makes clear why new skins are rolled out with such major announcements. I guess it's a bit of a catch-22 with wikis. If they depend solely on syntaxes like Markdown and other HTML converters, average business users are going to stay away. But as soon as you add wysiwyg-style editors, things get bloated and ugly. Add in connectors for Word, Outlook, Excel, etc., and you've got a monster.

I think this wiki is pretty bloated, but it does have quite a few neat features. I'll get into them one of these days.

Blogging with Mephisto

At RailsPlayground, I followed their instructions for installing Mephisto. It actually went quite smooth, until I wanted to add a new article in the admin section. Then I kept receiving an error like "LoadError (Expected /home/xyz/mephisto/app/models/asset.rb to define Asset)". I Googled a bit, and ran across marcin ciszak's blog. He had a very enticing line in his entry: "1 solution has been found at this blog", but the link went to an apparent dead page.

So I had to buckle down and debug the problem myself.

First, I downloaded the exact same zip file to my local machine, and went through the installation process. After a couple of mis-starts, I was able to run the admin module. Unfortunately, it worked just fine. I could add articles all I want.

Then I changed my hosted environment to development in environment.rb. I figured that it wouldn't be a big deal since I didn't have anything in it anyway. I pointed the development section in database.yaml to my production database. I had to restart my fcgi process as well. I found the best way to do it is to SSH to the site, search for the dispatch.fcgi process, then kill it. [~/mephisto]# ps ux | grep dispatch.fcgi
abc 22050 2.6 0.5 46728 42128 ? S 22:28 0:05 /usr/local/bin/ruby dispatch.fcgi
abc 25701 0.0 0.0 1832 504 ? S+ 22:31 0:00 grep dispatch.fcgi [~/mephisto]# kill 22050

Now, I'm sure I'll look back at this and roll my eyes, but I'm new to the hosted environment. I've done quite a bit of Ruby and Rails development, but I have very little experience with installing/configuring other applications and hosted environments. Once I was going again, I was able to pinpoint the error. This was a problem with attachment_fu having an empty array passed to it. As a quick hack, I put a "to_a" method in the attachment_fu.rb file. Wouldn't you know it, that took care of it.

So now we're off! On to picking out a good template, and seeing what this blogging thing is all about on the other side.