Social Models

There has been a lot written about the kind of ‘social’ graphs prevelant on the internet. I am not adding any great new information, and readers are advised to check out the following posts:

http://en.wikipedia.org/wiki/Social_graph

http://cdixon.org/2010/07/22/graphs/

Here, however, I am including this discussion mostly for completion sake. But, I also think that the discussion is valuable to point out the key differences between the kind of social models, as well as understand the history behind their evolution.

The two main types of social models under consideration are:
1. Friendship (the non-directional graph)
2. Follower (directional graph)

The original social model of friendship started primarily with sites like friendster. However, it wasn’t until the advent of MySpace that it really took hold. Facebook, of course, took it to a whole new level. The model primarily involved a handshake element. i.e. if I have to become your friend, you must also be my friend. Although this was geared more towards privacy, it meant that the field was automatically somewhat limited and constrained by the intersection of the interests of the two people involved. If only one of them was interested in knowing about the other, the model wouldn’t work. For example, I am interested in being a friend of Obama, but I don’t think he cares (at least not at present). Thus, this kind of model results in a true ‘social’ graph. If I am not socially connected to another person, this graph will not take hold.

The follower model got rid of this barrier by allowing anyone to follow anyone else. Now, I can follow Obama, and he doesn’t have to follow me. This way, his ‘inbox’ is not cluttered by my updates. It is arguable that twitter’s main innovation has been the creation of the follower model and the subsequent choices with regards to privacy in keeping those updates public, by default.

The upshot of the follower model is that it ends up creating not a truly social graph, but more of an interest graph. Now I can follow people based on my interests, and I don’t have to know them socially. The beauty of this method is that I am now in control of my interests, and am free to follow anyone who is speaking about things that might satisfy my interests.

The follower model has taken hold in all verticals where new products are emerging to let people share their opinions about any topic, and for other people to follow these opinions. In each case, the person who is following can make the decisions to un-follow the person, or follow new people. This provides a great sense of control to the user, and lightens the burden of application developers to suggest better more interesting content. Because users can now simply follow other users to discover new content, application developers can concentrate on developing tools to allow discovery of people to follow, and not necessarily content.

However, the friendship model is still relevant in cases where we care less about interest, and more about social engagement driven by already established norms. For example, LinkedIn still follows this model, and it makes sense for their product. I must know the other person in order to be connected on LinkedIn so that I can then use that connection to find better opportunities later, find good candidates, etc. Also, once the friendship model takes hold, it’s much more difficult to break since noone wants to break those social connections when they are backed by real-world connections. So, this network becomes much more powerful, and can only grow.

So, both models have their place, but it depends on the product how best to use the models. I have seen hybrid models where you can follow users, but can form stronger bindings based on friendships. Facebook seems to be moving to this system as well with the recent addition of their “Subscribe” functionality, where a user can subscribe to another user’s public updates (twitter or Google+ anyone?).

What do you guys think?

Roadmap for building ‘social features’ into the product

At the core of any product, you are going to have people interact with some piece of content. However, before we jump into how to design a viral loop for free marketing and growth, let’s examine the right way to think about how to make your product more social, and how to build the social elements into the basic value proposition.

The following is an outline of the topics I am going to cover about how to add social features into a product. Some of them might be very basic, but it’s important to cover them so that it’s clear what we are all talking about.

  1. Social Models
    • friendship (symmetric)
    • follow (asymmetric)
    • advantages/disadvantages of each
  2. Social network types
    • broad social network
    • vertical/interest social networks
  3. What it means to create a ‘vertical social network’
  4. Traditional way to think about it
    • nodes and edges
    • e.g. Facebook (edges are friendship)
    • e.g. Twitter/instagram (edges are interest)
  5. New way to think about it
    • Layering
    • edges are “MY RELATIONSHIP” to that content (picture, food, link, story, blog post, etc.)
  6. Revisit: What it means to create a ‘vertical social network’
  7. Social lens for content
    • Different Views possible based on relationships and friends’ friends
  8. Recommendation systems (discovery of new content)
    • Algorithmically jumping from one piece of content to another
    • Letting users control what they see (through the social lens)
    • Examples

Let me know your thoughts, or if I have missed anything.

