Wednesday, November 2, 2011

How to Slow the Population Growth Rate

7 Billion and You
By most of us know that our (earthlings) population has just reached 7 billion.  There are a number of discussions going on about the advantages of it and even more about the disadvantages.  With increased population we will have energy shortage, food shortage, water problems and many other problems.  Many people(countries like China) think that by controllng populaton by laws or by birth control education programs ( and some with incentives) we can slowdown the population growth.  I think that by educating people more, we can slow some population growth.
In rural parts of countries such as India, the children are looked as a help at in farmland.  By educating people, the farmland help incentive is gone and people will be producing less children.  In addition to that, educated people tend to get married little late and think about children even later. And by that time the fertility rate will come down and help reduce population.  Educating Women is another important factor.  The above-mentioned reasons apply to women as well and if we have two people with less fertility means even less children.
Urbanization is another imporant way in which population growth can be slowed.  In urban centres people have smaller places to live and that in-turn motivates the parents to produce less number of children.
In conclusion, instead of passing harsh laws(similar to what Sanjeev Gandhi did some years ago or what China does), I think focussing on other ways such as educating men and women is very advantageous.


Saturday, October 29, 2011

How to Choose a Cloud Service Provider?

There are many articles and white-papers on this topic.  I just want to give a brief summary of thought process one has to go through before selecting a Cloud Service Provider.  Also, I will not be explaining what SaaS, PaaS and IaaS or Private Cloud here.  This is based on my hands-on experience, my analysis of the landscape and knowledge gained from numerous articles on the web.

First thing to decide is which cloud model to go for.  If we need to perform a non-core function such as payroll, CRM etc go for SaaS.  Leave that to the experts.  If we are doing an application that needs very high performance and scalability requirements then go for IaaS. Ex:- a payment processing system that has to respond in a second or a high traffic news website.   If your nature of business has to follow some regulatory requirements such as HIPAA, that data has to in Private Cloud(best option, though you could still find some IaaS to do it with a specific SLA).  
Now for the rest it really comes down to architecture of your application and if you have some code already present or not.  If it already has something working and it doesnt use any standards based coding then one has to pick IaaS.  If one is starting form scratch and wants to leverage the platforms developed by the PaaS providers they will choose PaaS.  Even though that will reduce time to market by a large amount, one has to be thinking about the lock-in. Sometimes one maybe locked into the platform.  Using PaaS will give some out of box features you do not have to write code for(like some social networking libraries or mobile platforms).  A new open source standard is just out called cloudfoundry. That will actually help PaaS to move accross vendors easily.  So how important is for one to move between service providers is the last important thing to think about while picking a cloud model.

Another important thing is to check their SLA for their uptime guarantee.  Providers like Amazon EC2 will even give you options of reliability.  If your company is new and not many customers are present, you can choose the cheaper one with slightly less uptime guarantee  

Another factor is the pricing model. Will you be charged per instance or per usage.  If you are a new company, you would prefer  a vendor that charges per usage(pay-as-you-go) and not per instance configured.  That will put the costs low and there would not be any commitment charges.

The next factor to look is Elastic Load balancing availability?  This becomes very important when your application becomes a hit and you have to scale for many users.  PaaS providers normally always have it. For IaaS providers one has to see available options and pricing models.

In addition to that, one has to see if the service provider is providing tools to monitor the health and also be able to control/diagnose them. Some vendors have automation features and they are very useful. Ex:- If CPU utilization % is greater than some configured value, you could be able to fire up another instance etc.  Some vendors provide only tools to monitor and configure but not diagnose in case of issues.  Some even have mobile apps to control and manage the services on the road.  We have to understand our needs before checking that factor. 

One need to be able to pick a vendor from which you can always migrate to a different vendor very easily.  One can also have two instances running on two different vendors and one can act as a spare. So if anything happens to one vendor resulting in downtime for the application,  shifting to other vendor is very easy. Spare becomes relevant only if we choose a not so popular/reliable vendors to save some money.

Some Vendors provide Linux or Windows instances and some provide you direct virtual machine instances.  If it is direct virtual machines you might have more flexibility in choosing your application's building blocks. In addition to that, you also have more freedom in moving between vendors is straightforward. All one has to do is pick a vendor in the list of vCloud partners.

