Blogwell’s Black

 

Warranties

"To prevent damage ... please remove the device from your pants pocket before sitting down"

-- HTC / Google Android phone packaging

In the late 80s, my family built a house in Canada for which we bought fancy nitrogen-filled double-pane insulating windows. Each window came with a big red sticker, somewhat hard to remove, proclaiming a 10-year warranty. The not-so-fine print also said the warranty was void if the window wasn't opened for 30 minutes every day.

Perhaps somewhere in Canada there's a dutiful person who actually opens his house to the wind, rain and snow for 30 minutes every day, and arranges for a neighbor to do it when he's on vacation. But most people who buy either Android phones or that brand of window ignore the warnings and take their chances. 

Building reliable products is hard. At Anybots we're in the middle of this process. We're developing mobile telepresence robots that have to drive around offices and factories. We know people will throw them in the trunk of their car, pack them in luggage, drop them, kick them, crash them, drive them off curbs, spill coffee on them, and 1000 other abuses we haven't even thought of. We're doing our best to make them survive as much abuse as possible, but they're physical objects made of plastic and metal containing optics, electronics, and bearings. They can't survive everything. They won't be falling-anvil-proof.

Actually, places with falling anvils are a great application for telepresence robots. If you have to look around somewhere dangerous, you'd much rather risk a $10,000 robot than yourself. So we'll definitely have customers who drive them into lava fields or unstable mining tunnels or fires or chemical spills. There are military-grade robots costing $100,000+ that would survive more of these situations than ours, but we think 2 of our robots will outlive 1 military-grade robot. That is, for every 2 incidents that would destroy our robot, there'll be at least 1 that would destroy any robot.

So, some customers will use our robot in air-conditioned offices and some will drive them into burning toxic waste. How do we provide a warranty that makes sense for everyone? Robots that fail in office settings didn't meet reasonable customer expectations and we should replace them for free. A robot hit by an anvil or blown up by an IED or melted by flames has already provided fair value to the unharmed customer, and they should pay for the replacement. At either extreme, I think reasonable people will agree on what's fair. It gets trickier in the middle. 

A typical middle scenario will be a user who drives it between buildings in light rain. The robot should survive that sort of thing most of the time, but it's outside our spec and it may eventually fail. Depending on who that user is and how his company budget works, he may offer to pay for repairs or may try to claim warranty work. Auto makers have this problem all the time. People must bring in cars with blown engines caused by racing or never putting oil in, and the dealer has to decide whether to replace it under warranty. It can be an unpleasant, confrontational process that leaves bad feelings all around. I want to avoid that.

The current plan is to offer 3 levels of service contract for different uses: office, dirty environments, and hazardous environments. They'll be priced according to our estimated repair/replacement cost. I want to err on the side of being nice to customers, but we may occasionally have to insist that people upgrade to the next contract if, say, they send us back melted robots for replacement under the "office" service.

I'm open to other ideas that meet our goals. To state our goals explicitly, they are:
  1. Make customers happy by exceeding their expectations.
  2. Collect honest data about why robots fail. Don't force customers to cover up the real reason for failure.
  3. Don't lose large amounts of money on outlier customers.

Loading mentions Retweet

Comments [0]

Early-stage theories

If you'd met the Wright brothers around 1900, when it was just the two of them and some hand-built models, you might have guessed that their flying machine startup was going somewhere.  Wikipedia article:

Despite Lilienthal's fate [died when his glider crashed], the brothers favored his strategy: to practice gliding in order to master the art of control before attempting motor-driven flight. The death of British aeronaut Percy Pilcher in another hang gliding crash in 1899 only reinforced their opinion that a reliable method of pilot control was the key to successful—and safe—flight. At the outset of their experiments they regarded control as the unsolved third part of "the flying problem". They believed sufficiently promising knowledge of the other two issues—wings and engines—already existed. The Wright brothers thus differed sharply from more experienced practitioners of the day, notably Ader, Maxim and Langley who built powerful engines, attached them to airframes equipped with unproven control devices, and expected to take to the air with no previous flying experience. Though agreeing with Lilienthal's idea of practice, the Wrights saw that his method of balance and control—shifting his body weight—was fatally inadequate. They were determined to find something better.