Hello World… again!

So, I have been on a low-information diet for the past many months. Actually, I kind of broke my fast a few months ago, but still hadn’t turned the corner with writing, and didn’t really feel like it. Mostly because I felt like I didn’t have anything very original to contribute. As usual, I mostly write to solidify my own thoughts, and not to be pedantic, but it was good to take a break from it all.

Until now.

I have been thinking and researching deeply about building and growing a consumer internet business, and the different aspects that it touches. There is a great deal of material on the web written by a lot of people way smarter than me. However, the challenge for new entrepreneurs has always been how to prioritize the material. Even smart people write mostly ‘in the moment’, so all arguments in one post are given to posit a specific point of view. The problem is that the reader keeps getting pulled in different directions, each direction defined by the preset point of view of the post at that given time. After reading a few posts, I feel like someone has taken me for a walk, and then decided to keep turning me in different directions with each step. After a while, it all feels woozy, and it takes a little bit to re-orient myself and walk straight towards my destination or goal.

Some people are way smarter than I am at doing this, and can constantly take in all the information and keep their eyes focussed on their destination at all times. But for people like me, the challenge is to decide which argument makes sense for their particular direction, and incorporate it within their products.

In a small subset of cases, very very smart writers have given their profound theories and frameworks on the workings of the consumer web, and some people have even gone beyond and given us prescriptive guidelines on how to tackle the issues. However, these approaches are mostly strewn across, without a single place to unify the wealth of knowledge.

I am going to try and compile this wealth of ideas here in this blog, mostly for my own sake. I expect to learn more about each technique and analyze each one to understand how it fits in the overall framework. I will also attribute and link to the articles I will take the ideas from so that those responsible get their due credit.

So, come along on this journey with me and together we hope to achieve only one thing:

How to make the process of building a consumer internet business more scientific and reduce the role of luck to the reality. i.e. a playbook for what it means to ‘execute well’.

Onward!

Change the world! But make $29.99/mo while doing it!

I attend a few tech conferences, primarily in the consumer internet space. Usually, these conferences have some way of demo’ing a bunch of new startups trying to peddle their wares and trying to woo the investor community. The format is a little different each time, but there is some version of the company’s CEO presenting on-stage, with a panel of judges trying to, well, judge the pitch and the business.

There are a few themes that I have seen consistently across these events, irrespective of which city the conference takes place in, and what the latest and greatest topic in the internet happens to be. For the most part, the takeaways from the conference are not very much, except for a few shining and unusual experiences (for example, I met a guy yesterday who makes flying cars).

Based upon my previous experiences, I can already predict what most of the judges are going to say. Typically, the judges’ panel consists of 4-5 members, with 2-3 members from the investor community, 1 entrepreneur, and 1 media person. It’s much easier to predict what the investors and media people are going to say than what the entrepreneur is. The entrepreneur focuses mostly on the CEO, while the rest focus on the quality of the pitch (and not the content), and the addressable market. I will write in detail about the problems of the addressable market theory in a future post, but for the purposes of this post, the feedback falls mainly across the following three areas.

1. ‘Refine the pitch’, or ‘I couldn’t really understand your product’

Although it has come to be accepted that one must have a good pitch to woo the investor community, the question still arises: Why? I see the argument that the pitch must be refined because often times the investor is a super-busy person (or claims to be anyway), so the investor’s time should be used by the entrepreneur as a scarce commodity. Good investors also get pitched a lot, so if you are only getting a short attention span from them, it’s better to make the most of it quickly. But when it comes to conferences, the situation is very different. The judges, as well as the investors in the audience, are for the most part captive audiences. They can be on their iPhones checking email or whatever, but they are not really going anywhere. So, I really think that although the entrepreneur should do his best to refine the pitch, practice and try to make most of the opportunity, the investor shouldn’t really be criticizing the pitch. Instead, they should be focussing on the content behind the pitch. Most of the tech entrepreneurs (with the exception of probably Steve Jobs) are not great presenters, so let’s just leave the feedback on the pitch on the backburner. For me, when someone criticizes the pitch, it really feels like trying to find faults in the grammar and spelling of an engineering report. Yes, it makes a difference, but please be smart enough to look beyond that.

