Paying if you will

Gina is reading Dickens again. David Copperfield, this time. Dickens is one of her favorite authors. The difficulty that arises when Gina is reading Dickens, is that every 15 minutes or so she bursts out in peals of laughter, or exclaims “Just so!” and says “R0ml, you have to hear this.” Sometimes it’s hard to write code when Dickens is in the house.

Here’s the one that made me pause.

In case your Dickens is as rusty as mine, here’s what’s happening: Miss Trotwood wants to send David to school in Canterbury, but he can’t board at the school, and she doesn’t approve of any of the nearby boarding houses. Her lawyer, Mr. Wickfield, offers to take him in. She demurs. Until:

“Come! I know what you mean,” cried Mr. Wickfield. “You shall not be oppressed by the receipt of favours, Miss Trotwood. You may pay for him, if you like. We won’t be hard about terms, but you shall pay if you will.”

Which, of course, made me think about both the Internet and Open Source.

I guess both the Internet and Open Source software would have fared better if Victorian sensibilities had survived. Imagine Miss Trotwood being offered capable software for free. Imagine Miss Trotwood being offered the use of an online service for free. Obviously she would demur. What kind of person would willingly allow themselves to be oppressed by the receipt of favours? Certainly, no respectable person. No, a respectable person would will to pay. There’s no need for the provider to be hard about terms.

The more I thought about this, the more I realized that, in fact, one of the (very few) things that Gina and I have in common, is our nineteenth century sensibility — mine deriving more from Conan Doyle than Dickens (which makes me a trifle more modern). And the more I thought about it, the more I realized that I was, in fact, feeling oppressed by the receipt of all those favours. Last year, I began to prefer purchased software over gratis software. This year, my project will be to choose paid websites over free ones.

I resolved to cancel existing accounts for free services. As I came across things that were too useful to cancel, I would see if there was a way to pay for them, or to find alternatives where I could “pay if I will”.

The initial attempts have been … interesting. And thereby hangs a tale for another time.



I’ve been writing code lately. Makes me feel young, again. Unfortunately, something terrible happened.

For some reason (and thereby hangs a tale), I decided to write the application in Brazillian Portuguese. You know, localized for pt-BR only.

Based on my Smalltalk days, I decided to write the “Check for Updates” code first. (A Smalltalk programmer would write a one line app that did nothing, and then change it until it did what they wanted. If they had to quit and restart just because they had changed something, they lost a point. I guess thereby hangs another tale). I figured the modern equivalent was to release an app that didn’t do anything except automatically check for updates and update itself. Then, one could release, and add functionality as needed — losing a point, of course, every time somebody needed to re-install manually. But, I digress

So, obviously, the first method (I’m using Cocoa on a Mac) I needed to write was buscaAtualização. That’s Portuguese for “fetchUpdate”.

That’s not a valid identifier name in Objective-C. Or more precisely, it might theoretically be a valid name, but gcc doesn’t implement universal character names.

Programming languages, it turns out, aren’t localizable. Or localized. If you want to write something in a computer language, you need to write English. I should have suspected something the minute I launched XCode. The menubar had a File (instead of Arquivo) menu. Development tools don’t seem to be localized either. Not much point, really, since you’d have to write in English anyway.

Even if I could have named my method buscaAtualização, what is the Portuguese localization of [[NSURLConnection alloc] initWithRequest: aRequest delegate: self ]? Well, it turns out that all the library and framework classes, methods, functions, variables, macros, etc. are in English. And none of it is localized.

Even something as ancient as strerror(3) returns the POSIX error messages in English. No localized Portuguese error messages here.

This is terrible. I’ve been such a great fan of Literate Programming for so many years — it never occurred to me that for most of the world, even literate programs must necessarily be written in a foreign language.

Even as modern a language as Haskell wouldn’t accept buscaAtualização as a valid identifier.

