Older blog entries for apenwarr (starting at number 134)

Unraveling at the Fringe

Several people have posted reviews of some Fringe Festival shows they've seen, along with their ratings. For me, though, the purpose of the fringe festival isn't so much to see or measure quality entertainment. After all, as I've mentioned, as far as art is concerned, I have no idea what I'm doing and thus it's easier for me to appreciate.

No, the purpose is to gather another year's worth of random input. So without further ado, I bring you: 40 tidbits of randomness, in alphabetical order by show name. (Yes, I have a leaning toward puns. So shoot me.)

Needlephobic spasms. No, no, his house - the Hur house; it's enough to turn gay men straight.

Wah - I love pizza - but I Kant!

People never to break up with; people never to buy dinosaur souvenirs from.

Airport jokes and flamenco made interesting; human relationships the MIT way.

Eat here - get gas for free! Dancing in the rain and the worst audition ever.

Brain sucking ingenious crazy dance! Anorexia personified, and at least one continuously improvised dance scene!

Dinosaurs aren't souvenirs, they're EOLed products. White clothes make great projection screens! Breakdance fusion!

Queuing was stolen from the British; also, There was a young man from Peru, whose limerick stopped at line two. Non-lost innocence and a squirt of toilet humour. Non-toilet-related private moments made public and an encounter with Sweden's orb of literacy.

Speaking in tongues, the musical. Verbal smilies!

The missing minute from my life.

You can't escape a guilty conscience... and eventually, your creations will take on a life of their own (ergh, tell me about it).

Nunavut -- twice. Dames in disdress, vs. a very different form of fake but extremely convincing shyness.

Always have a lawyer look over your contracts, particularly if you make them with the devil. Speaking of which: Stephen Harper and David Suzuki, together at last, along with Terry Fox's right sock.

Octopus dance (I wish I'd had a fork). Vegetable dance (enough to make you dizzy).

Learning English from Entertainment Tonight and a wishing well talks back to cheapskates. Criminals are people too.

Honourable mention, even though it was free and thus doesn't count: 11-second dance parties, 16-second slowdance parties (thanks, Cheer Politeness), 22-second dance parties, and so on. To heck with the popular kids! To heck with respectable theatre!

Peer pressure and mutual motivation

And now for the obligatory Advogato tie-in.

Last year at the Fringe Festival, I saw 26 shows in 10 days, and it was exhausting. When I set out this year, I decided: no sense overdoing it. I'm not going to try to beat last year's insane record. I'll just see as many shows as I want to see, then I'll stop.

So then I saw 40 shows. Oops. What happened?

What happened was peer pressure. None of us really wanted to see that many shows. But when you have a few people working together and encouraging each other, the positive feedback loop can be irresistable. "Come on, you can't be tired yet! I want to see one more!" "Come on, there's a show on - let's leave work early!" "Come on, you already bought the multi-ticket pass, so you might as well use it up!"

I learned a couple of years ago now that you should never let a person work on a project at work alone; it's hard for someone to get motivated that way. This is the idea behind pair programming, but you don't have to go that far; two people can work on parts of the same project, as long as their work is slightly mutually dependent - say, at least one reason to rely on the other person per day. Then if one person falls behind, they're disappointing the other person, and vice versa. This mutual motivation technique can be extremely effective, and it vastly outweighs the cost of having a second person working on the project, because it'll probably get done more than twice as fast.

So now, thanks to all that motivation, I feel like I've accomplished something. It turned out to be something ill-conceived and stupid; who the heck needs to see 40 shows in 10 days?? But I guess that's my point. Motivational techniques work, even if you're trying to get people to do ill-conceived, stupid things.

12 Jun 2006 (updated 12 Jun 2006 at 20:34 UTC) »
Independent thought

    The purpose of a designer is to make happy coincidences happen more frequently.
    -- me

Someone else's independent thought

    So, what benefit am I taking from all the freedoms I have because I am not a duck? ... That's the sort of question you should expect poets to be asking on your behalf.
    -- Jem Rolls
Trying and Being

    Do or do not. There is no "try."
    -- Yoda

The thing I find most interesting thing about yoga classes is the difference between how it feels when you're clueless (like me, usually) and when you know what you're doing (which I do in a few rare cases). When you're clueless, every position is a struggle, and it's really hard to maintain it for more than a few seconds. But when you actually figure out how to do one of the stretches properly, it becomes easy all of a sudden, and it doesn't feel like a stretch at all.

Sadly, none of the instructors have actually brought this up in class. You seem to be left to figure it out by yourself. But once you realize it's true, you stop trying to stretch yourself into a particular position, and you spend more time trying to figure out the trick of getting into that position properly. It's much more productive.

The rest of the world works like that too. And there are various philosophies that suggest that if you're truly enlightened, you can find the right place to stand and the world will revolve around you, working out just like you want.

But there's a catch. As much as it would be nice to be enlightened and just let things be the way you want, if you're not quite so enlightened, all that will accomplish is randomness or stagnation (depending where you land). In yoga class, you have to attain a certain degree of flexibility before you can even really start - and that takes solid effort. Once you get that far, you have to figure out how to do the different positions properly - and that takes effort too, albeit of a different kind. And the further you progress, the more convoluted it becomes.

And yes, I can tie this back to programming. I'm glad you asked.

I did a presentation at work a couple of years ago called "Coding Faster." In it I described the well-known concept of being in "The Zone" and also the opposite, which I called "Ooze." Most programmers aim to spend as much time as possible in the zone, but that's not quite right; the zone is being. You know what you want, and you know how to do it, and really: you get into the zone and it just happens by itself. (If you're a programmer and that's not how it feels for you, then you're doing it wrong. Trust me on this.)

