Robert Shedd
How much equity?

I wanted to republish here one of my posts from PSUstartups.com, the blog on Penn State startups that I’ve maintained.  This post was originally published on March 30, 2009, as we were in the midst of figuring out the equity stakes for FanGamb (now Three Screen Games).  We were hunting for advice on how best to figure this out amongst a team that hadn’t worked together before and we came across the following model, which I published for the benefit of others.  In trying to compile some of my thoughts on this blog, I wanted to move this post over.

……….

Recently, I was asked to help figure out how much equity the co-founders of an early-stage startup should be given at the outset of the venture. This is an interesting question - in most cases, I think that early-stage startups all too often forgo the question and just divvy the equity pie up evenly. It’s quick, easy, and doesn’t require difficult discussions and decisions. Still, there’s often many differences in what is brought to the table and the risk borne by the each individual co-founder, and it makes sense to factor this into the equity pie from the start.

Still, how do you make “equitable decisions” on this topic? :) Some quick research presented this article from OnStartups.com that essentially states what was already discussed - the simple, equal division, is rarely the correct answer. Still, it doesn’t provide many suggestions about making the right decisions.

However, one of the comments is more helpful and provides a link to a page written by Frank Demmler, Associate Teaching Professor of Entrepreneurship at the Tepper School of Business at Carnegie Mellon University. Frank was previously in senior positions with multiple investment/venture funds in the Pittsburgh area, including general partner of the Pittsburgh Seed Fund, so he clearly has some experience in this space.

Frank promotes the idea of developing a matrix with the key elements of the business (idea, business plan) along with who’s bringing what to the table (risk, responsibilities, domain expertise), along with each of the founders. The key elements should be weighted and then values assigned in each category for the founders. The article just shows screenshots and doesn’t provide an actual Excel model that you can use, so I created my own version of the model in Excel - please see attached Equity Model Spreadsheet. This certainly seems to be a more empirical and quantifiable means of answering the question “How much equity?”

…………

Note: The above Equity Model Spreadsheet link goes to the file on PSUstartups.com.  I have also placed this file on Drop.io here and on Google Docs here to make sure it can be accessed.

Legal River, a LaunchBox Digital company, recently launched a Terms of Service generator and a similar tool for creating Privacy Policies.

Along with their new StackOverflow-style Q&A forum, I think these are great moves for the company.  Granted, there are many nuances and details that must be considered and each company is different, there are also a number of common legal questions and action items that startups have.  Thus, it would be a real savings if there was a common checklist and resource to accomplish these without having to pay the lawyer bills.  After all, most lawyers just pull these things out of their document repository and simply customize them for each client.  The more that startups can do this on their own, the more we can save the legal dollars for when it really matters.

These recent offerings from Legal River, in my opinion, are much, much more valuable than their initial lawyer search engine (when we started this past spring, we just asked around in the community for lawyer recommendations - I don’t think we would have trusted an online search engine to find us a reliable attorney).

This touches on what Dave McClure wrote about back in 2007 - innovate and automate.  Nearly three years later, not much has changed.  It’s good to see some innovation.

Accelerating Accelerator Growth

It’s amazing the recent growth in accelerator programs around the world! In the past few days, I have come across several additional programs that I am adding to the list:

University-Affiliated

Some highlights…

A couple of interesting highlights about these additions:

  • The JFDI program in Singapore states that their “starting point is individuals who show potential as entrepreneurs, not teams who have assembled simply because they know each other.” The programs page states that twice a year, the program will combine 30 individuals into 8-10 teams. Given the importance of co-founders working well together to a venture’s ability to successfully execute, it will be interesting to see how this approach is implemented and how it fares.
  • JFDI also seems to place a strong importance on bringing entrepreneurs to Singapore. Their visiting mentor program appears to draw mentoring talent from outside of the country, as well.
  • The DUhatch program’s Coaches-on-Call service includes donated time from professional services firms to help the fledgling businesses get setup and running. Some of the non-university affiliated programs in the list offer this (DreamIt Ventures in Philadelphia is one example - we certainly made use of this during our participation in the DreamIt program and found it to be highly useful). Hopefully, we’ll see more programs making free/deferred-payment services via professional services firms a part of their offerings.
  • The Hatchery isn’t quite the same kind of accelerator program that the Y Combinator-style programs are. Instead, they are building a new program for bringing entrepreneurs and investors together in New York City. They call it The Gauntlet, or in their words, “American Idol meets Venture Capital.” Sounds like a vibrant program with lots of interesting participants.
  • The Founder Institute is expanding into four new locations and is setting its sights on training 1000 founders a year with its unique curriculum-based model.

