How to offer Free Trial of your online software to clients

Running a bootstrapped Software-As-A-Service business (SAAS) has taught me a few lessons that I thought to share in case anyone else is reading.

Offering a Free Trial Period for your product can bring in more traffic, users and ideally more paying clients. However, Free Trials can sometimes be a pain for your business as they bring their own set of problems. Some of those problems are:

  • A prospect signs up for the free trial and starts abusing it (e.g. creates multiple accounts for the same client to bypass the trial period restrictions)

  • Lot of prospects signup for the free trial but don't really do anything. This creates unncessary clutter in your product. The reason that a lot of people are signing up could be due to the free trial option.

  • You end up providing support to the free trial members which sometimes could cost you more than you expect.

My suggestion on how to offer Free Trials below

Credit Cards upfront vs No credit card upfront

If the cost to acquire a new paying client is high for your product, then I will suggest that you take Credit Cards upfront but instead of charging an amount, just do a "authorization". This ensures that a valid credit card is added which usually means that the prospect is more serious and has a higher probability of converting . If this cost is relatively low, then you may get away with just an account signup but no credit card upfront. Why ? Because if the cost is high, it means you will spend a lot more time (which is money) and money supporting those prospects while they are in trial period.

Always make clients signup with a valid email

This is a no-brainer but don't make the mistake of letting people create free trial accounts with fake data. This will not add much to your chances of getting an actual paying client. Make those clients signup and activate with a valid email.

Restrict on Time, not Feature

This is my personal opinion but I would say that during a Free Trial, don't try to restrict the clients from using the products exactly as they will if they were paying. The point of free trials should be to let a prospect decide if the product is what they need and having access to a stripped down product does not help. Just set an expiry timeline for the free trial and move on.

Reach out to the prospects during their trial period

Don't wait till last min. Reach out to the prospects while they are in trial period. Offer them help and ask them if they would like to see more. This of course depends on your product and your capacity as a company but the more personalized you can be, the better it is.

Gentle Reminder before Trial Period Expiry Date

A lot of clients would love to convert but they probably forgot about it. Never forget to remind them gently that their trial is expiring.

Hope this helps.

Goddamn Laravel, you rock!!

I am building an API for my product and decided to go with Laravel 5.1 after researching frameworks extensively. Not to mention that I love Python and Flask framework already and would have certainly gone with it to build the API part. BUT for some reason, my existing product is in PHP and I thought of keeping it all in PHP for the backend.

Enters Laravel to the rescue. I have to say that it is damn good for building CRUD apps at least. I specifically love the "Eloquent ORM". It made my life soooo easy when it came down to defining relationships between models and using the relationship to actually create data in the backend. Imagine this:

You have a model called User and another model called roles. The relationship is:

One user can have many roles and one role can be assigned to many users. This means that it is a many to many relationship. Here is how you do it in laravel (code for illustration)

class User extends Model {

    public function roles() {
       return $this->belongsToMany('Role');

}// End class User

class Role extends Model {
     public function users() {
         return $this->belongsToMany('User');

 }// End class Role

Let this sink in for a second. Just with these lines of code, we have established a super powerful many-to-many relationship. Now, the real magic happens:

Create new data
$user = User::whereId($user_id)->first();
$role = Role::whereId($role_id)->first();


OR (you only need to do 1 of these attach() calls)

Fetch existing data
$user_roles = $user->roles()->get();

Similarly for the role,

$role_users = $role->users()->get();

Beautiful. So intuitive and easy to read.

Sharing data between Angular Controllers

I had this controller where I was trying to create a new user for the application. But then I thought about creating just one form for both new user and edit user as the form should be identical for both.
For whatever reason, I have 2 controllers to handle this. One where it displays the list of all users and also keeps a $scope.selected variable that keeps track of user that is selected to be edited.
The 2 controller is just to create a new user.

The problem is that if I try to edit an existing user using the entire code from the 2nd create user controller (which makes sense) to avoid duplicating code, I ran into a problem as the $scope.selected data is not available within the 2nd controller.

angular service comes to my rescue even though there are other bad ways of doing this including using the dreaded $, $scope.broadcast etc which is usually not recommended.

Here is how I did it, thx to some googling and stackoverflowing as well of course:

