I lost the bet

May 13, 2009

IMG_0462Bethany and Matt, whom I watched eat dinner, speculated that everyone would fall into two categories; the people who wanted to see me break, and the supporters who wanted to see me succeed.  I thought everyone would fall into the wanting-to-see-me-break category.  I was closer to right, but still wrong.

It turns out that everyone fell into the you’re-an-idiot category, and most of them tried to talk me out of the bet.  Our VP of engineering tried to redefine “monkey chow” so that I could eat real food under a different name.  Our health food guru, Manish, was of the opinion that “you should get out of the bet.  There’s organic food, and then there’s normal food, and then there’s animal food.  Animal food companies get sued all the time for leaving poison in their food.”   Dusty handed a monkey chow pellet to Manish, suggesting that he smell it.  “No,” argued Manish.

I had some trouble thinking straight yesterday and the day before.  I didn’t know if it was from not eating enough, or from something they put in the chow.  I guessed that it might have been the caffeine pill I took (no coffee allowed during the bet, remember?)  So, yesterday, no caffeine pill, and the inability to think was even worse.  That was the real deal-breaker.  I need to be able to think.

IMG_0466I was getting pretty frustrated with the stuff already anyway.  The taste was tolerable; it was how much of a pain it is to eat.  It’s dry and crusty, and takes a long time to chew up.  I tried making a monkey chow shake in the blender, but it might as well have been a sand shake; it all falls to the bottom and won’t pour out.  I had to chow down on pellets for almost a half hour just to go from too-hungry to merely hungry.

So, it’s over.  I gave up yesterday, before lunch – which was omakase at Kanpai, a $35 value, paid for by my manager.  And tonight is the free $200 sushi at Sawa that the company is also picking up.  All of these were real reasons to drop off the “diet” too, especially since the bet was only for $100.


The Chow Is Here; The Bet Is On

May 11, 2009

We  agreed that the bet started when the monkey chow got here.   I didn’t realize this when I wrote about the bet earlier today, but Dusty had already bought some chow, and sprung it on me today.  This is a real dick move, for several reasons:

  1. Dusty sprung this on me knowing that I already had a sub I was going to eat.  Now I have to throw it away, and he refuses to pay for it.
  2. Dusty knew that I had a dinner date tonight with my cousin and her boyfriend, who are moving away from the bay area in two weeks.  This was going to be one of my last chances to see her before she moved away.  I had to drive them to the restaurant and watch them eat.
  3. On Friday, IMVU was going to treat me to a $200 sushi dinner as a reward for some work I did several months ago.  Dusty did not know about this one, although the original version of this post claimed otherwise.  Now I can’t go.  Yes, I realize that the bet is for less than $200.  I’m still going to win.  Maybe I can get IMVU to reschedule.

The monkey chow is actually pretty good.  It tastes like life cereal.  It takes a long time to eat because it’s so dry, so I tried blending it up with some water.  Monkey Chow smoothies aren’t so bad either.  There’s a weird aftertaste, but I bought three big bottles off mouthwash – one for home, one for work, and one or the car.

Dusty says he was worried that starting the bet today might be too much of a dick move, but that he conferred with several of my other former friends, who said it would be cool.

Monkey Chow

May 11, 2009

Two of my friends were making fun of me for eating very quickly. The joke is that I don’t taste food. “Ha ha,” I agreed. Then one of them said I might succeed where this guy failed.  I think I could do it.  Dusty thinks I can’t.  We bet $100.



So, when we get around to ordering it, I’ll be eating nothing but monkey chow and water for a month, after which I’ll be $100 richer.  The $100 should more than cover the mouthwash expenses I’ll undoubtedly incur during the “experience.”

IMVU: Continuous Integration does not cause Low Quality

March 27, 2009

Since Timothy first wrote about it, IMVU’s bleeding edge continuous integration strategy got a lot of attention. Some of it has been negative, and some of that negative attention has been well-researched. I want to address one part of it in particular.  There appears to be a feeling in the mind of Michael Bolton, or at least of the comments on his blog, that continuous integration causes bugs and general low quality. This is completely wrong, and I feel like it needs addressing.

I’m a software engineer at IMVU, and as such first-hand consumer of our continuous integration practice.

The nature of this apparently causal link between continuous integration and quality has been speculated upon.  Rather than address any wrong theory, I’ll just tell you what’s really going on.  Continuous integration doesn’t make us write buggy code, it lets us get away with writing buggy code.

To see why, you first have to recognize bugs have two costs.  They make your product harder to use, and they make it harder to maintain.  You suffer the first by losing customers, and you suffer the second through the payback of the technical debt.  You have to fix bugs as early as possible so they don’t infect your new software.