Also on the radar recently was the Ventura Ventures Technology Center, formed in associations with the VC fund DFJ Frontier and the city of Ventura, CA. Because this program appears to focus more on getting companies to run out of the physical space in Ventura and it doesn’t offer the same types of mentoring initiatives that have become a common part of accelerator programs around the globe, I think it makes sense to label this one more of a conventional incubator than an accelerator program.

The master list has been updated!  Be sure to post in the comments if you’re seeing other programs that aren’t on the list yet!

Rails Facebook Development - Sharing some code for tracking active/inactive users…

The next version of FanGamb will be a Facebook app.  It’s not a 1:1 translation of the current game to Facebook - we’ll be incorporating many of our game design learnings from running the first version of the game for NFL/NCAA football this fall. Since FanGamb is a Rails app, we’ve been working on setting up a collaborative development process around building Facebook apps in a team environment.  I’ll post more on this process to come, but for now, I wanted to contribute some code from our Rails Facebooker-based (that’s the main Rails Facebook API plugin) app.

Documentation on Facebooker is a little light, so there isn’t a whole lot to go on.  There is a fairly active Google group, though, and a list of the methods, so we’re not totally in the dark.  But as far as hunting for best practices and example code, it’s been a lot of trial and error.

One of the things that we wanted to implement in our application is making sure we know which users have our app installed.  It’s pretty common to store the user ids in the app’s database - you need to be able to link it to other data elements that you’re storing for them.  However, Facebooker doesn’t by default help you keep that user model in sync with which users actually have the app installed on Facebook.  You can tell which of a user’s friends have the app, but not a master list.  When you have an active Facebook user session, you can look at User#has_added_app, but we want to be able to tell if a user has the app added even if they aren’t on the app at that moment (for things like leaderboards, etc.).

So, we need to be able to track when a user uninstalls the application and set their user record to be inactive.  Facebook has the post_authorize and post_deauthorize call backs for this tracking.  As I said, there isn’t a lot of sample Facebooker code out there, so if you’re looking to implement the same thing, here are our callback actions for you to utilize.

The first thing you’re going to want to do is probably put your callback actions in a separate controller, so that you can limit which filters are run on the controller.  Facebooker has a before filter ensure_app_installed (suggested for your application_controller) which basically forces a user trying to use the app to install it.  This won’t work for your post_deauthorize action, so you need to turn that off:

skip_before_filter :ensure_app_installed, :except => :post_authorize

Also, because Facebook posts to these URLs, Rails treats it as a form submission and will try to verify the authenticity token.  So you need to turn that off for both post_authorize and post_deauthorize:

skip_before_filter :verify_authenticity_token

With this setup, you’re able to create the rest of the methods.  Here’s the stub code:

class CallbacksController < ApplicationController
  skip_before_filter :ensure_app_installed, :except => :post_authorize
  skip_before_filter :verify_authenticity_token
  
  def post_authorize
    if request.post?
      #do something here
      render :nothing => true
    end
  end
 
  def post_deauthorize
    if request.post?
      #do something here
      render :nothing => true
    end
  end
 
end

One important point - the above code will work, but we can’t forget to verify the signature to ensure that the request is actually from Facebook, since these actions are outside of the Facebooker plugin (which typically handles this validation).

Looking at the Facebook development wiki, you can see some sample code for RFacebook on how to validate this.  Implementing this, our callback controller now looks like the following:

