Saturday, October 12, 2013

Notes on entrepreneurship (Part 2)

In the first class, we divided ourselves into random groups, each with four people (mostly from different background). The idea was to pitch an startup idea within 10 minutes based on the means of our group members. This exercise was repeated again with different set of people. One thing I noticed after this exercise was even though it seems like nice idea to start with your means and build a startup based on that, people usually revert back to the idea that they are absolutely passionate about, irrespective of their means [8].

As an assignment that week, we were supposed to take $5 and in span of two hours make as much money as we can. My group decided to go with "Grocery delivery service for professors" and each of us were supposed to ask professors in our department to help with that. I got to speak to only few professors in Computer Science department (as it was Friday) and only Swarat was on-board with the idea. My team-mates were unable to get any professors from their respective department, so they decided to go with another idea: "Personalized cards and their delivery". We made $10 in tips with the first idea and ~$13 with the second idea. The lesson from this exercise was sales is hard, but probably the important part of a startup [9].

In the next class, each of us gave an elevator pitch of their idea for a startup. Let me put my idea with respect to previous post:
1. Means:
- What do I know ? Background in software development, research experience in building large-scale systems and knowledge of embedded systems.
- What do I have ? Very low capital ... student salary :(
- Whom do I know ? Software professionals in India and US (from my bachelors, masters and job experience), Marketing/Advertising professionals in India (my father's advertising firm and my MBA friends), Trustworthy partner in India (my best friend and brother Rohan), Research scientists (my advisor, my colleagues at Rice university [3], my collaborators, contacts from internships and also from my experience as President of Rice Computer Science Graduate Student Association). Other than couple of exceptions, until now I have been lucky enough to be surrounded by really nice people, which is why I believe this to be my strongest means [4].

2. Ideation:
In the previous blogpost, I vented my frustration over sexual assaults cases in India as well as provided high-level suggestions (which I must admit I had no control over). So, I decided to use my means to develop something that might help improve the situation (in whatever little way possible).
Unlike US, the commonly-accepted safety net in India is not government/police, but the social structure (i.e. your friends and family). Many of the personal safety solutions like pepper spray, taser or guns require state licenses in many countries and are even prohibited in few countries like Canada, China, Bangladesh, Singapore, Belgium, Denmark, Finland, Greece, Hungary, etc. Not to mention they are expensive and can often escalate the situation.  This is why many people follow a self-imposed curfew, that is either not leave home after dark or have someone accompany you.
With advent of smartphones, an obvious solution seems to be "have a personal safety app". Most of these apps have cool features such as sending GPS location to your friends and family but have a major flaw that make them non-functional: they require you to take out your phone, open the app and press an SOS button in it. Clearly, this is not what an average person would do in times of danger. Here are some of the feedback/comments on such apps [1]:
- I think a "dangerous environment" is the last place I would want an expensive item like an iPhone prominently displayed.
- ... app (might not be) readily available to access, on screen #8 somewhere on the 2nd or third row ...
- Pulling out your iPhone in the face of an attacker? That's one sure way to escalate the situation. And he now knows you have a nice phone too.
Reality check: Not only I am passionate about this problem, there does not exists a solution that works satisfactorily (i.e. "pain points") ... to me, they are just cosmetic app, the ones you buy for keepsake but does not serve any purpose to the society.

Before discussing next point, let me take a small detour and tell you what metric I use to determine the success of this startup [2]: At the end of the course (or may be few months past that), I am able to make an app that works seamlessly in real-life situation and which I can recommend to my loved ones without any hesitancy.

3. Opportunity evaluation:
Like many computer programmers, I have an habit of developing software that do exactly what I want but not what my audience would need. To ensure that it doesn't happen, I sent out an survey asking people what they would like in during times of emergency. The demographics of participants were as follows:
- 53% males and 47% females
- 82% of participants were between 20-30 years old and 14% between 30-40 years old.
- 59% from US, 16% from India and 8% from China
- 24% had Bachelors degree, 47% had Masters degree, 27% were PhD students.
- 32% earned between $10K-50K, 28% earned between $50K-100K, 16% earned above $100K and 20% were not currently earning.

Here is the summary of responses:

The above figures shows that majority of people (46%) wanted an external device like bluetooth-clicker that victim can press when he/she is in danger. This was a good indicator that I should go ahead and spend some time building such an app.

The next step was to understand what features a user would want/need in times of emergency:

Since some of these features require backend services (for sending emails/SMS, managing account/app) which need capital (I am not rich enough to maintain this kind of service on my own), I asked how much people are willing to pay for this kind of service. It was clear that most people preferred buy-once kind of a model:

Now, the checklist of opportunity evaluation:
a. Unique value proposition of my idea: "Affordable" and "hassle-free" way to connect to your friends, family and authorities in times of emergency ... with just a click of button.
b. Is it defensible: Nope, anyone with strong programming experience can replicate the features of my app. In fact, in long run, that is exactly what I want ... lot of good apps and competition that eventually help reduce the number of sexual assaults and make the world little safer place.
c. Is it profitable/sustainable: I really don't know :( ... It could be a product like dropbox, which people never thought they would want ... but once they got it, they can't imagine their life without it ... or it could be a total flop. The only way to be completely sure is by implementing it :)
d. Clearly defined customer: Young women traveling abroad or working late, senior citizens and frequent travelers.
e. Is it feasible and scalable: Yes, I used my experience in building large-scale cost-effective systems to build the backend. Also, my experience in C/C++ programming, knowledge of design patterns and user-friendly Apple documentation helped me: (a) learn the basics of Objective C in less than a week and (b) build the version 1.0 of the iOS app in less than a month.

Finally, I must reiterate the core principle of opportunity evaluation for a startup: It is not possible to know a priori whether an idea will turn out to be good business or not. So, I decided to stick to "affordable loss" principle and develop the app with as low cost as I could. Few of the hacks I used to ensure "affordable loss" are as follows:
- Moving most of the computing to clients rather than server (so as not to buy overly expensive servers).
- Using pay-as-you-use services wherever I felt absolutely necessary (for example: Amazon web-services).
- Using GIMP to develop my own logo (which I had to learn btw :P) rather than hiring a designer [6].
- Using wordpress for the startup website rather than spending days perfecting the CSS to make it mobile-compatible or hiring a web-developer.
- Focusing on minimum viable product (using Texas Instrument's SensorTag) rather than prematurely buying tons of bluetooth clicker from China [12].
- Using in-app purchases rather than setting up credit-card system in my website to provide features which other services charge me (for example: SMS/Email) [10].
- Not running after patents early on in the venture [5].
- Buying readily-made icons set rather than designing them yourselves [7].
- Choosing a hosting plan that has no hidden fees and that supports your choice of backend services.
- Using gmail as support email (rather than one provided by hosting services) and adding feedback button in app as well as contact form on the website (with some kind of captcha [13]). One tip I have for new developers is try to minimize the number of clicks/typing in app for sending feedbacks, for example: pre-fill "to-" address as well as "subject line".
- Utilizing the membership benefits of Apple/Google development program, i.e. off-loading testing [11], advertising/cross-promotion, expert feedback, reliable delivery of your software and version management.

References / footnotes:
[2] Rather than use metrics like expected profit/revenue after first year or public offering or something on similar lines.
[3] I already have got 4 other PhD students from Rice university on-board to develop Android/Windows version of the app. This is in lines with another principle of Effectual Entrepreneurship: Form partnerships.
[4] The intent of this statement is not flattery, just an observation. Here is why I think so: though I never deliberately tried to enforce it, my circle of influence consists of three types of people: those who are genuinely nice, those who are smarter than me, and non-self-destructive people. Of course, the categories are not mutually exclusive and in fact people who are smarter are usually genuinely nice (probably because they only focus on self-upliftment, not on pulling others down). Here is a layman example most people can relate to: even in course with relative grading, a smart person knows that he/she is a student of global class and is not be threatened by his/her class-mates' progress ... which is probably why you will rarely find such a student shying away from group discussion (so as to gain advantage) or deliberately spreading false information to sabotage other's grades. May be things might not be such black-and-white in other fields, which is one of the reason why I absolutely love research and development.
[5] A patent attorney who attended our class thought one of the feature of our app is patentable, which might be true. But there are 2 problems with going that way: (a) the real cost of patent is not in getting it, but in defending it, (b) It will limit the features that other programmers who are smarter than me can introduce in their personal safety app (which goes against my success criteria for this particular problem). To be completely honest, there are ways around low-capital issue for those startups who really want to get a patent: (1) file provisional patent yourself under $200 (just read about how to define the scope of your patent and also about court dates), (2) ask your parent organization or angel investor to file a patent for you in exchange for royalties or stake in the startup (for example: Rice university's OTT office), (3) contact a patent troll to defend you patent.
[6] For people with little more budget, there are websites like and that allows you to hire a free-lance designers/developers. A similar website for building mock prototypes of your products to show to investor is
[7] There is always a tradeoff between time and money, you just have to figure out what is your exchange rate for time ;) ... for example: if someone is providing you service that will save you 1 hour, how much are you willing to pay for that service.
[8] Whether building your startup "based on your existing means" is better than "based on your passion and then expanding your means as you go" or vice versa, I really don't know. There are obvious advantages for both and also obvious disadvantages when pushing the respective principle to extreme.
[9] Even though you might think an idea is pretty good (and will benefit the customer), people are not willing to pay as much as you think ... probably because it's either suspicion that you are trying to dupe them or incorrect valuation of the product/market from your end or something else.
[10] Though it might seem simple to just plug-in existing credit-card library and setup a php page with mysql backend, things get a little complicated when you start thinking about transactional semantics and the fact that people can buy new devices or deleting the app and similar situations.
[11] In traditional company, a developer would be evaluated based on stupid metrics, such as bugs assigned, solved, etc. Though on paper they seem apt, they can have harmful side-effects for startup such as spending too much time perfecting a feature without any customer validation/feedback. So, instead of spending significant resources on testing, submit your app to Apple as and when you add new feature and indirectly ask them to test it :) ... Other way, for cheap testing is by using crowd-sourcing websites such as Amazon's mechanical turk (which I will ignore for this post).
[12] Since the SensorTag took a while to be delivered to my home address (thanks to my apt complex rejecting the package), I decided to use an accessory that I already owned for version 1.0 (i.e. headphones) and introduce bluetooth feature in the next version.
[13] There are lot of wordpress plugins that allow you to add captcha in your website in just few minutes.

Tuesday, October 01, 2013

Notes on entrepreneurship (Part 1)

In this semester, I am taking ENGI 540, an entrepreneurship class offered by Rice Center for Engineering Leadership that focuses on lean startup and effectuation principles. It follows "reverse classroom" approach where we are supposed to go through preparatory readings and watch online lectures before every class. In the class, we discuss what we accomplished every week and also interact with guest entrepreneurs, venture capitalists and IP lawyers. I thought it might be nice to blog about my experience and share few insights I got from taking this class.

In the first class and after reading through first few chapters of Effectual Entrepreneurship, I found following concepts very intriguing:
1. Defining one's "means", which my professor defines as "who you are, what you know, what you have and who you know". The core idea in a startup is to start with your mean and create opportunities; sometimes expanding one's means through partnership.

2. Ideation: One interesting habit that a budding entrepreneur can practice is make an idea journal, where you force yourself to come up with 1 new idea every week (or if you are ambitious every day). There are various tools available for idea generation like mind mapping, lateral thinking, brainstorming, ... (will leave this for some other blogpost). Here are some of the tips for generating business ideas:
(2.a) Look into areas of change: Eg: opportunities in healthcare domain (because of ObamaCare) and energy field (because of increase in oil/gas prices & environmental impact). You can also analyze the consumption habits based on demographics [3], especially in market that is rapidly changing, i.e. BRIC countries (Brazil, Russia, India and China).
(2.b) Pain points: Is there a problem that is bothering you that is not solved by any existing solutions ?
(2.c) Cross-domain: Can you apply your expertise in one field into other ? For example: if you have expertise in end-user/consumer marketing, you can find an opportunity in a field which only focuses on corporate services (by delivering those services to end-user).

3. Opportunity evaluation: It is not possible to know a priori whether an idea will turn out to be good business or not. Most successful entrepreneurs and investors claim there is only one way to see good business opportunity: Go ahead, implement it creatively with very low levels of investments and either find real customers who are willing to buy the product or service at reasonable price or locate partners who are willing to commit real resources to the ventures early on or ideally both [1]. Still there are few high-level checklist that you can use to check if your idea is good or not:
(3.a) Does your idea have unique value proposition; if yes, what is it ?
(3.b) Is your idea profitable and sustainable (i.e. profitable over long period of time) ?
(3.c) Is your idea defensible ? People protect their idea either by patents/copyrights/trade-secrets, etc. Sometimes early entry into the market and strong user-base also makes an idea defensible.
(3.d) Does it have a clearly defined customer ?
(3.e) Other questions: Is it feasible ? Is it scalable ?

4. Causal reasoning states: To the extent we can predict the future, we can control it; whereas effectual reasoning states: to the extent we can control the future, we don't need to predict it. So, instead of creating elaborate predictive business model before beginning a startup (which can be frightening), it might be a nice idea to follow the effectual strategy: focus on what is controllable about the future and only commit what you can afford to lose (i.e. "affordable loss" principle [2]). For extremely risk-averse people who might prefer inaction, I would like to cite Sarasvathy's quote: "20 years from now, you will be disappointed with things you didn't do than things you did do".

[1] Effectual Entrepreneurship - Saravathy et al.
[2] A good application of affordable loss principle for iPhone development is given in this youtube video.
[3] Procter & Gamble changed the delivery mechanism of shampoo in India ... small packets instead of large bottles.

Monday, May 13, 2013

Religion and Science

When I first decided to write a blogpost on this topic, the first thought that struck me was "What can I write about religion and science that isn't already articulated by others ?". This was quickly replaced by another thought "If it is so, why majority of people have twisted views about them ?". The answer was pretty simple: In public venues or in mainstream media, people with extreme views are the ones who are most vocal, whereas moderates often seem unconcerned, callous or worse condescending.

Since moderates are often characterized as being tolerant (which is a good thing), let's try to understand what does it really mean to be tolerant. Is it same as being indifferent ? If you are tolerant, should you be vocal about it or is it sufficient to say "you believe what you want to believe, but don't bother me" [12] ? Should it be a choice or a requirement ? Would you be tolerant if you chose not to tolerate the intolerants (often called as terrorists, extremists, fascists, nazi, etc) [1]. Wait, it gets even more complex: Who defines the term "intolerant" ? For Islamic extremists, it's Western world stopping them from enforcing their interpretation of sharia law. For Western world, it's cowardly and inhuman attacks on civilians by these terrorists. For some, it's bible thumpers trying to dictate how they should live their life; for others, it's atheists (or may be liberals), who are ruining their family or moral values. The list goes on and on and is equally applicable in my beloved homeland India and gracious guest country USA (and I suspect every diverse nation in the world). Unfortunately, unlike Karl Popper I don't have a globally applicable answer to these questions [10]. A local answer is to be tolerant in terms of freedom of speech, but keep people responsible for their actions in terms of secular humanitarian laws [2]. Bottom-line: in a civil society, the simplest working principle seems to be that we educate ourselves (enough to be intellectually capable of deciding right from wrong), embrace the diversity, be tolerant of opposing views and let the law judge the people who we feel are intolerant. It might also help if we abandon our cloak of complacency, engage in serious and meaningful debates/discussions and elect representatives who share our thoughts. Before I come back to the original topic, let me explain the dangers of being intolerant: If you chose to accept so-called "little intolerance", you will soon find yourself governed by "little intolerant" elected officials and as history has showed us, they will soon be replaced by "little more intolerant"elected officials (who would win the elections by saying the former aren't intolerant enough) and the cycle will continue.

Since there are different definitions of the same term [3, 4], for sake of this blogpost, let me explain my interpretation of these terms.
1. You are a theist if you believe that God created the world and takes active interest in the world. For example: if you are a theist, in times of trouble you believe that God will intervene to provide you with guidance or in someway affect the outcome. How far and how often God intervenes depends on degree of your theist beliefs.
2. Almost all theists also follow one of many organized religions, which are based on revelations given by prophets or reincarnated Gods. It is important to note few things about organized religions:
  • There is a clear distinction between prophets and ordinary people, former being first-class citizens who are the only people that have access to these revelations.
  • Since revelations are the only mechanism for finding or validating "religious truths", it makes scientific inquiry impossible. This is because as of this day, there is no clear way to distinguish between the revelations of first-class citizens and hallucinations/delusions of ordinary people. This is also true for spirituality. So, religion has a concept of faith which requires you to believe something because the first-class citizens said so [5].
  • These revelations can be categorized into two parts: information about God (and hence the universe) and information about how to conduct ourselves in the world. Often, the former (for simplicity, let's call it knowledge) is used as main reason to stick to the latter (let's call it moral guiding principles or human values) in our day-to-day life. By definition, knowledge is considered to be absolute and universally-applicable [6] whereas the moral guiding principles are treated as relative [7]. The consensus among many intellectuals is that the scientific method is the best available tool for exploring and validating knowledge. For moral guiding principles, people often use either religion or philosophy or spirituality or law or introspection or advice from friends and family [8].
  • Most revelations are described in holy books and are often accompanied by a back story. Many anti-theists criticize the revelations because of validity of the back story rather than applicability of revelations themselves. Some theists believe them to be exact historical account whereas others theists believe them to be embellished so as to get the message through to the general public [9]. In these back stories, there is often mentions of so-called miracles and many use the argument that specification of these miracles is a proof of validity of the revelations and hence God [11]. However, non-reproducibility and often embellished centuries-old second-hand accounts make the likelihood of these miracles highly improbable, if not impossible, and hence they are not accepted as facts by the scientific community.
  • Even though it is often suggested that all religions say the same thing [12], many organized religions are very clear on one particular requirement: "To adhere to religion X, you must ignore teachings of all other religions and consider them to be pagans". So, ipso facto all religions don't say the same thing, it is what we chose to believe to promote tolerance. I, on the other hand, think we should celebrate pluralism and not be afraid of the fact that different religions say different things. The only reason we ever need to be tolerant is coexistence and survival of human race.
  • Many religions are based on the concept of two-world: physical world (where we live) and transcendent world (which is termed as heaven, paradise, etc). Some religions that have concept of rebirth and karma (eg: Buddhism and Hinduism), also have concept of enlightenment (nirvana or moksha), which is often referred to as state of being, rather than a physical location (like heaven). The hidden assumption in two-world philosophy and most religions is that human beings and earth has undivided attention of God and hence has special and central place in this universe. Science makes no such assumption and in fact many scientists believe human race and earth to be a product of a wonderful accident.
3. Science on other hand is based on "scientific method", which Oxford dictionary defines as "a method or procedure that has characterized natural science since the 17th century, consisting in systematic observation, measurement, and experiment, and the formulation, testing, and modification of hypotheses". Since there are already enormous amount on literature on this I won't discuss it in more detail. However, I do have few advices for young scientists:
  • Make sure you understand how to differentiate between science and pseudoscience.
  • Don't be afraid of uncertainty and not knowing everything. It's OK to say "I don't know", you will be surprised how often that phrase is used by renowned scientists.
  • Avoid the urge to be self-centric and to accept something to be fact because you feel it "deep inside" [12]. Also, don't make up stories, that have no scientific bases, to explain things you don't understand.
  • There is no such thing as faith in science. It is replaced by reasoning and experimentation. For example, when you read a research paper or a book, always exercise critical reasoning on it to make sure that the results are plausible. If you think something is fishy, conduct an experiment to validate its result and hypothesis [5]. This is also true when a professor explains you laws of motion or electricity or something else and claims it as science.
  • For reasoning and validation, stick to Occam's razor, i.e. don't just jump to the easiest/quickest answer, instead put effort to find the answer which requires fewest assumptions. For experimentation, at minimal, understand the correlation-causation fallacy and also statistical testing. One particular book that that you can start with is How to Solve it by Polya.
Even though both religion and science started because of human curiosity to explain the universe [13], both employ completely different methods/practices: revelations and scientific method, respectively. To make sense of the debate between them, it is necessary to recognize that these methods are inherently incompatible. So, unless all the parties agrees on a common method for finding and validating facts/truths, I think the whole argument will keep on spiraling itself. So, if a religious person choses to use the scientific method to convince me of the validity of the revelations, I welcome it; if not, I prefer not to engage in the discussion at all.

Just like religious missionaries, let me take a moment to state why you should use scientific inquiry for finding facts and solving problems ;) Look around what scientific inquiry has enabled us to discover and invent: medicines, cars, internet, computers, phones, planes, trains, camera, music players, guitars, paints, bricks, electricity, bulbs, etc. Whether you are a student or a nobel prize winner, a poor person or a millionaire, a prisoner or the president, your experimental findings and ideas will be judged purely on its merit and nothing else ... not on your status or gender or age or or religion or race or caste or nationality. You are allowed to ... no, you are encouraged to come up with new ideas, ask questions, doubt and investigate widely held beliefs. In fact, I urge you to doubt everything in this blogpost, discuss it with your teacher/professor/colleagues/priest/friend/family, read books about both religion and science and come up with your own opinions :)

