Be Shameless

As an entrepreneur, you have nothing to lose by being shameless. Always promote your company and product. This has been a difficult lesson for me to learn. It goes against my personality to spend much time talking about myself and especially to praise something I’ve done. It’s not that I don’t like the attention, it’s just I’ve always felt if you are doing something praiseworthy then others will eventually notice on their own.

But that takes too long and might not ever happen. Don’t wait until the crowd notices on their own. Make them notice. Be like WebEngage and tell the world you have 9000 customers and are gaining 1000 customers every 30 days. Or be like Wingify and scream that you’re doing millions in revenue without having raised a penny.

There’s too much noise in the world for people to pick out your story unless you push it first. Whatever your goal might be, you have to be your #1 promoter. Want attention from investors? They follow those who are already being talked about. You won’t get any of this buzz till you talk about yourself. Want to be in end of year “best x startup lists” by startup blogs? These blogs don’t actually have a clue who is doing well and who isn’t. It’s only based on perception. But you need to create that perception of success.

We’re soon going to be doing the same. We haven’t been telling the world that CouponDunia is doing over 1 million visits a month, or that from Sept 2012 to now we’ve gone from a 4 person team to a 16 person team and still remained profitable. Or that we are seeing awesome initial returns on DealDunia or a bunch of other good things that up to now we’ve kept to ourselves.

The goal is not to receive attention for the sake of stroking your ego (though its a nice side perk) but to actually help your startup. When you build buzz around your company, doors open much easier. People take your phone calls, meetings are easier to set up, And it becomes much easier to sell your product. The quality of your job applicants increases. It takes less work to convince someone to join your team.

So get out there and start talking about yourself. Tell the world all about the great work you’ve been up to.

Don’t Be Afraid To Imitate

Not all of us are good at coming up with brilliant new ideas. That doesn’t mean you can’t be a successful entrepreneur. Be a copycat instead. Yes, imitate. There is absolutely nothing wrong with taking an idea that works in one place or within one context, and doing virtually the same exact thing somewhere else or in a different niche.

A few geeks might look down on you and say you couldn’t come up with your own idea. But that’s stupid. I’d rather be a hugely successful entrepreneur with a non-original idea than a struggling entrepreneur with an original idea. If you want to startup, but you can’t think of a new idea, just look for ideas from the West or even around you. In India we’ve seen many clones do well:

  • Burrp was India’s Yelp (until Network18 destroyed it)
  • Ixigo is India’s Kayak
  • Mswipe is India’s Square
  • MakeMyTrip is India’s Expedia
  • Baazee was India’s eBay (eBay acquired Baazee)

So How Do You Actually Find Ideas?

You can either import an idea from the west, export an idea from India, or create your own niche.

i. Import something from the West

Read the tech and entrepreneurship blogs from the West and look for promising startups. But then consider the following filters:

a) Is their product geographically specific or limited?

You only want to import an idea if your iteration actually solves a problem that is geographical in nature. There is no point in being the KISSmetrics of India because there is absolutely nothing that is geographically specific about KISSmetrics. The Google of India is Google because there are no geographic borders to information. But the Expedia of India is MakeMyTrip because Expedia didn’t offer a product that worked for Indians. MakeMyTrip allowed Indians to buy domestic air tickets while Expedia didn’t.

b) Are you solving a problem that also exists in India?

Would you rather be the #1 dating site in India or the #1 matrimonial site in India? You have to decide whether the startup you are copying is actually solving a problem that is worth solving in India. In the West, dating sites are huge business. In India dating sites have struggled to survive. Don’t try solving a problem that doesn’t exist in India.

c) Is this idea already being copied left and right?

In early 2011, thousands of Groupon clones emerged all over the world. Unless you were quick to the ground and one of the first 2-3 clones in each country, you had no chance of sustainable success. You want to avoid copy pasting the most hyped startup ideas.

I started CouponDunia, because it passed all three filters. Coupon sites generally target one specific geography, Indian are interested in saving money when shopping online, and creating a coupon site was not the hot thing to do at the time.

Bonus Tip: Don’t just look at the USA for startup ideas. Look at Europe, Asia, Africa, and South America too.

ii. Export an Indian Idea

There are many Indian startups that are solving uniquely Indian problems, right? Sort of. More likely they are solving problems that apply to many countries with a similarly low per capita GDP. Don’t be afraid to take an Indian idea and export it outside India.