2. ‘But none of these companies are changing the world’, or ‘I dont think your product will make too much money’

Ah yes! This one is my favorite. This is not common to just investors, but the audience at large. There are multiple forces pulling the company in different directions. The main ones are 1) be innovative, and 2) make money. Of course,  I don’t believe that the market is completely efficient, but it is not completely inefficient either. So, the two forces are actually pulling the company in two different directions, not quite 180 degrees apart (180 degrees apart would be in a completely efficient market), but you get the idea. Thus, the company has to find a way to change the world, and make shit load of money right off the bat. How many companies do you know that actually did that? You know, the ones that had an innovative product that a large portion of the world is using, and that had a strong plan to make money? I know zero. The reason is that if there is a clear way to make money, then it would already have been done. Efficiency in markets exists when the knowledge required to tap an opportunity is low. As the sophistication increases in a particular space, so does efficiency, since there are more people who are now approaching expert-level thinking. Therefore, it stands to reason that the fewer the number of experts in any domain, the more opportunity that lies in that domain. Consequently, it also follows that making money is not at all obvious. One corollary to this idea is that as making money becomes more obvious, more people becomes experts to fill in the gap.

3. ‘There isn’t an addressable market out there’.

The same case could be made for Yahoo, Microsoft, Google, Facebook, Twitter, and new products that will be out there. Asking for an addressable market is really a way of saying ‘I can’t see how you will make money’.  I can kind-of understand this coming from the investor because the pressures on their business is vastly different from the pressures on an entrepreneur. Even when investors have been on the other side of the fence, the truth is that they are now in a different situation in life, and obviously, they are going to judge things based upon their perspective. Of course, some are smarter than others, and also more risk-friendly than others, but fundamentally, their goals in life have changed. What I don’t understand is when other entrepreneurs think like that.

Most of the above feedback from investors really means that they don’t really like the team, and are not confident that the team will deliver and stay the course to solve a worthy problem in the space. One of the key ways to judge startups is, of course, looking at the person presenting, what she has done in the past, how passionate she is about the problem space and how committed the team is to the problem. Notice that I didn’t say that they need to be committed to the product, but only the problem space. Most of the time, the exact problem is a little unknown and the product is only a first iteration anyway. However, the effect of the feedback from these conferences is that a lot of entrepreneurs start taking less risks instead of more. Taking risk for it’s own sake is, of course, a gambler’s trait, so I am not advocating that. I am simply advocating trying to solve bigger and more important problems, which necessarily come with greater risk. I believe that true entrepreneurs quit their jobs to do that anyway.

For further reading on similar ideas, read this excellent blog by Ben Horowitz, as well as this one by Glenn Kelman.

My hiatus from a lot of online activity

So, I have been away from blogging. I mostly write for my own sake and to collect my thoughts. Truth be told, I have been away from a lot of online activity, as part of my experiment on a low-information diet. I will detail the results and observations in a later post, but for now I am back, and looking forward to writing about some of the topics I have been thinking about recently.

Paperclip Storage S3 Extension

I recently switched from using attachment_fu to paperclip to store images on S3 in my Rails models. Paperclip is great, as it creates the columns in the model itself without requiring another model (and hence another query to the db). I also use paperclip to store the images uploaded to Amazon’s S3, which works great for me, instead of storing images on the local filesystem.

However, there is one problem that I keep running into time and again. Every few days, I take a dump of the production database and load it in my development environment. Sometimes, I also use the same database in the test environment. The problem, of course, is that unless I duplicate all the files in S3′s storage, I dont see any images, and thus, don’t get nearly the same experience as that of production in either my dev or test environments. Additionally, I do not want to change the bucket configuration in my dev environment to point to the production bucket, as that can create additional problems when I am testing writes and deletes to that bucket.

Wouldn’t it be great that in your dev environment you could still see the images from the production bucket *if* the corresponding image in the dev bucket did not exist? Additionally, if you ever made changes (edits or deletes) to these files, then those changes would be made from the dev bucket and not the production bucket.

So, my friend Shan Bhardwaj, and I ended up writing an extension to the paperclip storage module that does exactly that. You can find the extension at http://github.com/finknottle/Paperclip-Storage-Extension