Even without hindsight it's clear they had ideas and momentum. They had done their own experiments, learned about others, figured out some non-obvious things, and developed an original plan of attack. They didn't have the answer to stability, but they knew how they were going to figure it out. They focused on specific problems and didn't get distracted by others. Obviously they knew they'd need strong engines and wings someday, but they decided to start with the control system and build everything else around it later. They were willing to solve the hard problems by strapping themselves to kites on remote hillsides rather than just tinkering with engines on the bench like some of their competition.

In the end, their Wright company made a lot of mistakes and wasn't the biggest financial success of the early aircraft industry, but it could have been. It's the sort of startup we like at Y Combinator: technologically disruptive with a good chance of cashing in.

You can see the same features in good early-stage web 2.0 startups. They are sometimes caricatured as being frivolous companies, but in fact the good ones are based on ideas as valuable as the Wright's scheme for controlling an airplane. When Posterous applied to YC in spring 2008 there were probably as many companies trying to create blogging software as ever tried to make flying machines. The Posterouses stood out because they had been thinking about easy web publishing together for years, built prototypes, tried things, and had some insights nobody else did and a plan for creating a successful product. They had thoughtful reasons why the problems they were going to focus on would make them popular among a growing class of users, while Blogger would continue to focus on its existing user base and stagnate. 

Good founders are open-minded like good scientists. For example, I challenged Garry's assertion that submitting blog entries by email was easier than web forms. Many people seem to prefer Gmail over desktop email software, so why wouldn't they prefer entering their blog posts on the web than their email client (which might even be Gmail?) Bad founders react to such questions like, "What? It's obvious! How dare you question my premises?" Garry's answer was more like, "Yeah, we wondered about that too, but we tried X and saw users do Y so we think it'll work." He had tested his assumptions, evolved his theory, and figured out important details that nobody else seemed to get.

Fundamentally, most YC-funded companies are in the business of providing a digital service that users pay for or advertisers sponsor. There are already thousands of web companies providing a wide range of services, so why will a brand new company make money? At the heart of a web 2.0 startup are several theories:
  1. Our new service will attract the following kinds of users: .....................
  2. They will use it for the following purposes: ..................
  3. Instead of a trusted brand, they will use a startup they've never heard of before because ......................
  4. Even though some of the value is social, we will be useful to the first users because ..........................
  5. Users will recommend us to their friends because ....................
  6. Big competitors won't be able to copy our features as soon as they notice us because ........................
  7. .................... will pay us $................... in return for ........................
  8. Once we get critical mass it'll be hard for new startups to steal our users because ..........................
Those are hard questions and they're interrelated, but startups continue to find answers to all of them. Make sure the existing players don't have better answers than you. For example, Craigslist has a very good answer to #8, so you need something big for #4. We get a lot of "Craigslist for X" applications, and often they miss that. For example:

YC: Why will users prefer you over Craigslist?
Founders: We'll be more localized. Craigslist has listings from all over the city, but we'll just show you listings from your neighborhood.
YC: Maybe Craigslist would be better if it were more localized, but until you're popular you'll have to be *less* localized in order to have any listings show up at all.
Founders: So we won't turn on localization at first.
YC: But then you won't be much different from Craigslist, and there's no reason for people to switch. Your special sauce only works after you're already successful. You need a way to get there.
It's clever of Craigslist to err on the side of large granularity, because it's a phase a startup would have to go through to compete with them. Or:
YC: Why will users use your software instead of Quickbooks?
Founders: Our software will be easier to use.
YC: Are there a lot of people who find Quickbooks too hard?
Founders: Yes.
YC: But a lot of people already know Quickbooks, so it's easiest for them to not change.
Founders: Sure, we won't take away their users. We'll get new users.
YC: How will new users find out about you?
Founders: Their friends will tell them.
YC: Do people tell their friends, "Say, I just found this really easy new accounting system!"
Founders: No, but when people start a business they'll ask their friends what they should use.
YC: But they're going to ask their friend who knows the most about accounting. Won't that person be a Quickbooks user? Won't they recommend what they know?
Suppose you have answers to all the above questions. You build it and nobody comes, so something is wrong. How do you figure out what? I don't have any universal advice, but helps if you have a complete, consistent working theory the team agrees on so you have a basis for debate and experimentation.