Let me summarize this blogpost in a sentence: Whether religion or spirituality is inevitable and necessary part of of human life, I don't know; but I am absolutely sure that they don't have place in science classroom or textbook.

References and footnotes:
[1] The paradox of tolerance:
[2] The legal argument about tolerance gets more complicated if majority decides to collude to deliberately oppress the few, which has happened far too often in the past. However, we won't get into that and let's rely on inherent human goodness and assume that there are constitutional provisions to disallow that.
[4] The Cambridge companion to atheism
[5] Scientists are expected to practice same level of skepticism to the theories of even the most accomplished scientists (be it Newton, Einstein, Darwin, Turing or Feynman), i.e. science does not have authorities, just heroes.
[6] Even though I called knowledge to be absolute and universally-applicable, it was little misleading. Read research journals to find just how many previously accepted theories are replaced by new theories in light of new evidence, which essentially means knowledge and science is ever-evolving. Anyways, I urge you to read about epistemology for understanding the nature and scope of knowledge.
[7] Religious fundamentalists believe "how to conduct yourself" is absolute (i.e. strict adherence to revelations).
[8] Recently, I encountered a person who was against organized religion, but claimed that spirituality is better tool than science for both exploring knowledge and for moral guiding principles. He didn't provide me with any evidence or rationale to support his hypothesis, so I disagree with him on that. It is also important to point out here that Sam Harris suggests that science can also determine human values.
[9]  Irrespective of which is true, one thing I submit to is that they probably were the best collections of ideas of their generations. However, in this age of globalization and democracy, I don't think if they are applicable.
[10] At the international level, with so many dictatorships, monarchy, theocratic governments, territorial disputes and dogmatic/partisan politicians around, it is difficult to come up with one principle that will work every where. Non-intervention (or non-alignment) expects every country to make decision before you stop a genocide (example: EU and Bosnia). Respecting every nation's sovereignty means pulling out your troops from unstable governments (like Iraq and Afghanistan) or countries surrounded by superior military powers (like Kuwait, South Korea, Taiwan or Japan). Think non-violence and Tibet. So, this blogpost is only applicable to citizens of secular nations with access to freedom of speech.
[11] If you believe in miracles, aren't miracles of science (pun intended) equally mind-blowing, for example: flying objects, going to the heavencreate new life, curing the sick, all-knowing oracle, walking on water, being invisible, etc.
[12] Penn Jillette: Why tolerance is condescending ?
[13] Of course, many religious people will disagree with this opinion and will point out that religion exists because God wanted it to exists, not because humans were fishing for answers.

