Ruby, iOS, and Other Development

A place to share useful code snippets, ideas, and techniques

All code in posted articles shall be considered public domain unless otherwise noted.
Comments remain the property of their authors.


Hardware Services Startup Idea

I have an idea for a startup. I am not the right person to start it (and it might even be a conflict of interest to consult on it), but I believe that the technology is almost cheap enough and almost (or maybe already) mature enough that it should start work now so that it can launch right about when the price point will be right. More to the point, I want to make use of the services this business can provide. That's right, I want someone to start a company that I can pay to make me happier.

I've been doing work with embedded systems for the first time over the last several months, and I'm astonished by how inaccessible it is to individuals and small businesses. An embedded system, for those who don't know, is a computer designed for a more limited set of tasks than a general purpose desktop or laptop computer. That includes a lot of stuff most people use every day, like microwave ovens, TiVos, digital thermostats, wifi routers, etc.

A big company, with plenty of capital to invest, can choose suppliers for the various components they'll need in a particular product, design a circuit board and housing for the components, develop prototypes, develop the software for it, manufacture several thousand, and sell it through traditional sales channels (e.g. brick and mortar stores or direct business-to-business sales) and maybe online as well. That's how most off-the-shelf (i.e. not custom developed for a client) embedded systems are created, produced, and sold. That won't work for a startup or a hobbyist. Honestly, it won't work for most small companies. Even putting the capital costs aside, it takes a lot of time. Worse, if you don't have market clout many chip and board suppliers won't do business with you at all.

Designing, manufacturing, and selling art was once in the same situation. Note that I'm talking about multiple instance art (i.e. not including things like non-cast sculpture, physical paintings, etc.). There were services to print your photograph or digital art, or cast your figurine, but you had to go about shipping and even warehousing your artwork yourself. Worse, small runs of items are costly, and cut into artists' profits. A few companies came along and changed all that. DeviantArt provides print-on-demand art sales on artists' behalf, CafePress provides storefronts for art printed on a wide variety of clothing, mugs, etc., Zazzle provides a similar service, Topatoco specializes in merchandising for webcomics, and Threadless sells submitted art on T-shirts and shares profits with the artist, to name a few. I don't know who was first, and it doesn't really matter. There is clearly a thriving market not just for art, but for providing artists with the services they need to manufacture and distribute their art effectively.

I'm pretty sure there is a similar market of individuals and small businesses just waiting to be tapped who would develop embedded systems in a creative explosion if the costs were within reach. There are companies and products that go part of the way, like Gumstix, buglabs, and Marvell's Sheeva, but they don't do anything to support sales and distribution, and have very limited manufacturing options. Providing embedded product services similar to the art product services linked above is more than that. As I said, the technology may already be mature enough, and it is almost cheap enough. If you don't believe these premises, feel free to skip right to the comments section to tell me I'm an idiot but please include why you thing I'm wrong.

If you're still reading, here's where I'll try to sketch out what the services would look like. For the purposes of this discussion I'm going to talk about customers, who are the ones developing embedded products, and consumers, who are the ones buying those embedded products. I'm also going to call the company WidgetCo for the sake of convenience. If I'm a customer thinking about developing an embedded product, the first step is figuring out what I need. I certainly need a processor and some memory, but I could need any combination of the items on this clearly incomplete list:

  • wired ethernet
  • wireless ethernet
  • bluetooth
  • USB
  • serial port (RS-232)
  • removable storage (SD card, etc.)
  • video out (VGA, DVI, HDMI, etc.)
  • video in (IEEE1394, S-video, etc.)
  • LCD screen
  • LCD touchscreen
  • 3D acceleration
  • ASIC for some set of codecs (e.g. MPEG)
  • knobs or dials
  • digital audio out
  • headphone and/or microphone jack
  • mono or stereo speakers
  • condenser mic

There are probably lots of other options I haven't thought of, but I think it will be a while before even that long a list of options will be feasible for an early startup. (One thing I deliberately left off that list was a bunch of pins with fine control over each one's voltage/current. That sounds like a support nightmare to me, but I may be wrong.) There will need to be a few development board configurations at different price points, the most expensive having everything on it. If I'm going to develop a product, I'll need to be able to develop on something. A good pricing strategy might be to mark up the development boards by some deposit amount that will cover the cost of a prototype unit (see below); it's an early revenue stream, and discourages time wasters.

WidgetCo will have to provide some sort of SDK/toolchain available for download as well. I recommend a VirtualBox VM with a Debian GNU/Linux system set up with a toolchain and libraries using Emdebian for the SDK. I'd recommend providing an Emdebian rootfs as an SD card image for the platform OS itself. It would be a good idea to include a standardized software mechanism for upgrading the device's firmware in the field to make it easier for the customer to release revisions. The development boards should have a physical switch (or jumper, if you must) to switch between using an SD card and an EEPROM (or similar) as the root filesystem; it's much faster and easier to develop with writable storage, but later stages of testing should be done in an environment closer to the shipping product.

Once I've developed my product and I'm ready to have it produced, I'll upload a firmware image (which has been tested by loading it into the EEPROM on the board). WidgetCo will send me a prototype unit, already paid for by my development board deposit (see above), with my firmware image installed. If multiple prototypes are required, they will have to be paid for separately. The prototype unit should be just like the final product that will be sold to consumers, but will have a mechanism to load a new firmware image. Think of the prototype as similar to galley proofs, where the customer is responsible for testing and approving it before any more units are produced.

Once the prototype is approved (which may require further revisions to the firmware image), the customer uploads the latest firmware and sets up their storefront to sell units. This will include pricing options, such as a minimum profit markup, requiring a minimum number of units per order, bulk discounts, etc. The profit to the customer will naturally be smaller for low volume and higher as the volume increases. Once the device is available for sale, all transactions, manufacturing, and fulfillment will be handled by WidgetCo on the customer's behalf. WidgetCo will send the customer a check (or, more likely, a direct bank transfer) on a regular (weekly? monthly? quarterly?) basis.

The customer should also be able to upload new firmware versions when necessary, and the storefront should include a place for firmware downloads. Assuming the customer used the standard firmware upgrade facilities, WidgetCo's standard firmware upgrade utility (which should be available for Mac, Windows, and Linux) will do the job. The utility will take some significant work, since it should be able to function over bluetooth, wifi, or USB depending on what capabilities the customer's device has. Even more importantly, it must be friendlier and easier to use than most of the firmware upgrade tools out there. A friendly firmware upgrade process is a competitive edge for both WidgetCo and their customers.

There are lots of details that will have to be worked out, especially involving the logistics of manufacturing, distributing, and storing units. What branding/logo options will be available? What housing variables need to be considered (battery-powered, digital (e.g. USB) line-powered, DC line-powered, fans, ruggedizing, colors)? What standard sets of components will be available as board configurations? If I'm a big enough business, can I skip the storefront and housing and just order configured and loaded boards in large lots to assemble and deal with myself? Even so, and even starting with very limited options, I see a lot of money to be made and a lot of customers (and consumers) to make happy.

As I said before, I'm the wrong person to make this happen. I just want to make use of WidgetCo services. If you take this idea and run with it, let me know. If you make a truckload of money, feel free to toss me some, but my intention is to make this idea available to anyone with no strings attached. Good luck! Enjoy!

Labels: ,