Forgiveness, fear, understanding, and rubber chickens

Five completely unrelated posts. Well sorta. Damn I love software engineering….

Coding Horror: JavaScript and HTML: Forgiveness by Default:

…The lesson here, it seems to me, is that forgiveness by default is absolutely required for the kind of large-scale, worldwide adoption that the web enjoys.

The permissive, flexible tolerance designed into HTML and JavaScript is alien to programmers who grew up being regularly flagellated by their compiler for the tiniest of mistakes. Some of us were punished so much so that we actually started to like it. We point and laugh at the all the awful HTML and JavaScript on the web that barely functions. We scratch our heads and wonder why the browser can’t give us the punishment we so richly deserve for our terrible, terrible mistakes.

Even though programmers have learned to like draconian strictness, forgiveness by default is what works.

Shelley Powers: Accessibility, Microformats, and RDF as the Bezoar Stone:

…Here I was, tripping along on a well presented argument defining a tricky problem when, bammo: it could have been worse, it could have been RDF.

It’s as if RDF has become the bezoar stone of metadata–people invoke RDF to draw out all the evil.

“Ohmigod, an asteroid is going to hit the earth and we’re all going to die!”

“It could have been worse. It could have been RDF.”

“You’re right. Whew! I was really worried for a moment.”

Jim Waldo: Jini and OSGi, yet again :

…People would be amazed at how long this discussion has been going on. My first encounter with it happened just before we announced Jini to the world, and was an attempt to make sense of the two technologies with the group that was working on OGSi within Sun. The manager of that group was a guy by the name of Jonathan Schwartz (I wonder what ever became of him?), but the questions were the same that we are seeing now. Jini is a service architecture. OSGi is a service architecture. Both have ways of dealing with services written in Java. So why are their two?

This, of course, is a classic example of what I have called the Highlander Fallacy, which briefly stated is the principle that there can be only one. If any two technologies can be described using the same set of words, then there is no need for both of them, and only one will survive. I call this a fallacy because, to use a technical term, it is total crap. Certainly, there are cases where there are two technologies that are described using the same words where the two technologies actually do the same thing in the same context with the same requirements and the same restrictions. In such cases, having two may be one too many.

But far more often the two technologies are described using the same words because the English language (or any other that I know about) allows very different things to be described using the same terms. Descriptions, after all, have to elide a lot of the detail, and it is often in the detail that the distinctions are to be found. The shorter the description, the more detail is elided. A description like X is a service architecture is so short that almost all of the meaning is elided. There are going to be lots of different technologies that fit this description but that are different enough in the elided parts to make it worthwhile to know, and use, them all.

In fact, OSGi and Jini are service architectures built for completely different contexts. OSGi is a service architecture for services that are in the same address space. It allows you to build programs out of cooperating services. And for that sort of thing, it is pretty good.

Jini is a service architecture for distributed systems that are built out of services that are separated by a network.

James Shore: Continuous Integration on a Dollar a Day:

There’s an easier, cheaper way to do continuous integration than using a build server like CruiseControl. In fact, it’s so easy, you can start doing it right this second and stop feeling bad that IT hasn’t okay’d your request for a build server yet.

(The dirty little secret? What I’m about to tell you is better than using CruiseControl!)

the.codist: All I Need To Know To Be A Better Programmer I Learned In Kindergarten:

Programming is complicated stuff, but a lot of what makes a good programmer isn’t all that different from the earliest learning we did in school.

2 thoughts on “Forgiveness, fear, understanding, and rubber chickens

Comments are closed.