Here are a few potential startup ideas that could be exported (a few may have already been exported or be too late to export – but at some point you could have seriously considered exporting any of the following)

  • Freecharge with it’s concept of “free” recharges. This idea could potentially work in many countries where the online recharge market is nascent and pre-paid is more common than post-paid.
  • Zipdial and the concept of missed call marketing. It’s such an easy way to create engagement between users and brands. Why can’t this work somewhere else?
  • Redbus and the creation of an online bus booking aggregator. I don’t think there was anything similar anywhere else in the world when they launched.
  • JustDial solving local search engine via call centers and an army of local salesmen. In the absence of mass Internet usage, local search is handled via telephone call center queries and/or text message. There are many other countries besides India where Internet use is minimal and likely to take years to get to massive penetration. 

iii. Create a New Niche

Hot or Not was one of the earliest social sites to go viral back in the early 2000s. The site asked users to post a photos of themselves for others to rate their attractiveness on a scale of 1-10. Users who found each other mutually attractive could also be connected with each other.

I looked at the popularity of Hot or Not in the US and decided that while the site was addicting it was most likely to be enjoyed by white people. If you were of an Indian background in the US, you probably were equally as interested by the concept but much less likely to use the site because the chances of finding a mutual pairing on a site of predominantly white people was not very high. And being Indian you wanted to know how you fared in terms of attractiveness vis a vis other Indians ranked by Indians.

I seized on the opportunity and created an Indian Hot or Not site, RateDesi. At one point we were up to 25 million pageviews per month and were making a decent amount of money. We had taken a proven idea and adapted it to fit a new niche.

Many successful businesses have been created by taking an existing business model and tweaking it to work a different niche. Etsy is Ebay for artists. Zappos was the Amazon for shoes. Zomato is the Burrp for restaurants. LinkedIn is the Facebook for your professional life.

The one caveat to this approach is you shouldn’t choose a niche that is too small. An Indian Hot or Not site was not a scalable business, but I started that while I was in university and it was something I managed in my spare time. But if you are going to drain all your energy, money, and time into a startup, do at least choose a potential business where the returns on success are very large.

Final Thoughts

If there is only one thing you take away from this post it should be that there is no stigma attached to copying an existing business and finding a new home for it. It might feel like you are taking the easy way out and a few holier than though geeks might not appreciate your business, but remember ideas are a dime a dozen. It’s execution which is the differentiation factor.

A Shift In Focus

Up till now the majority of the posts on this blog are of a technical nature: databases, coding, server config, performance optimization. But most of those posts were from 2009 or earlier as I’ve pretty much stopped blogging since.

In the meantime a lot has changed in my life. I founded CouponDunia in December 2010. We’ve grown to be India’s most popular coupon code website and are a very promising startup based in Mumbai, India. Yes that means I’m no longer in Boston. I’ve left the comfy confines of the area of the world I’ve always called home for a land that is, to say the least, different.

My interests have also changed. I’m still a techie at heart, but now I spend more of my time thinking about product management, marketing, sales, and business overall. And this thinking is done in the context of the Indian startup scene. So going forward my writing will be targeted towards an Indian audience, especially those who are trying to build successful companies in India.

Amazon DynamoDB Looks Like A Game Changer

Today Amazon announced the availability of DynamoDB which is a scaleable NoSQL Database service running on SSD disks in the cloud. It’s highly scalable, highly reliable, and meets the performance level that you request from it (via “provisioned throughput” where you use a dial in their console to select how many reads/writes per second you need).

NoSQL itself is not a game changer. MongoDB has been a pretty awesome NoSQL database and theres also Cassandra and many others. But the largest headache that comes with databases is managing reliability and performance as your database grows. Even when it comes to MongoDB, to get it right you need to first start by considering the right RAID scheme, then create a backup strategy, and eventually implement a replication setup. DynamoDB throws that all out the window. They will manage all the tedious background noise for you. Of course, as a new product we will see if they deliver what they have promised. But AWS generally has a very good reputation and their pre-launch clients have reported good success with DynamoDB.

One concern users may have is whether they will be “stuck” on DynamoDB if they choose to use it. It doesn’t seem like they have too many unique features so you shouldn’t have much trouble. It’s basically a key/value hash so you won’t have much trouble exporting it to the other NoSQL databases if you decide to move on. Of course importing your database from a RDBMS to DynamoDB (or to any NoSQL DB) will require many changes to your application.

