Thursday, May 3, 2012

How VC's, Angels and Kickstarter Can Get Along

When I was first introduced to Kickstarter (www.kickstarter.com),  I was thinking that this type of funding would preclude VC's and Angels from being involved because of the nature of capital being raised.  Kickstarter projects are donations and not investments in the company.  There are rewards for your donation, but they are usually very small in comparison to your donation.

The way I see Kickstarter is that it is a good system for building jobs.  Even if it is temporary employment for 3-12 months, it is indeed a good donation to make.  How often do you make a donation to food banks, shelters, etc. only to have that money be used for 1 meal or something that doesn't last?  But as an old Chinese proverb goes "Give a man a fish and you feed him for a day. Teach a man to fish and you feed him for a lifetime."

Kickstarter projects are usually funded by the donation of crowds, hence the term Crowdfunding.  You would think that this cuts out VC's and Angel investors as they can't really make an investment into the idea unless the parties pull their idea after an Angel or VC expresses interest. But the new JOBS act does change that a little starting in 2013 with the ability to "make and investment" instead of "make a donation".  There are plenty of hoops to jump through and it may not work as the projects on Kickstarter are usually composed of 1-5 team members.

I have recently gained a lot of respect for John Lilly the founder Mozilla and now partner at Greylock Partners http://www.greylock.com/teams/14-john-lilly as I tweeted him about his thoughts on the whole Kickstarter idea and how VCs (Venture Capitalists) and Angels were shut out of the system.  To use VC speak,  Kickstarter is an extremely "disruptive" technology, but not to the benefit of the venture community!  Or so I thought.  He replied back very shortly saying he actually personally contributed to some projects on Kickstarter.  This gave me an idea and I wanted to make sure I credited him for it.

Some VCs and Angels are all about control.  Some are partners and will work with entrepreneurs and not try and control them.  I've talked with a couple of startup CEO's who work with Greylock and said they are great partners.  I am not trying to endorse them specifically, but they seem to be one of the good ones.  The ones that are about control probably won't be able to reap any benefits of Crowdfunding.

Now Kickstarter came along and now the entrepreneurs are in control of their project and company and really don't have to give up control to the venture community.  You would think that this completely cuts out the venture community.  But it doesn't have to.  If Angels and/or VCs started a fund that donated to Kickstarter or other Crowdfunding communities they would be creating short therm jobs thereby simulating the economy. Not only that they would be betting on small businesses that might succeed and may need additional funding to scale their operation once successful!  I'm sure the entrepreneurs would be very grateful and work with the venture community when needed.

Now do I think any VC or Angel would do such a thing?  I think it depends on their mindset and investment strategy.  Some VCs and Angels invest in incubators and Kickstarter is an online incubator, but no equity is given.  Can the venture community bring themselves to change their business models?  That is yet to be seen, but this could be a very lucrative way for Angels and VCs to not only support small business ventures, but to also find new innovations that can build into much larger and scalable businesses.