This is awful. We’re much farther from using programming languages as a form of communication than I had thought. I’ll need some time to digest the implications.

Does anybody have any suggestions on how to write a program in Portuguese?

Decanting Breakfast Cereal

Yes, we do.

Here’s what it looks like:

Three different kinds of cereals. In their decanters.

Yup, that’s part of putting the groceries away. Milk on the refrigerator shelf. Bread in the bread-box. Bananas on the banana hammock.

And cereals, of course, decanted. And the empty boxes discarded.

It seems that most people don’t decant their cereals, so we sometimes get asked why we do.

The answer is: For the same reason we don’t get broadcast or cable TV; to shield us from advertising. There’s too much advertising on a cereal box.

Some people object to unsolicited messages in their e-mail, and resort to counter-measures to minimize that nuisance. Some object to pop-up ads in their browser, and resort to counter-measures to minimize *that* nuisance. We do those things. But there are also unsolicited commercial messages broadcast on television, and printed on cereal boxes. We take counter-measures against those, too.

Kim's teeth

Gina used to have a recurring dream where her teeth would crumble in her mouth and fall out. Apparently, this is a common dream. Her mother used to have the same dream. And, shortly after Kayla went away to college, she called home to say that she had the teeth-falling-out dream, too.

A few weeks after that, Kim called home. She had never had the teeth-falling-out dream. However, she was sitting in class, and her teeth actually crumbled and fell out. Well, not all of them. Just two of them. And they weren’t teeth. They were caps. Nevertheless, if felt like her teeth disintegrated in her mouth, and the pieces came out.

Our dentist is Mark Dunayer He’s awesome. I always use Dr. Dunayer as the quintessential example of excellence in any field. When we run out of medical reasons to go to the dentist, we occasionally opt for some cosmetic dentistry, just because the experience is so satisfying. If you don’t look forward to a dental appointment, you owe it to youself to schedule some elective dentistry the next time you’re in the New York metro area. But I digress.

We were of course, surprised that Kim’s teeth had come undone. “Don’t worry,” we told her. “Dr. D will put things right.” And, of course, he did.

But this post isn’t about dentistry, it’s about Open Source business models. As with software, you could view dentistry as a service business or a product business. You could think of it as buying a filling, which comes with free installation — or getting a free filling, and paying a service charge for the installation. Or some combination of both. In any case, if the filling falls out in a few weeks, it’ll probably be replaced for free. Three years later, if it needs work, it’s more like upgrading to a new version than “supporting” the old.

How would dentistry work if it had to use an Open Source business model? Well, the fillings or crowns would need to be free. We’d have the option of installing them ourselves — although dentists would sell installation support. And they would also sell “support contracts” for preventive dentistry — cleanings and the like, as well as “bug fixes” — crumbling teeth. Perhaps the amount of money involved would be the same in either case.

So I consider the options. On the one hand, the original dental appliances are free, and I’m paying for a “support contract” in case I need help. On the other hand, I’m paying up front for a “license” to the crown and expecting some kind of implied warranty, for fitness or merchandisability, as the EULA would have it. The difficulty with Open Source dentistry is convincing the market that charging for “maintenance” and giving away the dental supplies doesn’t create a perverse incentive to do shoddy work. Things go wrong with dental work — even the best. It would definitely make sense to buy support contracts for free (excellent) dental work.

How different is the software business and dentistry? Would we be as comfortable paying for support for free dentistry as we are for free software? And then there’s the “free-as-in-freedom” issue. Aren’t there laws preventing anybody from practicing dentistry? Wouldn’t “free-as-in-freedom” dentistry need to abolish such restrictive practices? Or do we think software licenses are bad but dentists should be licensed? Perhaps the software and dental equipment shouldn’t have licenses, but the programmers and dentists should be licensed? Why would we license dentists if we don’t license programmers? And there’s still the “free-as-in-beer” aspect. Now that we’ve convinced ourselves that free software isn’t socialism, I guess it implies that free dentistry wouldn’t be socialism either. Or would it?