class CallbacksController < ApplicationController
  skip_before_filter :ensure_app_installed, :except => :post_authorize
  skip_before_filter :verify_authenticity_token
  
  def post_authorize
    if request.post?
      if verify_uninstall_signature
        #set user's has_app indicator to 1 to indicate active
      end
    end
    render :nothing => true
  end

  def post_deauthorize
    if request.post?
      if verify_uninstall_signature
        #set user's has_app indicator to 0 to indicate inactive
      end
    end
    render :nothing => true
  end
  
  private
      #based on http://wiki.developers.facebook.com/index.php/Post-Remove_URL
      def verify_uninstall_signature
        signature = ''
        keys = params.keys.sort
        keys.each do |key|
          next if key == 'fb_sig'
          next unless key.include?('fb_sig')
          key_name = key.gsub('fb_sig_', '')
          signature += key_name
          signature += '='
          signature += params[key]
        end
        
        signature += FACEBOOK_YAML['secret_key']
        calculated_sig = Digest::MD5.hexdigest(signature)
        
        if calculated_sig != params[:fb_sig]
          logger.warn "\nWARNING :: potential spoofing :: expected signatures did not match"
          logger.info "\nSignature (fb_sig param from facebook) :: #{params[:fb_sig]}"
          logger.info "\nSignature String (pre-hash) :: #{signature}"
          logger.info "\nMD5 Hashed Sig :: #{calculated_sig}"
          
          #check to see if ip variables are nil
          if not request.env['HTTP_X_FORWARDED_FOR'].nil? and not request.env['HTTP_X_REAL_IP'].nil?
            ip = request.env['HTTP_X_FORWARDED_FOR'] || request.env['HTTP_X_REAL_IP']
          else
            ip = request.remote_ip
          end
          
          logger.info "\nRemote IP :: #{ip}"
          return false
        else
          #logger.warn "\n\nSUCCESS!! Signatures matched.\n"
        end
        return true
      end

end

Get the code in a Gist here.

Note the one line that references FACEBOOK_YAML[‘secret_key’].  This should refer to your secret Facebook key.  We put this into the initializer block in environment.rb:

#load facebooker configuration for usage
facebook_config = File.join(RAILS_ROOT, 'config', 'facebooker.yml')
FACEBOOK_YAML = YAML::load(ERB.new(File.read(facebook_config)).result)[RAILS_ENV]

Phew!  That should do it - you should now be able to track whether your users have the app installed or not via the post callbacks.  Hopefully, this will help someone looking to keep track of active/inactive users in their Rails Facebook app!

Big props to my co-founder Alan deLevie who’s figured out a big chunk of this Facebooker stuff for the FanGamb team.

EDIT: typo fixed.  Thanks Sting Tao!

Another university-centric seed-stage business accelerator to add to the list - Carolina Launch Pad, operating at UNC, just announced its 2010 participating companies.  Participants provides mentorship + business resources and is starting its second year of operations.  Glad to see this trend continues to spread!

Another university-centric seed-stage business accelerator to add to the list - Carolina Launch Pad, operating at UNC, just announced its 2010 participating companies.  Participants provides mentorship + business resources and is starting its second year of operations.  Glad to see this trend continues to spread!

Help for Startups! - A semi-complete list of startup accelerator programs

This is a post I’ve had a running draft of for some time. I’m happy to be getting it out of my draft bin and out onto the web!

Josh Kopelman of First Round Capital spoke at DreamIt Ventures this summer. During his talk, Josh mentioned how he expects to see an increasing number of DreamIt/TechStars/Y Combinator-style locally-focused “seed stage startup accelerator” programs in the coming years.

This is a topic that is near and dear to my heart. Between the research that led to the founding of the Lion Launch Pad at Penn State and my research into startup accelerator programs before joining DreamIt Ventures this summer, I’ve talked with / read about a number of programs.

But I wasn’t really sure how many programs were out there, nor have I been able to find a comprehensive list anywhere else. The programs certainly don’t all operate in the same fashion, so there is a lot of diversity as far as terms and offerings, but in general, I think everyone can agree that it’s a good thing for startups that so many are taking an interest around the globe in helping early stage ventures get off the group and take flight.

So, here is the list I’ve been compiling - I’m sure I’m forgetting a few - what else is out there?

Locally-Focused and Seed-Stage Startup Accelerators

University-Affiliated Startup Accelerator Programs

** In the comments, there was a program from Kettering University suggested. I see this program as more of a conventional incubator than what I have come to term a seed stage accelerator program. For this reason, (nothing against the program) I have not included it in the list (there are far too many conventional incubator programs to try to compile a list of those), though if you are in Flint, MI, hopefully the program is able to be of assistance.

Again, I’m sure this is not an exhaustive list and there are others out there.  Let us know - where else can startups find help!

Sources: Numerous blog posts and tweets + Jed Christiansen’s dissertation appendix + great tips in the comments!

Edited: From the comments below and the thread over on Hacker News, there have been some great suggestions for the list. I’ve updated the list with the applicable programs.