Experimenting is hard because people are naturally afraid to put their theories to the test. Often when startups take a long time to launch, it's because they're afraid of bad news. They fear people won't like their product, so they don't release. They plow forward based on their untested theory rather than testing and iterating. Teams that don't really trust each other or where one founder is intellectually domineering are less able to try different approaches. The best advice is to strap on some plums and put whatever you can to the test, so if it's wrong you can adapt and move forward.

Loading mentions Retweet

Comments [5]

Startup School Videos

Paul Graham - Startup School 2009 - partial from Alexa Lee on Vimeo.

 

Twitter Founders - Early experiments, Use Cases for Startup School from Alexa Lee on Vimeo.

 

Paul Buchheit - Been at your job too long? QUIT! - Startup School 2009 from Alexa Lee on Vimeo.

Loading mentions Retweet

Comments [0]

Economic efficiency win

From FailBlog, under the title "Business Plan Fail":

Yes, it's kind of funny. But it might be the right thing for the neighborhood.

I spent some time in a small town far from anywhere, which had 3 retail establishments. 1 department store, 1 restaurant + laundromat + video rental store, and 1 fishing/hunting store + gas station. It was an efficient solution for providing essential retail services. Out of the 1000 people in the town, less than 20 were devoted to retail. That's 2% of the population, or maybe 5% of the local labor force.

I know the modern trend is towards highly branded, tightly focused businesses. But would this town be better off with a standalone beauty salon, specialty chain saw dealer, and an Applebee's? Sounds like a lot of wasted retail labor for a doubtful increase in quality.

Loading mentions Retweet

Comments [0]

Subject

Here's an idea for Facebook. Get rid of subject lines in messages. They almost never have any content in them other than "Hi". Nobody ever changes subject lines in threads, because it seems like you're trying too hard, so they're usually unrelated to recent conversation. And it makes it seem like when you're writing to someone, you have to have something to say that can be summarized. But often what people want to say is just one sentence, "Hey, nice to see you last night at the club" or something. There's no short version of that. Getting rid of the Subject: field would lead to a lot more messages since it makes it so much easier.

Typical subject lines contribute nothing:

But two lines of body would have been the whole message.

One of Twitter's virtue's is not requiring a subject line. Even better, it doesn't require a concluding paragraph with a call to action like blog posts are supposed to have.

Loading mentions Retweet

Comments [3]

Surrogates Opening Party

Anybots is throwing a movie opening party tomorrow night for Surrogates. It's set in the future where people all stay home and send their telepresence robots to the office. Adventure ensues, Bruce Willis saves the day. We like the premise. They interviewed some so-called robotics experts (incl. myself) for this documentary:

The party will start at Anybots (320 Pioneer Way in Mountain View) at 5:30 Friday. There'll be snacks and robot demos, and free movie tickets for the first 40 people in the door. Then we'll head to Shoreline Theater for the 7:20 show. Carpool if you can. It should be a good crowd -- come and be part of it! Feel free to bring along anyone you think would be interested. Kids are welcome too (the movie itself is PG-13.)

Here's the official movie page

http://www.chooseyoursurrogate.com/

Loading mentions Retweet

Comments [2]

TwitVid


Recently launched: TwitVid makes it easy to post videos on Twitter.

Loading mentions Retweet

Comments [0]

Double backflips

Wondering about bit patterns that cause my DSL line to fail, I was curious what order the bits are sent in: LSB-first or MSB-first. According to the published ITU spec:

Outside the LSx serial interfaces data bytes are MSB transmitted first. All serial processing in the ADSL frame (e.g. CRC, scrambling, etc.) shall, however, be performed LSB first, with the outside world MSB considered by the ADSL as LSB

which brought back fond memories of working on network protocols.

Loading mentions Retweet

Comments [0]

I don't think I can wait that long

For my Apple TV to download

-- Trevor tlb@tlb.org
Sent from my iPhone

Loading mentions Retweet

Comments [0]

DSL data-dependent problems

I've been having trouble with my DSL at home. Basically it works, but large downloads frequently stall part way through. It seems to happen every several tens of megabytes. I noticed that for a given file, it would typically stall in the same place. Occasionally it would keep going, but mostly it would fail indefinitely.