What TDD and continuous integration have done is free us from the second cost, allowing us to defer the payback on the first.   Bugs never cause significant regression in new software, because our dedication to test-first development keeps those bugs form propagating into new features.  This is not to say that we never fix bugs; it means that there’s a lower ROI on fixing them.  We can choose to delight customers by making new things for them instead of by fixing the old things, and only fix the bugs that have significant customer impact.  Nobody cares if some page nobody uses doesn’t work right.

You might think that this would cause our customers to hate us.  While it makes some customers angry, it doesn’t increase the overall level of dissatisfaction.  Different people get angry about different things.  At any given time, some of our customers are complaining in our forums, which, unlike Apple, we do not censor for complaints.  But, you can’t please everyone; when we fix bugs, customers complain that we’re not adding new features.

Since our tests prevent our bugs from hampering our development process, we have the choice to ignore them indefinitely. It then becomes a product management level decision whether to fix a given bug, rather than a required engineering-level task. You may think we’re making the wrong decision, but understand that you’re disagreeing with product level decisions, not with the decision to use continuous integration.  Those product level decisions might seem stupid to you, but those guys are using some pretty sophisticated data-driven decision making, and it’s working.

Passive Research

March 8, 2009

Passive research is a mind hack.  It’s a way of learning about a specific subject that requires almost no effort.  The downside is that it is very long-term.

When you read how to do it, your first instinct will be to scoff.  That’s fine.  Since it requires so little effort to try it, you can afford to do so no matter how small you expect the payoff to be.

Passively researching something is very similar to simply being interested in it.  Here’s the only thing you do differently: make a conscious decision to remember everything you hear relating to the subject.  Making that decision makes it easier to remember things; each time the subject comes up, you remember that you’re passively researching it, and automatically start indexing the things you hear with your other knowledge of the subject.

It’s best used to study subjects that for some reaosn aren’t easily researchable by normal means, especially taboo subjects, or for subjects that aren’t important enough to warrent the time investment of actually studying them.  It’s also appropriate for gathering information on a subject that has no consensus opinion, which forces you to perform your own, more nuanced opinion survey.  Examples include human sexuality, personal information about people you know, or political or religious zeitgeists.  Passive research will cause you to learn things that are not easily indexed online or in libraries; expert and less-than-expert opinions and testemonials from people who would not catalog the information in question.

Programming Means Text Editors

March 7, 2009

In the beginning, there was no difference between using a computer and programming.  That was the only way they worked; you created a program with punchcards or whatever, and the computer ran it. Well, not you.  Your dad maybe.

Then some history occurred, and you could use a computer without writing your own programs for it or even knowing how.  And then some more stuff happened, but using a computer was sometimes similar to programming still.  This was during the era of interactive prompts, like on the Apple II computers or in DOS sort of.  You’d type commands and the computer would run them, and sometimes you’d save a lot of commands and the computer would run all of them in a row, and you could save them for later.

Then people started writing fancy UIs for computers, and those caught on, and computer use spread.  But now using a computer is really totally different from programming one again.  I know there are higher level scripting languages, but there’s still a pretty thick border between writing code and running applications.

So why hasn’t programming kept up?  If we can make a simple, “intuitive” UI layer for our operating systems, why don’t we have simple, intuitive UIs for programming?  Why is does every programmer still use text editor, however fancy?

I really don’t know what a textless-UI development environment would look like or how it would work.  I guess it would be similar to visual basic or MFC or whatever the current generation of that stuff is, but those have always forced you to know syntax for an actual language, and write some text yourself.  Seems like WYSIWYG programming is right out, not even really making sense, but there’s got to be some middle ground.

Almost Everybody is Stupid

March 6, 2009

If there’s one thing that almost everybody agrees on, it’s that almost everybody else is dumb.  You know what I mean.  You’re much smarter than average, right?  Well, everyone thinks so, for one of two reasons.

  1. You’re smarter than almost everyone else
  2. You’re wrong

You and I fall into the first category, of course, but all the dumb people think they’re there too.  How can you really tell which you’re in?  Or, to be more precise, under what circumstances can someone be wrong about their own aptitude? The answer “because he’s an idiot” does not suffice; it’s circular logic.

A person whose self-opinion is wrong doesn’t have to be stupid; rather, his defining characteristic is that his feedback loop is broken.  For some reason, either nobody tells him when he’s being an idiot, or he ignores people when they do.  He’s convinced himself that everyone else is crazy, or that they simply don’t appreciate his genius, or maybe he only talks to people who already agree with him.

What does that mean for you?  Besides meaning that you can’t attribute peoples’ meta-stupidity to their stupidity, it means you can’t assume that people are stupid for disagreeing with you.  You throw away your own feedback loop when you do that.  You have to expose yourself to the ideas of people whom you currently believe to be wrong or stupid, and you have to honestly try to prove yourself wrong.

“Know your enemy,” we say, but I submit that the true purpose of this is not to better defeat him; it’s to make sure you’re on the right team.  You don’t have to take Anne Coulter seriously, but you do have to figure out why some people do.