The part people miss, though, is the ooze time leading up to the zone. It takes a lot of hard work to understand the universe well enough to be able to be properly productive in the zone. Ooze time, although it's slow and feels unproductive, is critical to overall productivity. Ooze time is trying.

So I'm afraid I'm going to have to disagree with Yoda on this one. There is definitely a "try." Anyway, he was probably just telling Luke that to keep things simple for the early lessons. But I agree that "try" is really not the same thing as "do," which I think was his real point.

The Curse is Broken

109 days. So there.

I had to change a lot of things about myself and the company in order to break the curse, but the core is intact and finally it's self-consistent.

Albeit in a different way than I was expecting.

Traits and Roles

The distinction between "traits" and "roles" seems to be a popular topic in object-oriented design lately. Once you think about it, the distinction is obvious, but when you mix up the two, your programs are crap.

Being the Perl god is a role. Being a stubborn cuss is a trait. :-)
-- Larry Wall

The same distinction applies to designing companies as well. People are defined by their traits; what they do are their roles. I've been terrified in the last few days by the confusion between these two concepts: people who actually believe that your role defines who you are.

"You're in marketing now, why should I listen to you about how to design this?" WHAT?? After four years of working with you as an architect, it turns out that my architecture skills depend on my job description?

A sledgehammer is big and powerful. Someone with excellent sledgehammer skills can use that sledgehammer to great effect. But if the role is swatting flies, the sledgehammer is just not going to work. Meanwhile, even an idiot can use a flyswatter to swat flies.

Traits aren't the same as roles. Your traits very much determine your effectiveness at a role. But yeesh, changing your role doesn't change your traits! How could it?

Architecture is Strategy

Someday I hope to be immortalized for my meaningless wise-seeming quotes, in the same way as "The network is the computer" or "The medium is the message" or "The chicken is the egg."

And so I bring you: the architecture is the strategy.

At the risk of explaining myself and therefore seeming less wise and inscrutable, what I mean is: the strategy of a company is its long-term goals. With every little short-term decision, you need to be thinking of how it will move you one step toward your long-term goal. Most short-term decisions that seem beneficial won't get you where you want to go; they'll just keep you alive. The magic of a good strategy is that it takes not much more work in the short term, but you actually get somewhere in the long term.

It's the same with software architecture. Sometimes you make a decision to implement something one way instead of another because you know that you're going to be better off in the long term. "Sure, I could just use global variables for everything and would save me some time today. But none of my functions would be reusable later." But what if you have no long-term plan? If you're a consultant, for example, developing precisely whatever someone pays you develop on each contract, there's no pattern to the work, and your short term gain is your only gain. This can be profitable, but you'll never get anywhere but where you already are.

Some people refuse to think beyond the scope of their current project; some people, even beyond the scope of the current phase of their current project. Those people don't understand strategy and don't want to; they'll work for someone else's strategy, if you pay them, because they don't particularly care where they end up in the long term. People like that make good workers, but terrible architects. Because if you don't understand the strategy, you don't understand how the work you do today is torpedoing the work you'll need to do tomorrow.

This also explains why business non-strategists don't see the value of software architects. It doesn't fit into their world view. If we can do our work today, and we don't know what's coming tomorrow, what good could a different architecture do?

21 May 2006 (updated 21 May 2006 at 18:28 UTC) »
Zen, Betty Crocker, and End-to-End Testing

I don't know if this story is true or not, but I heard it somewhere and it makes a point, so here we go.

A maker of cake mixes was investigating two cake mix designs. One, their traditional recipe, included powdered egg in the mix, and a new one required the end users to add their own eggs. Chemically, the result was about the same, but a competitor's "add your own eggs" mix was starting to gain market share over their existing all-in-one product. They decided to do some market research to find out why.

They conducted a taste test in a statistically valid fashion, with double blinds, etc. Presented with two cakes side by side, tasters on average had no particular preference for one mix or the other; they tasted the same.

This was very nice, but didn't explain the problem: why would the new market entrant be getting so popular, then? They had less advertising, no name brand, and you had to add your own eggs!

