Developers have only themselves to blame. Perhaps we had justifiable cause. Perhaps it was the pressure of the release deadline. Or perhaps we just did not care for that tester who demanded the support of dingbats in his widget. But whatever the reason, we seem to have used “works as designed” one too many times as the reason for the “won’t fix” resolution on a defect entry. Now the phrase “works as designed” has been meme-ified as an ironic denigration of system behavior that falls short.
As a result, today I find myself expressionless. My colleague walks into my office to discuss a paper on “Information theoretical similarity measure for change detection” by some researchers at the IMF and EC. I mention this not because it is particularly relevant, but I thought it might make me sound smarter. (This is a rhetorical device sometimes used in my blog posts, of which this is the first, that I refer to as a Stein-ism). My colleague wants to do some experimentation but requires, among other things, a joint frequency distribution and asks if I know of any programmatic tools available to create one.
I think on it a bit. “Well, we don’t have any functions that will do that”, I say, “but theoretically you could use the Spatial Modeler to quickly simulate that”. In fact, there are probably five different ways to do that with the Spatial Modeler, I’m thinking. But every developer I know is intimately familiar with the Yogism that states that “Theoretically, there is no difference between theory and practice. In practice there is.” None-the-less, I proceeded with confidence. “Just use an expression to combine the pixel values of the two images with different dates into a single pixel value and the histogram of the resulting output image will be the representation of the joint frequency distribution.”
I plop down a few operators and set a few parameters…
…fill in a simple expression…
…click Run and in a matter of minutes, we have what he’s looking for….
…at which point I begin to triumphantly declare, “See, it works exactly as…” and then I stop short. “Newman!”, I mutter under my breath.