Thursday, January 7, 2010

Reduce your micro-startup burn rate...and see the world, too!

At Voxilate, we've taken a novel approach to reducing capital expenditures while maximizing productivity and creativity: we're taking the show on the road and are putting our money where our mouths are--creating voice-activated applications for mobile devices while being mobile ourselves!

This is a bit easier to do as a micro-startup (also known as "Micro ISV"), given highly-available mobile broadband and ubiquitous wireless Internet connectivity, competitive hosting and "cloud" solutions, and the myriad online, hosted services at our beck and call these days.

Here's a quick rundown of tips we've found vital to our mobility so far (we will expand on these in later posts):

Mobile broadband: Don't leave home without it. We purchased a wireless broadband plan and wireless card that's plug-and-play with our mobile broadband-enabled CradlePoint MBR900 router. We also have a PepWave Surf personal wi-fi receiver that can harness available wi-fi and make it available to more than one team member or computer.

Network redundancy: Make sure you're bound to more than one network and/or cell provider. You want to always be able to call out, check email, and connect to remote systems with at least one of your team's phones or netbooks using wireless broadband cards or cell-phone tethering. We often switch between AT&T and Verizon services. Would be better to switch between three or four - but we're talking about belt-tightening, here!

Hardware: In addition to your mobile broadband card and portable routers, a good mix of laptops, external hard drives, and small form-factor systems like the Mac Mini will serve you well. You'll also want cigarette-lighter power adapters to power and charge your stuff - and, if there are more than one of you not driving while on the road, use the router in the car with the broadband card. Also remember to bring power strips, outlet expanders, Ethernet cables, thumb drives, extra chargers, connectors, and so on.

Internal Systems: You should have a source control system, build system, and bug system for development. What you choose to administer locally or remotely is up to you, but do make sure that everyone's got a copy of the source repository checked out and if you're self-hosting build & source control, ensure that you can swap build and source control systems from one laptop or mini-server to another in case of catastrophe. If you're going to be someplace for a day or two, make sure you check in your code. During this 'period of stability,' remember to also rsync (or some other replication method) to back up your critical systems to your hard drives as well as a secure off-site backup provider that you trust and uses encryption.

Hosting redundancy: Choose hosting providers you trust and who have good reputations - don't always go for the cheapest (although price doesn't always mean quality, either!). Look for hosting providers that provide data center geographic diversity. Augment with other providers - you want the ability to quickly bring your systems up in case of a hosting provider's catastrophic failure. Amazon's web services are excellent for this purpose--encrypt and backup your data to S3, build your backup systems with EC2 & EBS--and pay only when you need to bring them up or test (and you can bring them up in minutes, with simple shell scripts). Great for staging/development/pre-production servers, too.

System monitoring & Maintenance: You'll want to set up something to quickly alert you via email or SMS when remote systems go down - use a service like Pingdom and supplement with self-monitoring on your hosts. Sign up for system status and downtime alerts (if you're not added by default) for all of your providers. Follow their Twitter feeds and check your email. Do what you feel you need to do to keep peace of mind and security; script it, add it to crontab, and have it email you its results. For example, scan your web logs for unexpected traffic that doesn't 404. Monitor vulnerability alert RSS feeds for software you use (both locally and especially on your externally hosted systems). Use Snort and OSSEC. Use whatever tool(s) you love. I love elementary shell scripts. Lots of people love Nagios. Many adore splunk. Mix and match for great justice.

Delegation: Use services to do your bidding and spend your time doing what you do best. Take advantage of great services like Amazon's Mechanical Turk for quick, repetitive, or data entry type tasks and for graphic design expertise. Get a good accountant that can meet via phone or email. Use online fax and voice services to stay connected wherever you happen to be.

Mail: We use trusted family members and a mail receiving/scanning service, Earth Class Mail. You can view your mail online and have it scanned and/or snail mailed to you wherever you happen to be, singly or in batches. They even have an auto-deposit option for checks you receive. Also try to configure anything you can to send you bills and notices online--scanning costs can add up.