Here’s a video explaining more:

5 Reasons Why There Is No E-commerce Bubble in India

For months we’ve been hearing whispers of an E-commerce bubble in India. But with the failure of VC-backed Taggle in December, those whispers exploded into a roar (see here and here). The failure of that single startup somehow provided evidence to critics that the whole segment was in serious danger. One year earlier, e-commerce was considered the most promising online category by the tech community, investors, and the media alike. Sentiment has flipped so dramatically that the new conventional wisdom is that 2012 will be a year of reckoning and major consolidation for e-commerce merchants.

But the race to jump off the e-commerce bandwagon is unnecessary. Here are 5 under-looked reasons for why we are not in an e-commerce bubble

REASON #1: A Few Failures Does Not Make a Bubble

It is absolutely normal for there to be a few failures in new markets. VCs don’t have or expect a 100% success rate. There will be at least a few spectacular e-commerce failures but as long as it is balanced out by an even greater number of successes, we’ll continue to see valuations near where they are now. Yes, each failure will naturally send valuations downward, but it’s going to take a fundamental weakness for one to come to the conclusion that valuations are at a bubble level.

A bubble implies that the underlying financial assumptions of the industry as a whole, both present and future, are unreasonable. Taggle raised money with the assumption that becoming a leader in the Daily Deal space would make for a highly valuable company. That assumption was correct but Taggle failed due to bad execution. So let’s not make Taggle out to be Bear Stearns or Lehman Brothers.

REASON #2: Daily Deals Is Not E-commerce

Many have rightly identified Daily Deals as a saturated market that is dominated by the existing 2-3 big players such as Snapdeal and Mydala with no room for new entrants. But, the Daily Deal segment is not real e-commerce. Let’s not extrapolate the saturation of a sub-segment of e-commerce to come to conclusions about e-commerce as a whole. Daily Deals has declined in popularity because of audience fatigue. Who can really put up with offers for facials and yoga day after day? It was a novel concept but one with a short shelf life.

But selling products to consumers is a time-tested business. Users have not tired of buying online. They have tired of buying useless coupons online. Taggle’s failure was indicative of the saturation of the daily deal market ONLY. Taggle was unable to create any type of differentiation or scale compared to their competitors. Yes, they pivoted to selling products but that was a case of too little, too late. Once again, don’t read too much into Taggle’s failure. They executed poorly within a declining sub-segment of e-commerce.

To that, some of you might say “but even the retail e-commerce merchants are not profitable.” However…

REASON #3: We’ve Learnt From the Dot Com Crash

The doubters compare the current e-commerce market in India to the dot com boom era in the USA in the late 1990s. During the boom, a whole new set of metrics was created to evaluate the worth of a businesses such as “eyeballs” or “mindshare.” Profitability in the near or even midterm was ignored because investors and executives believed the Internet would grow so substantially it would make up for astonishing levels of spending. This thought process created an environment of epic failures such as eToys.com which raised $220 million, went public, reached a market cap of $11 billion, and then went bankrupt two years later.

So what makes India different in 2012? Well for one we have the above as an example to learn from. Most investors and founders are weary of spending of their startups spending cash too quickly because of lessons learnt from the dot com era. Yes founders are looking for money to accelerate their growth and improve their tech, logistics, and supply chain. But the scale of these investments is nowhere like it was in the USA in the late 1990s.

The examples of Amazon.com, NewEgg.com, Drugstore.com, and BlueNile.com are proof of success from the same period. They go to show that if a merchant follows a reasonable financial model that it can survive for years without being profitable. As long as revenue is following a similar trajectory to spending and the company is making a healthy gross profit (revenue minus cost of goods), it will be in a position for a safe landing if the market goes south. Management can reduce its investments and overhead to turn itself profitable or at least conserve cash (albeit doing so will sacrifice future growth during the down period). The four mentioned merchants have vastly different stories but all show that putting growth before profitability in e-commerce is viable when done in an intelligent fashion.

REASON #4: Women Have Yet To Begin Shopping Online

The most significant aspect of why valuations of e-commerce startups are priced at high multiples is because of the huge growth that is expected. If that growth does not materialize, then it certainly would be a bubble. To estimate the future e-commerce market, most look at indicators such as the growth in online penetration, growth in income, improvements in reliability and coverage of couriers, easier payment methods, etc. These are all important metrics and will contribute greatly to the e-commerce story. But, there is one important angle that no one is talking about:

Women love to shop (sorry for stereotyping!). Are shopping malls full of men or are they full of women? It’s the ladies who drive the offline shopping market. So then why is it that the online shopping world is dominated by male shoppers to the point that our internal statistics indicate that online shoppers are at least 80% men? That discrepancy is because women tend to lag behind men when it comes to adopting new technology. Online shopping is still at a nascent stage in India, so it’s to be expected that not many women currently shop online.

But it’s only a matter of time until Indian women start to become comfortable with shopping online. As that process begins, a whole new wave of growth in the e-commerce market will begin. It will effectively double the reach of e-commerce merchants within a few years. In the USA, more women shop online then do men. India may not reach that point for years, but there’s absolutely no reason why women will not start to shop online in large numbers in the near future which will be a boon for the e-commerce market.

REASON #5: Organic Growth Makes Up For Any Bubble “Burst”

Let’s pretend that six months or a year from now it turns out the e-commerce bubble theorists were right. Valuations were too high and many more e-commerce merchants fail because they burnt through their money and couldn’t convince VC’s to invest in their subsequent down-round.

Okay now what? Well if it’s a bubble, you won’t see further investment in the space for years because of the scars of losing money. But what will happen, even in this worst case scenario, is that the failure of those startups will leave a void. Demand for online shopping from consumers will vastly outgrow the number of quality e-commerce startups in a very short time. Entrepreneurs will continue to jump into the e-commerce space. Investors will be unable to ignore the staggering amount of growth in e-commerce and will resume making investments

You just don’t have real bubbles in categories with extreme growth. You have a few failures and a correction of valuations. The bad startups and unwise investors are weeded out, but then investment activity will continue in that same space to service the amazing growth you’ll see. It’s just not a bubble if we can safely predict we’re going to see investments and growth in that sector for the next ten years. If some of the me-too investors in that category get burnt, then call it a slowdown or correction if you must, but it’s no bubble.

A real bubble is one in which there is no impetus to restart growth. For example, once the US housing market bubble burst, the only thing that would have saved the future of the market was sudden new demand for housing. And of course that did not materialize because there was no population growth or wealth growth in the US. But in this case, if e-commerce valuations do crash, its effects will be minimal. The increasing demand Indians have to shop online is in no way tied to the valuations of these companies and in no way would be affected by a drop in valuation. The continued growth in e-commerce would revitalize the market and spur new VC investments into e-commerce very shortly after any crash. Let’s not call it a bubble if the “bursting” of that bubble isn’t even going to cause lasting damage.

CONCLUSION

E-commerce in India is healthy. Taggle failed but it was not indicative of a systematic problem. A few other VC backed e-commerce startups may even fail, but we are seeing and will continue to see many success stories. As long as those startups continue to spend money within reason, the amazing growth in online shopping will make up for moderate short term losses. If anything, we may see a correction, but that will be short-lived as demand from consumers for quality online merchants will push money back into the e-commerce space.

That’s My Desi Life (TMDL)

I recently opened a new website ThatsMyDesiLife.com which parodies the “funny” or “different” (depending on your perspective) elements of desi culture via user submitted short stories. This is basically a spin off of FML, similar to what others have done by using the fmyscript software.

However, after purchasing that above script I added an API on top and have now (in conjuction with another developer) created an iPhone application for the website. I’m still in the process of learning the Cocoa framework and Objective C but its an interesting change from years of PHP. It’s nice to have a stateful process that can keep track of asynchronous requests and events unlike HTTP. And, the development tools (xcode and interface builder) are very nice to use. It was a bit of pain getting use to using a Mac though.

Anyway, take a look at screenshots from the app:

   

Xdebug is slow

Xdebug is a wonderfully helpful debugger and profiler for PHP. Primarily it serves two main purposes (at least for me). First, it makes error messages so much more helpful because it contains a stack trace that can even be configured to show actual function arguments. Here is an example

Second, it helps profile your code by creating an output file with a full listing of all functions called and execution time for your script. Using a tool like kcachegrind or wincachegrind the output can be visualized in an easy to understand format. I am an avid user of xdebug’s profiling tool as it’s the best way to identify performance problems in your php applications. With all that said:

DON’T RUN XDEBUG ON PRODUCTION.