Last but not the least  is Security.  One can ask the vendor a list of questions such as, who has access to servers, database and what are their disaster recovery procedures etc.  If a vendor is not ready to provide the security and access logs, then their overall quality becomes questionable.

I hope that for someone looking to pick a cloud vendor for their business or startup this write-up will set the mindset in the right direction.

Wednesday, May 11, 2011

More Speed or More Cores?

This is a common question for everyone about to buy new computer hardware.  From a regular Joe to a multi national corporation, everyone has to think about it.  I would like to give my take on this topic from both point of views and also on why this topic is more relevant than ever.

Nowadays we have very fast processors clocked most commonly at 2.2-2.4 GHz range but can even go to 3.46 GHz (i7 extreme).  With turbo boost you might even reach  3.73GHz.  The math is simple here. The more faster your CPU clock runs, the more instructions it can run and hence your video is converted much faster.  Same is the case with your mp3 conversion or any other operation one is trying to do.   But that generates more heat and consumes more power which is very bad for computers in general and laptops in specific.   If this is happening in a data center, the cooling costs increase by even large amount (As the relation between temperature increase and energy needed to cool it is not linear).

The advent of the multi-core processors, solves just that issue.  That is one can process data more faster without increasing the clock speed.  However a dual core 1.5GHz is not equal to a single core 3GHz.  Only of the operations are done in parallel one can achieve better performance using multi core processor. By having dual core some sets of operations can be done faster. i.e. If they are very independent tasks and the data fits in the L1 cache and do not need to load L2 and L3 cache from memory very frequently.  This will happen only if the applications and the operating system are designed with that in mind.  ex: An audio encoding application might have two threads, one reading the data in format 1 from a CD and the second thread is converting in memory data form format 1 to format 2.

Not all applications are designed to suit multi-core as doing that is more complicated and hence is costly.  With apple's Grand Central Dispatch (GCD) some of that responsibility is being shifted from the application to the OS.  That is a welcome change.  Applications that make use of GCD perform better better.  I hope other platforms do something like that soon.

Today this more speed vs more cores discussion is even more relevant due to the advent of smartphones and mobile devices. The iPhones, iPads  and the numerous androids out there are doing a lot more processing that mobile phones 3 years ago.  If they have to perform much better they need more CPU speed. But of that is increased too much, the battery life will go down and the device gets too hot.  Recently devices like iPad 2 and Motorola XOOM started having dual cores.  It is a welcome change.  I am not sure how many applications currently make use of the dual cores but I can see that one day 'hopefully' soon everyone will make applications with that in mind.

So by now it must be clear that all we need is more cores and just we have to make sure that the OS and the applications are made to use them.  When someone is building their own data center they would have already taken care of it.  A normal consumer just has to pick the OS that has built in support for that.
This is yet another way to Go Green!

So what will we have future? Maybe in the next 5 years or so we will have a multi-processor system (not just a multi-core) and the OS (ex:- Haiku) would be able to handle more than one processor very easily.


Please leave a line if this helps!

Friday, February 11, 2011

Cloud Computing and Entrepreneurship

By now almost anyone reading this blog would have heard about cloud computing.  Cloud Computing enables a user consume computation service without knowing its exact location.  Cloud computing is divided into 3 main categories:  'PaaS(Platform as a Service)' , 'SaaS(Software as a Service)' and 'IaaS(Infrastructure as a Service)'.  I will explain each type as and when needed.  


According to The National Institute of Standards and Technology (NIST): 
"Cloud computing is a model for enabling convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, servers, storage, applications, and services) that can be rapidly provisioned and released with minimal management effort or service provider interaction." 


It has a lot advantages including scalability, agility and cost effectiveness.  There are a number blogs about what it is and what its advantages are and I would look to focus on how it promotes Entrepreneurship.  Entrepreneurship can be further divided to tech startups, small businesses, performance arts etc.  I will try to explain how cloud computing can be used to start/succeed in each field.