    .service('sharedUserService',function (){
     return {
        selected: {
});//End sharedUserId service

Now, all I need to do is to set this selected variable in 1st controller like:

sharedUserService.selected = $scope.selected;

and then refer to it in the 2nd controller :

$scope.selected = sharedUserService.selected

Remember, you can share a single value or even objects. Usually I advise using objects as javascript loves objects.

AngularJS: Routeprovider vs Stateprovider

Working with angular can be a bit daunting at times. One of the things about angular is the concept of Routeproviders vs Stateproviders. Both can do the job for you but here is a really good explanation found on Stackoverflow.

"Angular's own ng-Router takes URLs into consideration while routing, UI-Router takes states in addition to URLs.

States are bound to named, nested and parallel views, allowing you to powerfully manage your application's interface.
While in ng-router, you have to be very careful about URLs when providing links, in UI-Router you have to only keep state in mind.

So, even if you decide to change your URL some day, your state will remain same and you need to change URL only at .config.

While ngRouter can be used to make simple apps, UI-Router makes development much easier for complex apps."

My favorite Quotes

I believe in having a list of favorite quotes as by reading this list, you can quickly tell what kind of person I am in general:

  • Excellence is not a skill. It is an attitude
  • Shoot for the moon. Even if you fail, you will land among the stars.
  • Always borrow money from a Pessimist. They never expect to get it back anyway.
  • Life is worth at least 1 skydive (Ok I came up with this. See this video to understand what I am talking about)
  • You’ll always miss 100% of the shots you don’t take.
  • Impossible = I-M-POSSIBLE
  • Courage is being afraid but going on anyhow
  • Give a man a fish and you feed him for a day; teach a man to fish and you feed him for a lifetime
  • I may not be there yet, but I'm closer than I was yesterday

And I really believe in the 7 Habits of highly effective people concept.

Tools to start a Software-As-A-Service (SAAS) business

I am running a SAAS business and thought to share some of the critical tools that we use for the business. Of course, it can vary based on your needs but if you are running an online web based SAAS business, then the following tools are very handy.

DISCLAIMER: Some of the tools mentioned below may have referral links that gives me a very small commission if you end up subscribing. This however does not mean that I am recommending these just for the commission. We use them happily at our company.


This one is important as to where should you host your servers unless you are big enough to build your own data center.

I highly recommend using A Small Orange as their customer support is excellent.

Some other good alternatives:

  • DigitalOcean. They have a great User Interface to setup VPS that they call "droplets". For $5/mont, you cannot go wrong with their 512MB (memory) and 1GB (disk). FYI, this blog is hosted on a digitalocean droplet.
  • Linode: Another decent option but a bit expensive compared to DigitalOcean.
  • Amazon AWS. If you need flexibility and scaling as you go along, AWS is a good idea. But be careful with AWS. There is no upper limit on usage and hence you can get a huge bill if you end up using too much resources.


  • Mandrill. My pick so far. Gives you 12,000 emails FREE every month. Nice and simple API and a dashboard as well.
  • Amazon SES. Equally good as Mandrill but have not used it for our business yet.
  • Mailgun( Another good one with high ratings.

Dev Environment

  • Git (version control)
  • Gitlab/Github/bitbucket (git hosting)
  • Editor/IDE
    • phpStorm
    • WebStorm
    • Sublime text


  • Vimeo. Great pricing for pro accounts. You can upload upto 20GB/week with no overall upper limit for only $199/Year which comes out to be $17/Month. Great deal if you have lot of videos for your business. Offers decent API.
  • Wistia. Their analytics is the best in my opinion. Good Interface/UI as well. But they are a bit expensive compared to Vimeo. They charge you by bandwidth usage unlike vimeo. Another huge feature they have is "SubAccounts". Good API.


  • Stripe. Hands down the best Payment provider/API so far. You can start taking payments on your website within minutes and it is great for developers with their awesome and easy to use API.
  • Braintree
  • Paypal. The old beast and to be honest, I am listing it because it is most widely used in the world due to its extensive reach but really there is no reason to recommend Paypal. Horrible UI, bad API and many more issues. Avoid paypal if you can.

Static content/CDN

  • Amazon S3
  • Cloudflare
  • MaxCDN

Project & Task Management

  • Asana
  • Trello
  • JIRA

Customer Support

  • Live Chat
  • Olark


  • Skype
  • Mightycall
  • Grasshopper

UI Mockups and design

  • Balsamiq
  • Napkee


  • PHP, JavaScript, Python, Ruby, HTML,CSS
  • Twitter Bootstrap
  • AngularJS, React, Meteor (front end JS frameworks)
  • Laravel (PHP framework)
  • Django & Flask (Python frameworks)
  • Rails (Ruby framework)
  • NodeJS (JS backend)

Quitting my job to become an entrepreneur

I have been meaning to write this post for a while now. I started a bootstrapped business as a part time venture but I finally made the call to quit my full time job in January 2015. The reasons I wanted to do this :

  • I want to take control of how I spend my time. For example, I can now start working the AM after I drop my kids to daycare while wifey goes to work. No more rush hour commute for me!!
  • I want to create something of value that can hopefully exist even after I die (read: a company that builds a real product and solves a real problem)
  • I love creating something of my own
  • I hate the usual 9-5 work routine. I like flexibility. See my first point again.
  • I hate commuting in traffic. Did I say that already ?
  • Create something of enough financial value that I can hopefully give it to someone else even If I cannot run it anymore.
  • I want to be my own boss. I know this get trickier as entrepreneur specially if you have investors and board of directors but for now, I am enjoying it being 100% bootstrapped.

I have to say that until I did this, I worked in the industry for 10+ years and I never really hated my job itself. I met some really smart people whom I still try to stay in touch with and I learned a lot working in my professional career. I never had a job that I truly hated. So what was the problem ?

I just had that itch to do something of my own. Really bad itch. It was itching for years before I could actually take action but I am so glad that I did this.

Downsides ? so far, my income has gone down dramatically (< 50%, ouch) and no more easy money (yes, I always felt that my jobs made easy money for me. secure paycheck and all). The wife does not like this but she totally understands why I am doing this and what the potential is.

If I fail, I will not be disappointed because I will have no regrets. I didn't want to be on my death bed and cringe that I never tried to do something of my own. That part is taken care of.

Ok, back to work now.

A decent Hotel near Mumbai International Airport

Due to a family emergency, I had to travel to India this week. It was a really short notice and I ended up buying a flight that did not brea my bank too much for a one way ticket. I travel to my hometown which is a small metro compared to the bigger metros like Delhi/Mumbai etc. To go to my hometown coming from outside India, you either take a flight to Delhi (most ideal) or second choice Mumbai/Kolkata etc. Mine ended up being Mumbai as I got an ok deal considering it was last minute ticket.

So, I had to stay one night in Mumbai before my flight next morning. After asking a few people who might know, I searched online and came across Holiday Inn which is just about 2 kilometers away from the International airport. It is not exactly Taj or Hilton but I was pleasantly surprised to see really good quality service and the room was excellent. Very happy overall.

If you need a hotel close to the Mumbai Internal Airport, I definitely recommend looking at Holiday Inn.

Oh, and to get there the best and cheapest way, take Prepaid Taxi from the airport. Prepaid taxis are safe, decent and the most economical way to travel around in a taxi. Don't bother booking any private taxis or anything like that. They might have good service too but for short travel from airport, you don't need that extra expense that they will charge.

Why you need to learn SQL

Lets face it. We all work with computers (well a lot of us) and at the end of the day, we are processing "information" a.k.a "data". Whether you are an accountant, a marketer, a sales person, analyst, real estate agent, banker, customer service agent, insurance agent, programmer etc, you have a lot of information to work with.

When we use computers, we use some kind of a software or a Tool to work with data. This can be in the form of a front-end or "GUI" (Graphical User Interface) or screens. Most of us are given this tool to work with actual data that is in the background a.k.a "backend" or more officially a "
database". Many times, we are limited by the functionalities that the screens/GUI provides and all we care about is getting the actual data behind it. We don't really care how pretty the GUI or the screens look like, we just want the damn data behind it

This is where SQL comes in handy if you know just enough of it.

  • Learning SQL gives you "direct" access to the actual data within a system.
  • You are not limited to querying what the front end screens or pre-designed reports provide you. You are your own boss. Query whatever you need (restrictions apply of course but still very powerful)
  • You remove reliance on an IT person or a developer to give you "your" data.
  • You can create your own custom reports by pulling in whatever data attributes you want on the fly.

Disclaimer: I am writing a book on SQL that teaches beginner to intermediate SQL. This book focusses on the "why" aspects of SQL and not just the "how".