Neil Fraser: Boredom and Frustration

A lot of academic work is being poured into machine learning. The idea is that computers can see what works, what doesn’t, and come up with new strategies. This is a complex problem; legions of PhDs have thrown their careers at it.

I think there is a simpler approach. Boredom and frustration. Today I was watching Widget deal with some sticks I gave her. She grabbed one in her mouth and ran towards her nest. For some inexplicable reason the 10cm long stick stopped suddenly when she attempted to enter the 3cm wide tunnel to her nesting box. Oh well, if you don’t succeed, try again. Which she did. Again, it didn’t work. After several more attempts she was clearly frustrated and changed her approach. She tried dragging the stick from one end. This worked a little better, but the stick got jammed at the first tight-radius turn. After several minutes of fighting the stick, she got bored and turned her attention to other matters.

This is behaviour one doesn’t see in most computers. They will quite happily execute an infinite loop until the Sun burns out. My proposal is that the computer should periodically stand back and do a self-evaluation. What percentage of the task has been completed? If this percentage is not changing (or even declining) over a significant period of time then there’s no point in grinding on. There are two options:

  1. Frustration. This technique isn’t working. Try another technique if one is available. Even one that in theory should be less effective might be better (due to a special case or some bug). An interesting and cheap source for other techniques might be previous versions of the offending code in the repository.
  2. Boredom. Nothing is happening. Alternatives have failed. Bail out and devote your attention to other things.

Some systems already have these concepts implemented to a certain extent. My Roomba understands the concept of frustration. I watched it get trapped under my desk the other day, ricocheting off the boundaries in a deterministic pattern like a ball in Arkanoid. After a short period it got frustrated at the constant wall-banging and switched to wall-following mode instead. It worked and it freed itself.

Steve Yegge’s Google Platforms Rant

So yeah, Microsoft gets it. And you know as well as I do how surprising that is, because they don’t “get” much of anything, really. But they understand platforms as a purely accidental outgrowth of having started life in the business of providing platforms. So they have thirty-plus years of learning in this space. And if you go to msdn.com, and spend some time browsing, and you’ve never seen it before, prepare to be amazed. Because it’s staggeringly huge. They have thousands, andthousands, and THOUSANDS of API calls. They have a HUGE platform. Too big in fact, because they can’t design for squat, but at least they’re doing it.

Amazon gets it. Amazon’s AWS (aws.amazon.com) is incredible. Just go look at it. Click around. It’s embarrassing. We don’t have any of that stuff.

Apple gets it, obviously. They’ve made some fundamentally non-open choices, particularly around their mobile platform. But they understand accessibility and they understand the power of third-party development and they eat their dogfood. And you know what? They make pretty good dogfood. Their APIs are a hell of a lot cleaner than Microsoft’s, and have been since time immemorial.

Facebook gets it. That’s what really worries me.

.. head over to developers.google.com and browse a little. Pretty big difference, eh? It’s like what your fifth-grade nephew might mock up if he were doing an assignment to demonstrate what a big powerful platform company might be building if all they had, resource-wise, was one fifth grader.

.. And it is a very serious mistake to conclude that the Facebook App could have been anywhere near as successful without the Facebook Platform.

.. The Golden Rule of Platforms, “Eat Your Own Dogfood”, can be rephrased as “Start with a Platform, and Then Use it for Everything.” You can’t just bolt it on later.

Jeff Bezo’s Decision to Make Everything a Service

Jeff Bezos is an infamous micro-manager. He micro-manages every single pixel of Amazon’s retail site. He hired Larry Tesler, Apple’s Chief Scientist and probably the very most famous and respected human-computer interaction expert in the entire world, and then ignored every goddamn thing Larry said for three years until Larry finally — wisely — left the company. Larry would do these big usability studies and demonstrate beyond any shred of doubt that nobody can understand that frigging website, but Bezos just couldn’t let go of those pixels, all those millions of semantics-packed pixels on the landing page. They were like millions of his own precious children. So they’re all still there, and Larry is not.

.. His Big Mandate went something along these lines:

1) All teams will henceforth expose their data and functionality through service interfaces.

2) Teams must communicate with each other through these interfaces.

3) There will be no other form of interprocess communication allowed: no direct linking, no direct reads of another team’s data store, no shared-memory model, no back-doors whatsoever. The only communication allowed is via service interface calls over the network.

4) It doesn’t matter what technology they use. HTTP, Corba, Pubsub, custom protocols — doesn’t matter. Bezos doesn’t care.

5) All service interfaces, without exception, must be designed from the ground up to be externalizable. That is to say, the team must plan and design to be able to expose the interface to developers in the outside world. No exceptions.

6) Anyone who doesn’t do this will be fired.

7) Thank you; have a nice day!

Ha, ha! You 150-odd ex-Amazon folks here will of course realize immediately that #7 was a little joke I threw in, because Bezos most definitely does not give a shit about your day.

.. – every single one of your peer teams suddenly becomes a potential DOS attacker. Nobody can make any real forward progress until very serious quotas and throttling are put in place in every single service.

.. monitoring and QA are the same thing.

.. But Bezos realized long before the vast majority of Amazonians that Amazon needs to be a platform.

.. The Golden Rule of platforms is that you Eat Your Own Dogfood. The Google+ platform is a pathetic afterthought. We had no API at all at launch, and last I checked, we had one measly API call.

.. Google+ is a knee-jerk reaction, a study in short-term thinking, predicated on the incorrect notion that Facebook is successful because they built a great product. But that’s not why they are successful. Facebook is successful because they built an entire constellation of products by allowing other people to do the work.

.. Our Google+ team took a look at the aftermarket and said: “Gosh, it looks like we need some games. Let’s go contract someone to, um, write some games for us.” Do you begin to see how incredibly wrong that thinking is now? The problem is that we are trying to predict what people want and deliver it for them.