Using tcpdump showed that a particular packet of the download stream never came through, even though it was retransmitted several times by the sender. Could a particular sequence of data in the packet be causing it to fail? I wrote a script to try pinging my ISP's router with different random data. The ping command has a -p option to specify the data in the packet, for just this purpose. The vast majority of data patterns had 0% loss rate, but it finally found one that consistently caused nearly 100% loss:

cesium robot$ ping -p 2120fefe [ISP router]
...
111 packets transmitted, 2 packets received, 98% packet loss

Note that the bytes have a pattern: the first 2 bytes are mostly zero and the last two bytes are mostly 1. I'll get back to this. First, here's a summary of results:

Basic patterns have no loss:

0%
00 00 00 00
0%
ff ff ff ff
0%
aa aa aa aa
0%
55 55 55 55
0%
aa 55 aa 55

Bad pattern discovered:

100%
21 20 fe fe

Many similar patterns have high loss rates:

0%
20 20 fe fe
0%
23 20 fe fe
0%
25 20 fe fe
0%
29 20 fe fe
40%
31 20 fe fe
10%
a1 20 fe fe
0%
21 21 fe fe
0%
21 22 fe fe
70%
21 24 fe fe
0%
21 28 fe fe
0%
21 30 fe fe
100%
21 00 fe fe
50%
21 60 fe fe
0%
21 a0 fe fe
0%
21 20 ff fe
0%
21 20 fc fe
0%
21 20 fa fe
0%
21 20 f6 fe
30%
21 20 ee fe
0%
21 20 de fe
20%
21 20 be fe
20%
21 20 7e fe
100%
21 20 fe ff
30%
21 20 fe fc
40%
21 20 fe fa
0%
21 20 fe f6
0%
21 20 fe ee
20%
21 20 fe de
30%
21 20 fe be
0%
21 20 fe 7e

Random patterns have no loss:

0%
59 08 3f c0
0%
34 e4 e3 8f
0%
31 17 60 da
0%
b7 9c 58 6e
0%
c7 af 2a 4a
0%
31 b1 d6 8d
0%
b0 06 9f 06
0%
b4 2d b3 54
0%
4b ca fe 27
0%
d0 e4 df f6
0%
69 cc 0c ca
0%
2e ac 68 fd
0%
17 4d d8 cc
0%
11 29 a0 9c
0%
25 36 e7 b6
0%
fd 89 6e b5
0%
e0 34 60 71
0%
95 bf 3c 9d
0%
b6 5f 18 6c
0%
93 c7 e9 18
0%
b3 e8 04 8a
0%
ad f8 d7 66
0%
a9 7b 50 82
0%
cf 7e db c8
0%
8a 8f fc 1e
0%
68 42 76 5a
0%
b2 b3 5a d6
0%
fb 6d bb 15
0%
20 f3 17 42
0%
97 95 af 5b
0%
6d ce 23 2c
0%
fa d2 ae a8

Why does this happen? I'm not sure I understand DSL well enough to explain it. In simpler network protocols, there were obvious ways in which long runs of zeros or ones could cause trouble under marginal conditions. The pattern here has a large low-frequency component (mostly zeros in the first 2 bytes and mostly 1s in the last 2 bytes) so it's plausible that it causes problems.

However, my DSL uses a very complicated discrete multitone modulation system. There are actually 256 separate channels, each using 4 kHz of bandwidth at frequencies ranging from 0 to 1 MHz. The bottom few channels are for voice. Typically 25 channels are for uplink and 224 for downlink. According to the spec, it uses complicated interleaving and Reed-Solomon error-correction coding (the same system used on CDs). So it's a little hard to imagine how such a simple data pattern can cause total loss.

The DSL router doesn't give much diagnostic info. It does report a signal/noise level for receive of around 8 dB, which is lower than the 12 dB suggested for reliable operation. And my ISP told me that my line was longer than recommended for the 6 Mbit speed. So I'm probably getting what I deserve.

It's interesting that TCP doesn't handle this situation very well. Retransmission is really driven by the sending end. It will try several times, never receiving an ACK, then give up. When it gives up, it doesn't seem to send a connection close (Fin or Rst) so the receiving end listens forever or until a very long keepalive timeout expires.

Loading mentions Retweet

Comments [3]