I’m sure you can imagine the profiler’s output being very large for applications with thousands of function calls. I’ve seen 100MB+ output files. Imagine if php had to create a 100MB file for every request. By turning on xdebug.profiler_enable_trigger, you can at least selectively run the profiler.

Yet, even when the profiler is off, the other primary function of xdebug (detailed stack traces on errors) causes your php instance to track lots of extra information slowing down execution. On a recent real world example where I turned on xdebug temporarily (with profiler off) and then shut it off, xdebug caused average response time to go from 400ms to 700ms.

Understanding The Importance of Passing Along Host Names in a Reverse Proxy

In earlier posts I’ve introduced the benefits of Nginx as a lightweight web server that can be used as a reverse proxy and even to load balance. After using Nginx more extensively, I want to share one lesson that was extremely important for me to get a better understanding of how to configure my reverse proxies to work as intended without wasting hours debugging or needlessly over-configuring.

Let’s take a look at a very basic reverse proxy configuration:

#nginx configuration
server {
   listen       80;
   server_name www.mysite.com;
   
   # pass along header with reverse proxy requests
   proxy_set_header Host $host;

   # pass along all requests to apache waiting at localhost:8080
   location / {
      proxy_pass http://localhost:8080;
   }
}

Apache’s configuration then would look like

#apache httpd configuration
Listen localhost:8080

        DocumentRoot /path/to/webroot
        ServerName www.mysite.com

I want to point along two important lines. First “proxy_set_header Host $host” in the Nginx configuration and “ServerName www.mysite.com” in the Apache configuration. The first line instructs Nginx to pass along the original host header to Apache in essence tricking Apache into believing the request came directly from the end user.

And because we want Apache to believe it received the request directly, we repeat the server name that was defined in the Nginx configuration. This might seem obvious to some of you, but at first I was tripped up because I did not realize I could pass along the host header request and match it to Apache’s intended Server Name.

Without doing so, it was very difficult to use the same Apache instance as the backend for multiple reverse proxied websites. That was because Apache had no way to differentiate a request for website A from a request for website B. However, once you pass along the requested host, Apache now has a piece of information that it can use to differentiate requests by matching the host to its defined server name.

Tamper Data Extension for Firefox

Web Developers use Firefox as their browser of choice for many reasons but maybe most significant are the excellent extensions available to make development quicker, easier, and more effective. The two extensions that pretty much every developer is already aware of are Firebug and the aptly named Web Developer extension. However, an extension I use almost as often as those two is Tamper Data.

In its most basic form, TamperDdata allows you to view the headers for every request and response your browser handles. With that, you are able to examine the POST requests that your browser sends to a server.

But, the extension being called Tamper Data, it lets you do more than just examine the data being passed. It allows you to trap a request and alter the headers and POST data. Why might that be useful? Heres two of many possible use cases.

Use Cases

  • Form Tampering – Imagine you have a nifty registration form and you had all this fancy javascript that prevents and notifies a user if he enters invalid information. However, you still need to make sure your backend validates the data without relying on your javascript. One way to do so would be to use Tamper Data.

    In your browser, begin by completing the form correctly, but before you hit submit open Tamper Data and press “Start Tamper”. Then return to your browser and submit the form. Tamper Data will then popup asking you if you would like to tamper with the request that is being sent. Select tamper and then modify the post values to be invalid, and then hit okay. Tamper Data will submit the modified version of the form with the invalid data. You can then return to your browser window and verify your backend handled the submitted data as intended.

  • Investigating Session Problems – Sessions are identified via cookies. A server provides a cookie to a user upon its initial response. The user provides that cookie back to the site on each successive request allowing the site to identify future requests made by that same user. This concept allows a developer to keep a user “logged in” between requests.

    Several times I’ve had issues where sessions did not seem to persist. The best first step in identifying the issue is to determine if cookies are being handled properly. Is the server sending a cookie with the proper domain and settings to the user? Is the user sending that cookie in subsequent requests? That’s where Tamper Data comes in. Use it to verify the cookie data being sent in the headers.

Late Static Binding Coming in PHP 5.3

By far the most important change in PHP 5 was its much improved support for object oriented programming. It’s hard to imagine, but it was not so long ago when PHP did not offer support for basic object oriented necessities such as constructors, destructors, interfaces, abstract classes, public, private, magic methods, and so on.

Yet one of the most frustrating problems with PHP’s implementation of object oriented principles is the “self” keyword which is intended to reference methods and variables within a class in a static context. Continue reading