They had an idea and decided to run another test: this time, the tasters had to also bake the cake themselves, and they obviously knew which cake was made from which recipe (but were hidden from the brand name, packaging, etc). In this test, the tasters clearly preferred the cake where they had to add their own eggs.


They had more of an emotional investment in the egg-added cake; it contained "fresh ingredients" that they had to buy and add themselves. It took a tiny bit more work. They didn't feel like they were cheating as much when they made a mix that didn't have all the ingredients built in.

Ironically, we tend to believe that people buy cake mixes to save time and effort (ie. they're lazy); this makes the "add eggs" mix seem inferior. But what the researchers discovered was that people buy cake mixes not just to save time, but because they don't feel competent to add all the ingredients themselves (ie. they're scared). Making the end user do slightly more work makes them feel more productive and gives them more emotional involvement in the end product, without scaring them away with complexity. That's the first lesson.

The second lesson is about unit testing; the cake mix engineers were looking in the product specifications for why it wasn't selling, and constructed a perfect unit test to identify and help correct their assumed problem (if the eggs-included recipe had measured worse, they could have improved the recipe). But the test, while scientifically and statistically valid, included some hidden assumptions that also needed to be tested: that taste affects the desirability of the product; that less end-user effort is an improvement. The proper test to find the problem was closer to an "end-to-end" test: it included much more of the "cake mix consumption" process in the test, not just the part where you eat the cake.

And the third lesson is about the Zen of cake mixes and how capitalism has helped us get closer to it. Years ago, under adult supervision, I remember using cake mixes that didn't require you to add your own eggs; they were just fine. But how many mixes can you find nowadays that don't require eggs?

18 May 2006 (updated 18 May 2006 at 09:14 UTC) »
Negotiation Techniques

People have told me that the only way to win at negotiating is to "be willing to walk away."

So what happens if you've aligned everything perfectly to make your point logically unassailable, and you are willing to walk away? Perhaps you then realize: if you were really willing to walk away, then you didn't care about the outcome anyway.

If that's what it takes to win, then you have a pretty funny definition of winning.

That kind of negotiation is a "win-lose" negotiation: if you're trying to negotiate in a non-compromise way, then there is no "loser" from an exchange. There is only the "right" answer that makes both parties better off.

I think the best negotiations are the ones where everyone cares too much too walk away. That way everyone wins.

But if you're going to believe that, then beware the sort of person who is willing to walk away. They exist, and they'll eat you for lunch. And they won't even care.

The Bunny Exponential

Did I mention that we had 30 of them and they're 2 feet tall and have Nitix T-shirts? That's 60 linear feet of bunnies!

As we distributed the bunnies, it was very interesting watching us cross The Tipping Point as awareness of us (well, at least our tradeshow booth, and maybe our product) began to rise exponentially.

Also, all sexism aside, the bunny promotion would have been quite ineffective if there weren't a much higher percentage of women in the accounting software business than in normal IT. It was very obvious which gender was and was not bunny-focused. Not that this should be very surprising, I suppose, but it's interesting to note since women are of course badly under-targeted in technology marketing. That's probably a major reason why the gimmick was successful.

Gratuitous Misuse of Technology

Except in the US (where there is a person named Mr. Meese), Google Trends says mooses are more common than meese. This is of course very disappointing to me. In an incidental but Linux-related note, Finland is by far the most opinionated on the topic, with almost no searches for "meese" compared to "mooses."


I currently live in a miniature domed city with artificially increased oxygen content and humidity, tropical plants, and lots and lots of fountains and waterfalls. I like it.

The "bad" news is it's unlikely I'll actually see the outside of this little ecosphere (ie. the rest of Nashville) before it's time to go home. That means my opinion of Nashville will be 100% pure bias. But it does seem nice.


Today, my life is truly complete, for I have witnessed a pile of 30 stuffed Nitix bunnies, all about 10 times cuter (and cuddlier) than I ever imagined. I don't care anymore if this marketing gimmick works. *I* want them *all*. And I don't even really like stuffed animals.

Note to self: bring your camera next time you go to a conference, idiot.


You know you're doing something right when actual respectable people start wanting to deal with you. Today I helped an obviously really, really good technical trainer tune his 3.5 hour presentation (which people are paying to go see) about our product. And he asked some really good questions.

I remember a few years ago when I first saw the "SalesDance" video of people actually selling all this stuff me and dcoombs had made up, like Tunnel Vision and Double Vision and idb. It weirded me out, thinking I had screwed up, err, improved the lives of so many people. This is the same feeling again, because it's really a new phase: people we're not even paying are spreading this stuff around. And that means they really mean it.

It's an honour, really. It feels weird.


Tonight I found out that it's actually possible to discover, to your dismay, that things are even more like what you thought they were than you thought they were. And so the same solution is, of course, that much more necessary.


Montreal free museums day is Sunday, May 28. I have marked it in my calendar. Have you?

125 older entries...

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!