Digital and Physical Security: This is a biggie! When you're carrying your tech like a turtle on your back and depending on the wireless of others, an awareness of both physical and network security are vital. Don't connect to wireless networks you don't trust. Don't check your bank balance using hotel wireless, for example, and always check certificates (although that isn't any guarantee these days, unfortunately). Be careful what you download. Bring your own routers to ensure that you can connect to your local resources without going over the public Internet.

As far as the real world goes: Assume everything you have will be stolen and plan for the occasion. Make copies of all important documents and store with someone you trust. Categorize the importance of what you're lugging, then lock up the most valuable things and keep them on your person when you leave your vehicle for the night. Get into a routine, and make everyone crosscheck each other so you don't leave anything behind.

Short-term locations: Go beautiful, go off-season. Use sites like Check out executive long-term stay spots as well - if you plan ahead, you can often get a really nice condo in a great location for much less than you'd pay for a standard hotel room.

Make sure they've got broadband, and come prepared with all the things described above. Plan your stays around your work schedule - stay awhile if you're in deep development. You don't want to be on the road (well, with the tips above, you can be if you want to be!) when you've got a lot of coding or testing to do!

Trust, but verify: Verify your setup before you embark long-term. Use your network setup where you're currently at, then take it with you on the road. Try staying somewhere local for a week or more, near friends/family/business acquaintances so that you can easily offload equipment you find you don't really need.

These are just a few of the things we've done to reduce our micro-startup 'burn' while enjoying a spectacular view.


1 comment:

  1. I would make a few additional recommendations above and beyond these (not all might apply to an iPhone startup).

    Your source control system should be git (or at least one of the distributed SCMs, but git is great). The question of backups and full operation while not connected becomes moot. Compared to RCS, CVS, Subversion--well there is just no comparison even if you want to use a traditional single master development style. The ability to do what you want and get yourself out of trouble is really amazing.

    Second, VOIP or similar online phone services (to a lesser extent Google Voice) are a great way to provide public facing traditional phone services. Any smartphone or laptop is going to be able to cope with SIP so you don't need any further infrastructure and at least in my experience latency and quality is better with SIP than will cell service, even when using the exact same phone for both. But high end VOIP providers (I have experience with but there are hundreds of similar providers) can provide policy routing, voicemail, hunt groups, IVR (interactive voice response, or menus), toll free numbers, and similar professional services for extremely modest prices, as in a few dollars a month, for low volume sites. Cell phones work of course, but stop being convenient as soon as you start needing continuous professional presence.

    You hint around it, but I would have to strongly recommend using VMs for development, testing, and QA. Compiling your source code in a VM instead of your host computer might seem odd at first, but the performance penalty isn't that bad and having the ability to trivially save the disk image which was used to compile version x of your product is very convenient come patch time after your compile server has been upgraded. The ability to snapshot VMs and start doing destructive testing and quickly revert to continue from a known good point is really good. It also lets you use more aggressive disk caching strategies and not worry quite so much about viruses since you can always restore from a known good checkpoint. Saves lots of money on hardware too.

    As far as security goes, as you note theft is a problem. Whole disk encryption is a good first step in case a laptop goes wandering, as is setting up RAID-1 mirroring with an external flash stick (you can get 128GB on a stick). When you plug in the stick it can automatically sync up the latest changes. If you normally keep it separate from your laptop so that the same disaster won't get both of them, well if the stick is stolen you know it was encrypted so you can just buy another. If the laptop is stolen, you can know the laptop's data was encrypted and buy another one. Stick the stick in and boot from the stick and you are back working. I of course am assuming you are using real encryption, like dm-crypt and Truecrypt, not typical vendor snake-oil like the recent "hardware usb stick encryption" debacle. If you are thinking of international travel, encrypting everything (or perhaps putting everything in a hosted VM and just attaching to it as a network client which reduces suspicion) is really mandatory given the customs search and seizure policies now-a-days.

    Oh, and of course if you use Linux and Open Source Tools...well they are a heck of a lot cheaper. Unfortunately probably will need to keep a windows copy or two running in a VM for Microsoft Office.

    I would not have necessarily thought of using a startup to take the opportunity of touring the country. Sounds like a great opportunity.

    However, the *real* question I want to know is when are you going to release for the Nokia N900. I recently got the N900 and my wife recently got the iPhone (which I perform a lot of support for). I have to say the iPhone drives me up a wall with the silly profit and stupidity driven restrictions. The completely open source N900 platform really rocks, but a nice voice recognition app would be welcome!