I’m confused. But I do know this: if your software fails, you can still chew your food.

Farmer, Farmer, Let Me Down

Over the last few months, I’ve been struggling to understand the “Attention Economy”. Gina explained it to me the other day.

There’s a children’s game called “Farmer, Farmer, Let Me Down.” I had never heard of this game. I “googled” for it, and found nothing. Gina, I should note, lives in a world that is often undetectable by electronic means. That’s why the perspectives she offers are so valuable. To borrow terminology from Zelazny’s Amber series, she doesn’t walk in Shadow, where you and I live.

Anyway, back to “Farmer, Farmer, Let Me Down.” It is played on a see-saw. Rather than just oscillate up and down, the game proceeds by turns. One child is raised into the air. They stop. The child in the air then yells out: “Farmer, farmer, let me down”. The child on the ground end of the see-saw yells back: “What will you give me?”. Then the child in the air offers some farm implements or livestock. As an example: “I’ll give you two cows and a chicken.” At this point, the other child can “let him down”, thus rising into the air himself, and the roles are reversed. Or, the child on the ground can say: “Not enough.” In which case the child in the air needs to sweeten or change the offer. “I’ll give you a plow and a sack of corn”. I should point out that the items do not actually have to exist, nor does any actual physical barter occur. All that is happening is that the airborne child is attempting to intrigue (capture the attention of) the earthbound child. Play proceeds until recess is over. Or until boredom or exhaustion set in.

The “Attention Economy” happens when an entrepreneur decides that she can increase sales of farm equipment and supplies by analyzing video tapes of “Farmer, farmer, let me down” and generating targeted marketing at specific individuals based on their FFLMD preferences — i.e. which items are more readily offered, and which items are more likely to result in being accepted for “letting me down”. Armed with this business plan, the entrepreneur raises venture capital and builds free playgrounds equipped with see-saws and video cameras. The marketing literature to drive playground traffic emphasizes the added safety of continuous playground monitoring.

I get it, now.

Thank you, Spike

My children play a game called “Jinx”. In this game, if two people say the same thing at the same time, then the first person to call out “Jinx!” renders the other one mute. The “jinxed” party can no longer speak until someone says their name out loud.

The other day, as I was driving home with the two little ones in the back seat, they both said the same thing at the same time — and then they both yelled “Jinx!” simultaneously. It turns out that if the “jinxing” is simultaneous, then both parties are struck dumb. This presented the children with a dilemma, as now, the only person who could restore their power of speech was I. So they began furiously to attempt to capture my attention to let me know that they needed me to say their names out loud. They banged on the windows, scratched on the ceiling, rattled papers, wrote notes and waved them around. All the while laughing uproariously as I absentmindedly failed to notice their signals. This lasted about 15 or 20 minutes. Eventually, the cacophony grew so loud that I had to break down and say their names. As they were once more possessed of the power of speech, the din subsided.

The next day, Gina and I took these same children into the City, and as luck would have it, they “double-jinxed” each other again. “Well,” said Gina, “at least we’ll have some peace and quiet on the ride.” I explained to her my experience of the previous day, and advised her that just because the children were mute, did not mean that we would be enjoying peace and quiet. For about 30 seconds, there was indeed quiet in the car. And then, from the back seat, we heard John’s five-year-old voice distinctly say: “Thank you, Spike.”

Spike, you see, is John’s imaginary friend. And by “Thank you, Spike”, John was signaling that Spike had said his (John’s) name out loud (imaginarily), thus freeing him from the jinx. ( I’m thinking John is going to be a lawyer. Or maybe an arbitrageur. )

And so it is with blogging. Sometimes, one gets “jinxed” — struck dumb, as it were, by mysterious forces. How to regain one’s voice following such an incident?


And think.

And imagine oneself blogging again.

Thank you, Spike.