For those people who followed the entire line of argument, I must admit that I deliberately skipped the underlying question about existence of God in non-religious/non-theists, atheist, agnostics settings.

Wednesday, March 27, 2013

Hadoop MapReduce - System's view

Here are videos that I created to explain Hadoop's MapReduce framework from system's perspective. As a disclaimer, this video is at an abstraction that I liked, which means it might not be suitable for general Computer Science audience. If however, you have some experience with Hadoop, you should be fine. I have skipped over lot of Hadoop's features for simplicity and succinctness, like HDFS, Hadoop I/O, setting up/administering Hadoop cluster and writing Hadoop programs (and various high-level languages/tools that use Hadoop).

1. Job Submission at the client side

2. Job submission at the JobTracker side

3. Task Scheduling

4. Task Creation

5. Map execution

6. Reduce execution

Slides: PDF, Keynote

Thursday, March 14, 2013

Video tutorial on reinforcement learning

This video tutorial is based on a talk I gave at my Comp 650 class and hence assumes that the audience knows a little about Markov Decision Processes and Partially Observable Markov Decision Processes. If you are unfamiliar with them, I recommend that you at least read through their wikipedia pages before going through this tutorial. Also, I suggest that you view this video on youtube, because the embedded video given below is cropped.

If you have any suggestions, comments or questions, please feel free to email me :)

PDF slides