I also wanted to give a quick plug for my project on Kickstarter (http://kck.st/IhTOfg).  Please take a look and make a donation if you can.  It will create 4-5 jobs for at least 6 months and when successful should be able to create 100's of jobs in the Social Media space.

Monday, April 30, 2012

Crowd Funding

Crowd Funding looks like a great way to help out small businesses.  Yes, it is a little like begging for change.  But wouldn't you rather put $10.00 in the hands of a possible entrepreneur who would probably create jobs, then to hand it to a person on the street, who may or may not use it for the greater good?
Growthink has a great presentation on this type of funding here: http://goo.gl/Mungg Be forewarned, he's will try to sell you something about 3/4 of the way through his presentation, but it might be worth it if you are an information junkie like I am. As he points out Crowd funding is by far the best idea in funding that has come along in 50 years.  Imagine if Congress would let you take a tax deduction for donating money like this.  It could reinvigorate the economy even further.  But alas, Congress has different plans and in my opinion is clueless to the new era of funding.

Congress has a proposal called the CROWDFUND act, and is part of the Entrepreneur Access to Capital Act.  They are trying to legislate the crowd funding and this will be effective in January of 2013.  This part of the JOBS act is really useless for what Crowd Funding is.  Running a small public company in the past, I could raise $1 million a year.  But in general, I could only have 35 unaccredited investors and unlimited accredited investors.  See http://www.sec.gov/answers/rule504.htm for a definition of accredited vs. unaccredited.  OK, so the CROWDFUND act now allows 2,000 unaccredited investors, but limits the amount they may invest as a percentage of their net worth or income.

Congress is so out of touch, it blows me away.  Most of the  companies/individuals seeking funding don't have the resources to be able to satisfy the regulations imposed upon them for this.  The regulations help in a very small way, as now companies that want to do raise money this way, can now offer returns on investment to a bigger group of investors. This is not "Crowd Funding".  Crowd Funding is individuals/small groups of entrepreneurs basically panhandling for funds to start a project.

Let's hope that the law doesn't effect the true benefits of Crowd Funding.  They way I see it Crowd Funding could be a great benefit to the economy and create lots of jobs.  But if Congress is going to try and regulate Crowd Funding (especially the donation form), this would be akin to telling the Red Cross that it can only accept money up to a certain amount from individuals and $1 million a year.  I don't think that is what Congress had in mind and it really shows that the act is pretty useless for true "Crowd Funding"

A few friends and I started a project on Kickstarter because I like the Crowd Funding model.  You can see it here: http://kck.st/IhTOfg.  And yes, this is me with "hat in hand" asking for a donation to help build a business and save the economy.  You've probably given to other charity, doing so here will probably generate productive members of society with jobs, who by the way will pay taxes and help the economy as well!  And if we get enough people to donate $10.00 it can get funded.



Wednesday, April 18, 2012

Better Debugging Techniques

Recently I was working on a problem for someone that involved a graphics glitch.  It involved only one chipset on mobile OpengGLES.  The engineers had been looking at this for almost two weeks and still did not have a solution.  They were certain it was a driver bug.  From my experience, about 1/2 the time this doesn't turn out to be the case.

One of my techniques for efficient debugging is to actually use a debugger.  When I arrived and started working with the team to try and solve the issue, they had been what I call "poking" at the code.  What this means is placing printfs in the code, stripping out pieces the code, writing alternative ways to render, etc.

In fact, they had one other idea that they wanted to try, which was to write some code to ping pong between textures because they had a suspicion it was a problem with glClear not being called.

I asked if I could first identify the problem exactly, which usually takes me a few hours at most (if it's a hard bug).  There were a couple of bugs that did take me a week to find, but those usually took 24 or more hours to reproduce. I explained that just because they are seeing it in only one game and only one hardware chipset, it can still rear its ugly head somewhere down the road.  They didn't care they just wanted a hack for now.  I've seen it time and time again,  if you don't understand the bug and just hack around it, you create a whole can of other beetles for yourself.  I would have said worms, but beetles are bugs.

It was clear that I wasn't a good fit for this group.  They didn't need me, what they needed was a coder that would just be a robot and just code up hacks until they found a solution.  Not my cup of tea!

Upon my exiting they asked me for feedback on what they were doing.  I said it would be nice to have a debugger and they said, "Why?  Do you need to look at the stack or something?"  OK, I thought, I guess I need to write a blog entry about this.

Only when drawing quads on a certain level and only after about 10-12 quads would the background graphics become glitched and would corrupt a texture or corrupt the UV coordinates or corrupt something.  The corrupt something should be your goal and to identify it exactly, so that you can come up with a general solution.  If you "One-Off" it you get a temporary fix that almost certainly will cause you more time and more pain in the QA process.

How I would have solved this problem in less than a day using a debugger is as follows:
  • Use a debugger to set a breakpoint with a count in the code to break one time before drawing that particular quad that seems to be causing the issue
  • Write down or look at all the parameters, data, etc for the working quad
  • Run again with one more breakpoint that is set when the problem quad is rendered
  • Now look at that quads parameters, data, etc and see if it is overwriting something
  • Check Vertex Buffers, UV buffers, texture pixel data etc.
Also, I never make an assumption that it is a driver bug just because you are seeing it only on one chipset.  I have identified and fixed so many bugs in both drivers and game software, I always want to get to the root of the problem and exactly locate the source of the problem.

In this case, I could imagine that ATI had closely packed a vertex data/UV data and that if NVIDIA, QualCom, etc packed differently where you might not see the glitch.

I personally use GUI debuggers because I can move around much faster in them, don't have to fill my unused synapses with a myriad of commands as I already have most of the programming languages floating up there!

Here's a screenshot of DDD http://www.gnu.org/software/ddd/ It is a general debugger that I've used before and it seems to be pretty well designed.


Until next time!




Thursday, April 12, 2012

Quantum Hierarchical State Machines

Quantum Hierarchical State Machine

I really like Miro Samek's Quantum Hierarchical State Machines.  They solve issues with regular state machines and treat state machines much more like classes.  This helps prevent state machine explosion (and spaghetti code).

For a good C# implementation you can get the source code here: http://code.google.com/p/gqhsm/ 

Also, there is a good GUI tool written in C# for editing the state machine and saving the code into XML format included in that code.  Here's a screen shot of some Zombie A.I. I did in the editor and it worked pretty well inside Unity 3D.

Zombie AI jpeg
Zombie A.I. Hierarchical State Machine
The Zombie A.I. Stateproto file can be retrieved from here: ZombieAI.sm1