Archive for August, 2009
Tools
Posted by Jeff in programming on August 21st, 2009
In Star Trek, one need merely describe a desired application in vague terms, and the computer creates a program. Instantaneously. Completely satisfying the creator’s intent. With no bugs. Sadly, those of us stuck back here in reality aren’t so lucky, but there are things we can do to ease our own programming efforts.
All of modern civilization is built upon the effort and productivity of generations past. So it goes in the software world. For my quasi-stealth-mode computational photography project, I’m making use of some great tools:
- Linux — Operating system. Free. Fast. Familiar.
- Apache — Web server. Can be overkill, but it does a good job integrating with…
- Ruby on Rails — Framework. Ruby is a wonderful, modern language. Rails is getting increasingly mature. Also using a bunch of packages and related tools, like Mongrel, which make life easier.
- Aptana/RadRails — Integrated Development Environment (IDE). Specifically, RadRails. Development for Rails in Aptana is made easier by the underlying Eclipse engine, the cooperation with the Ruby debugger, and the decent integration with…
- Subversion — Version control. Because I had it installed, Rails plays nicely with it, and I haven’t had a chance to get familiar with Git.
- Octave — Numerical computation. Very similar to Matlab in its vector-based programming language, but it has some nice features that make it particularly well-suited for my needs. Also, it’s free, whereas acquiring Matlab would force me to mortgage my firstborn child.
- FogBugz — Bug tracking. And scheduling. I thought I should give it a spin, seeing as how several of my friends from Rose and Stanford work at Fog Creek.
- Amazon Flexible Payments Service — Payments. A business is about money, and money requires being paid. Amazon FPS makes accepting credit cards easier than, say, getting a merchant account and putting together a PCI-compliant server. That, and Amazon doesn’t have the stigma of PayPal.
It hasn’t all been a smooth ride. Aptana crashes at least twice a day. I’m still in the process of learning Ruby (which is one of my motivations for using it). I’ve had to patch bugs in Octave and Rails. That said, it’s easier than doing everything from scratch in, say, C++.
At first, I felt a bit guilty for standing on the shoulders of others. Hell, the entire motivation behind the project is based on decades of academic research. But like the architects who use the steel alloys of others to build their skyscrapers, and the auto manufacturers who use minerals mined by others in the distant corners of the globe, I too will take pieces from others and combine them to make 2+2=5. Perhaps one day, somebody will incorporate my work into their own, thus continuing the great cycle of humanity.
The Idea(s)
It is a common belief in Silicon Valley that ideas are worth very little. Instead, execution is the key to success. Consider the famous Edison quotation:
“Genius is 1% inspiration and 99% perspiration.”
So it went with Nesota. I considered many ideas, including:
- Group travel planning/coordination service, born out of my own frustration
- Consumer-grade thermal imaging camera, prompted by stories of volunteer firefighters borrowing the departments’ thermal cameras for use as hunting aids
- Group gift service, where money for a gift from a group could be collected and the gift selected
- Coaching hub, where students could find coaches, coaches could find students, and payment could be exchanged in a formal manner (”YouCoach.Me”)
- Broad automotive enthusiast site, in the style of BonnevilleClub.com (my successful niche site for Pontiac Bonneville owners, now sold)
- Photography TV channel or show, showing how to achieve various ends through technique (kind of like Good Eats meets The Shot)
- Service for pestering people to stop procrastinating and start working, targeted at entrepreneurs who can’t seem to get their projects going
In the months and years since my initial thoughts, some of these have come to be (for example, StickK partially fulfills the nagging-service use case), and others remain frustratingly absent (like the consumer-grade thermal camera, though it seems to be a ripe opportunity for Redshift Systems). Part of the challenge in selecting an idea is having the perseverance to stick with a single idea instead of running off with the idea-of-the-week, each of which is “surely easier” and “certainly more profitable” than the original idea under development.
After a bunch of false starts (anybody want to buy the domain YouCoach.Me?), I settled on a computational photography idea that grew out of a discussion with a good friend. What, specifically? Well, if a photographer or the camera makes a mistake with the exposure setting, the white balance, or the framing, all of those problems can be corrected rather simply in post-production. However, if a focusing error is made, the photographer has few good options. Sure, he can hit the picture with “unsharp mask” and its brethren, but those filters serve only to increase the acutance of the image. They don’t fix the underlying focus problem. What to do?
It turns out that there’s a better way. A way that’s been used to a limited extent in astronomy and microscopy for years. A way that presents an exceptionally difficult technical challenge to the implementer. A way that’s ripe for commercialization.
Imagine: if your camera produces a blurry photo because of a focusing error or camera movement, this technique can recover the latent sharp image and save the day. Such is the beauty of the current idea.
The challenge now is the implementation.
The Plan
The purpose of a business is to make money. Business make money by bringing in more than they spend. Doing that requires a plan.
When I filed the paperwork to organize Nesota, I didn’t have much of a plan. Nay — I had no plan at all. I had a whiteboard, an LLC, and a web server. No plan.
There is some precedent for starting a company before knowing the company’s area of business. For example, the founders of Hewlett-Packard started their now-enormous company without a clear idea of what to do. Eventually, they figured it out, and HP went on to help establish what became “Silicon Valley” as we know it.
Hewlett and Packard might not have known the exact nature of their future business, but they knew enough to develop a list of guidelines. That seemed like a good idea, so I did the same:
- Find a problem first, then build the technology around the problem, not vice-versa. An all-too-common mistake among tech companies run by engineers is to focus on the technology instead of the customer needs. In effect, they build an amazing solution to a problem nobody has. They expect the world to beat a path to their door just because they have the coolest technological marvel. Sorry, doesn’t work that way. The correct approach is to develop a hypothesis about a problem, validate your assumptions by bringing your ideas in front of actual potential customers, and iterating until you hit on something viable.
- Identify an opportunity with low market risk but high technical risk. Think about it: not often have companies failed solely because the engineers shrugged and said, “Well, I guess what we set out to do is impossible,” med-tech and bio-tech companies excepted. In general, if the market exists, engineering can figure out a way to deliver something that will solve the customers’ problems.
- Ship early and ship often. Focus on getting early cashflow and customers to support continued work and obtain real feedback. Manage scope to keep the engineering difficulty and schedule in check.
- Build a sustainable business. Something with a real business model (i.e., not reliant on web advertising, and definitely not “free”). Something that will still be relevant and valuable in a couple of years. Not necessarily “sustainable” in the green sense of the word.
- Have enough profit potential to be a lifestyle business. I wanted something that would give me financial freedom. If I could do it without hiring anybody, so much the better. Net income targets would be in the $100k — $500k per year range. Not huge, but enough to allow me to live comfortably.
- Not requiring external investment. Revenue goals like those mentioned above are far too low to be interesting to venture capitalists. Accepting outside investment makes one beholden to outside interests, which are not always well-aligned withe the founders. No, I wanted to bootstrap the entire operation.
- Selling products as opposed to services. Consulting and contract work can be lucrative, but the money is flowing only while you’re working, and such business don’t scale well. A business selling products can “work” even while I’m hiking in the woods.
- Doing something I love. Work takes a lot of time. Why spend so much of the best years of my life doing something I don’t enjoy? There’s always a risk in choosing an enjoyable topic that the existence of the company will destroy the enjoyment, but that can be mitigated by selecting a related field instead of the primary area of enjoyment.
Many of these criteria were informed by my experiences at Stanford, especially the course MS&E 273: Technology Venture Formation, which was perhaps the most useful, the most enjoyable, and the most work of any I took there.
Criteria: done. Next step: identify The Problem.
Minnesota scene
A few Twin Cities startups are alive and kicking, so says an article in Monday’s StarTribune. And not just the usual med-tech ventures one expects in Minnesota, such as Apnex; the companies featured in the story were web/mobile firms incubated in Y Combinator: FanChatter and Socialbrowse.
While I’m skeptical about the long-term viability of any company that rests upon social interaction, Facebook included, I applaud the efforts of FanChatter and SocialBrowse to get something going in the Minnesota startup scene. Sure, there are some others worth mentioning. A quick Crunchbase search for companies in the Minneapolis area pops up a few familiar names, like GasBuddy and TinyUrl, but that pales in comparison to the wealth of startups in Silicon Valley.
I spent the past few years living in Palo Alto, and I have witnessed first-hand how pervasive entrepeneurship can become in a culture. Out in Silicon Valley, it’s a badge of honor to be working at a startup. Out in Silicon Valley, everybody seems to know at least a few VCs. Out in Silicon Valley, there’s an extensive support structure for entrepreneurs and their fledgling companies. Minnesota has a ways to go.
In Minnesota, it seems that most residents don’t even have a clear understanding of the word “startup.” They smile and nod, because they’re Minnesota Nice, but the concept evades them. I’d like to see that change.
Part of the trouble is that the Twin Cities are often thought of as a med-tech innovation center. Other subjects might get short shrift. I have a background in medical devices, but I’m not qualified (yet) to lead such a venture, so I prefer to focus on smaller IT-type ideas, even those small enough to be bootstrapped.
Here are some resources and entrepreneurial resources that might be of use to Minnesota startups:
- VCs: Split Rock Partners, Rain Source Capital, the yet-to-be-launched Altavail Partners, others listed at the MVCA
- Competitions/Demo Days: MinneDemo, Minnesota Cup
- Companies: Crunchbase listings
- Organizations: Minnesota High Tech Association, getSTEM
If anybody is interested in a Minnesota HN-type meetup, let me know. Also, feel free to pass along any information to add to the list.
The Setup
And with the stroke of a pen, Nesota LLC was born. Why an LLC? Why Minnesota? Why the name?
I had long performed entrepreneurial activities outside of a formal business structure. Consulting, BonnevilleClub.com, somewhat sketchy “independent contractor” gigs, and so on. According to the law, such activity is treated as a sole proprietorship, which is to say that the business and my person were legally indistinguishable. I reported my income as self-employment, paid taxes, and went on with life. There was no liability protection, but I had little to lose, and I didn’t want to bother with the paperwork.
Times change. Nowadays, I have something to lose. Nowadays, I expect to be dealing with large sums. Nowadays, I can handle the paperwork. I needed a way to provide some separation between my business activities and my personal life.
Why an LLC? I chose to organize Nesota as an LLC for both simplicity and tax minimization. All profits (and losses) pass through to me, but I enjoy the protections of the corporate veil by maintaining the company as a separate entity; namely, I’m less afraid of losing everything should I be sued, which is a near certainty assuming I achieve success. I could have organized as a Type-S corporation, which also features pass-through finances, but I felt the LLC was easier to establish.
Why Minnesota? There were some legal reasons, such as the protection under Minnesota statute of work done while moonlighting (something not true of all states), but the most compelling factors were my existing Minnesota residency and the low cost of filing in Minnesota: $135 (at the time), and I was in. No $800 franchise tax like California. No need for a registered agent in Delaware. No need to pay even more fees to register as a foreign company in the state with the actual operations. Will the relatively high Minnesota personal income tax rate hurt? Well, sure, but I’ll file that under “problems I’d be happy to have.” It’s not like I can’t change the legal structure of the business should I encounter wild success. Doing so might result in a high one-time expense, but hey — in that scenario, I’m already wildly successful, right?
Why Nesota? Because it’s pronounceable. Well, that and the .com domain name was available. Very important. And because I wasn’t sure what the company would be doing, so I couldn’t chose a more topical name. As for the origin, I took a play from Cisco’s book and trimmed out a name from a nearby geographical feature. In Cisco’s case, the name came from San Francisco. In Nesota’s case, the origin is Minnesota. I’m actually surprised that the name was available. According to my research, there have been a few companies with similar names in the 1970s and 1980s, but none are currently active. The pronunciation is slightly ambiguous, but I say it with three syllables and a short “e”: neh-so’-tah.
From there, it was a simple matter of establishing a business address, getting an EIN from the IRS, and opening a business bank account. The foundation had been laid!
One problem remained, and it was a doozy: how to make money.
Next: The Plan.