What this extension does

The paperclip plugin is great to add files to your existing model without requiring an additional model.
The paperclip storage module has a module called S3 which allows you to store your uploaded files in your S3 account.
The buckets can be defined in the configuration YAML file, typically called #{RAILS_ROOT}/config/amazon_s3.yml or
#{RAILS_ROOT}/config/s3.yml.
The configuration file looks like

development:
access_key_id: your_access_key
secret_access_key: your_secret_key
bucket: bucket_name_on_S3

production:
access_key_id: your_access_key
secret_access_key: your_secret_key
bucket: bucket_name_on_S3

The problem though is that when you are developing on your machine, or creating a test machine, but with the production environment, then you want to copy the db from your production machine, and play with the data. At this point, you usually want your files (typically images) to be available for your environment. But at the same time, you don’t want to change the files in your production bucket when you change them in your development or test environment.

This is where this extension comes in. The extension allows you to add two more configuration options to your YAML file. So that, the file then looks like

development:
access_key_id: your_access_key
secret_access_key: your_secret_key
bucket: bucket_name_on_S3
bucket_alt: alt_bucket_name
testing: true

production:
access_key_id: your_access_key
secret_access_key: your_secret_key
bucket: bucket_name_on_S3
bucket_alt: alt_bucket_name
testing: false

You can add the additional two options through a capistrano recipe or a chef recipe, based on your deployment mechanism.

Thus, in your production environment, everything will work as before, all reads and writes will occur on the production bucket defined in the configuration bucket:

However, in your test or dev environment, the reads will be done from the alt_bucket_name if it exists (production
bucket), but the writes and deletes will be done from your bucket (dev bucket).

Installation

You can get the lib from http://github.com/finknottle/Paperclip-Storage-Extension.
Simply add the paperclip_storage_ext.rb file to the #{RAILS_ROOT}/lib/ directory, and require it in the environment.rb file below the Rails Initializer block
require 'lib/paperclip_storage_ext'

If you have questions about this, feel free to drop me a line.

How many people LOVE your product?

Or how many people hate it? I attended a session recently where one of the speakers (Dave McClure) was very passionate about this topic. And with good reason. All of us who have tried making consumer internet ideas a success know that the enemy is not people hating our product, but people just not caring enough to comment, talk about it with others, or in any other way spread the word around.

Most startups rely on some form of word of mouth propagation. Assisted by tools for sharing, it is known as viral, but the basic concept remains the same. In either case, some user has to care enough to click on something and let other people know. People will spread the word around either if they love your product or if they hate it. But if they just like it or don’t care enough, then the product has very little chance of survival. Dave, at the conference, made it more dramatic by suggesting that we think in terms of how many people are willing to ‘fuck’ or ‘kill’ our product.

After coming back home, I realized that it is still very vague. How many people want to fuck my product? I don’t know if anyone wants to fuck Amazon, but there it is, a huge success. Killing the product is easier to understand, but I still fail to imagine how many people want to kill a bad product (maybe a competitor, but the competitor is unlikely to give any press). However, when I started thinking about it, I came up with my own paradigm. In addition to asking how many people LOVE your product, it is also important to ask how many people LIVE your product.

With every consumer internet business, the early adopters are the ones that will make the business. These early adopters do things which sometimes astonish the business owner as to why they are doing it. For example, there are people who have generated thousands of reviews on epinions in the early days. Noone could have know what those people will derive, except some form of satisfaction. The key is that some people should absolutely LIVE your product day in and day out. This means that if you are in a vertical, then go and find those people who live that vertical as a lifestyle. For example, for gigzee, we want to attract the youngsters who live the whole live music/club lifestyle. If even a small number of such people use our product every day and can remember it by name, then the chances of a positive recommendation from them is going to be very high. Additionally, the chances of them recommending to someone else is also very high. These early adopters form the basis for the increasing set of users who will derive the additional benefit from the product.

So, next time when you are designing features to move from 0 to critical mass, ask yourself, how many people will LOVE your product. But don’t neglect how many people will LIVE your product.

For more on how to measure the engagement from these early adopters, read this excellent post by Andrew Chen.