Technology Startups: Lets say someone has a cool idea about the next facebook or google.  They would write a web application and then host it.  If it becomes popular then they can start charging money or use ads.  To launch a website and make sure it is available all the time one has to provide redundant servers and power.  Policies for backups and load balancing strategy should also be in place.  And many times the servers has to be residing in multiple location to provide reliable service.  For a 1-5 person startup all these maintenance and administration activities drain a lot of energy and money.  They could also use some hosting services that provide the above mentioned services.  Many times it comes with a high cost and some other contractual commitments.  For someone studying in a college or from a developing nation these costs are inhibiting factor.  This is exactly where cloud computing helps.  One can use any of the 'Platform as a Service' provided by the vendors.  By platform it means raw computing power, storage and I/O bandwidth.  Some main vendors in this field are Google App Engine and force.com.  


Once we use a platform as a service from any vendor they would take care of all the redundancy and backups and load balancing.  They would make sure that the application/website is up and running at all times and provide us with monitoring tools.  What is even better is that they provide you some free usage.  Google provides free 1GBytes of incoming and outgoing bandwidth and 1GB storage.  So until your website becomes famous you are pretty much not paying anything to google.  Lets say you wrote a web application that will show the results of some lottery that takes only once every month.  And your website has a lot of hits only on that day, you can just pay google for that day and the rest will be free.  It is pretty much like our electricity bill.  You pay only what you use.


Some platforms such as force.com will provide you additional features like social networking integration, drag and drop UI development,  mobile support etc.  These guys give one app for free and more than one app they will ask you to pay.  They also have app stores that already have a number of customer base.  So you can try to target then and start selling to them or let them try out for free initially.  So using these platforms you have access to potential clients.  Using platform as a service will make the tech startup entrepreneurs focus on their application and not the other maintenance stuff.


Small businesses:  Many businesses would like to have an online presence and maybe have an online order or status feature.  They would also like to have inventory management systems and also the ability to create invoices and manage expenses.  Providing support to the customers via phone, IM, twitter etc would also be a nice feature that would help them.  Normally small businesses would buy software from other and pay some consultants to make websites and get it hosted at some hosting service provider.  These kind of services would help them get more revenue.  But only by having more revenue one would be able to pay for these services.  Its like a chicken and egg problem.  Every small business owner would be facing this dilemma at some point in their life.  Cloud computing comes to the rescue again here.  These people would use something called 'Software as a Service(SaaS)'.  In SaaS you are rented an application.  You use an online application to fulfill your needs and you are charged based on your usage.



One can use website building and hosting services from the likes of wix or siteforce (many other alternatives available).  They come with different types of payment models.  Wix is free if you use their name on your site and agree to let them place their ads.  If you want to remove their name you have to pay about 10$ per month.  But they will help you to create and host your website and also provide you ecommerce solutions.  One need not hire a consultant to do basic activities.  So a small business can start with their own site initially and then once they make enough money they can use professional services to improve.  This way, chicken and egg is avoided.  For inventory management and invoicing one can use services from intuit etc.  They also have packages that are affordable to small businesses.(starting at 12 $ per month)  So one can just pay that as a utility and avoid high capital expenditure upfront.  For providing automated customer support one can use the tropo cloud.  They have some free usage and anything above that is pay as you go.  So if no ones the service no one pays.


Cloud has not only changed the way technology and business works. Now they started to change the way music is being made. Services such as Indaba, Soundation, Audiotool , Echonest could be used to collaborate, synthesize and release(on itunes store) audio albums over the cloud.  During Dreamforce 2010 will.i.am was also raving about using cloud to produce music collaboratively.  


There are many other miscellaneous cloud tools such as dropbox, soundcloud, skytap, iCloud etc that provide other services for consumers.  Among all the services I use dropbox and google app engine very often.  I have used force.com and wix.com but did not use the other services I have mentioned above. 


To conclude, cloud computing promotes entrepreneurship by providing below advantages:

  • No Capex (capital expenditure) and low Opex (operational expenditure) due to its pay-as-you-go model.
  • Worry about the your application or your business and not about the computing infrastructure
  • Scalability and high availability guaranteed.
One can say it is Outsourcing 2.0.  But it is not a passing fad as some critics says and it is here to stay.  Entrepreneurship is key for the global economy and Cloud Computing would enable that.  Cloud computing is also the most efficient way of computing.  This would help reduce overall energy consumption and hence reduce global warming.  
In short- Go for it.