Programming

Compression

Below the fold, a discussion about compression, using this as a clear example of a principle I intend to relate to other programming principles, and indeed engineering principles in general.

The unifying principle of this book is: Everything costs something. Everything worth talking about has benefits. Nothing is free; nothing has infinite value. This sounds very simple and unobjectionable, but experience shows people have a hard time putting it into practice and realizing how pervasive the principle is.

Threading is Useless

I wanted to file this away in my blog where I can find it easily in the future: The Problem with Threads, a rather sedate name for an article that end up calling them insane.... and pretty much meaning it wholeheartedly. I think in coming years this will come to be considered one of the seminal papers in software engineering, if it isn't already. The topic has been covered before, elsewhere, but I don't know of any other single work that demolishes threads as thoroughly and undeniably as this.

The programmer certification debate seems never ending and I usually never like the arguments in favor of it... but I could totally get behind this certification, a certification largely based on testing and quality control, with some other related concepts. Like the author, I probably couldn't immediately pass either, but I've gotten far enough to know how important it is.

IM IN YR LOOP, INCRMENTNG YR VRS (OK, as a bone to my non-programming readers, consider the natural evolution of pet pictures on the web. It actually seems to have a consistent, emergent grammar. It doesn't meet the technical requirements of a Pidgin language, but it bears a certain resemblance; call it a faked pidgin. Gaim (open source IM client) recently renamed itself to Pidgin, and despite using a pigeon as a logo, pidgin is where the name came from.

Programming is not Uniquely Unique

I want to be clear about my purpose here. My point is not to claim that the uniqueness of programming is itself unique. Every interesting field is unique in its own special way. For each field, it is helpful to understand why it is unique if you wish to truly excel, or you may bring inappropriate concepts from other domains in, or export inappropriate programming concepts to other domains. I say that programming has several unique aspects and that these aspects are worth thinking about, but this does not mean that programming is privileged somehow.

[Cheap] Good Practice is Unusually Hard to Create

The most common complaint about software is that it is "too buggy". The question is, "What does too buggy mean?" People making this complaint are often holding software to absurdly high standards, even when making comparisions to other engineering disciplines. In fact, bridges do fall down. Architects fail; often the designs can be seen to fail and corrected or maintained before catastrophic collapse, but it happens. Software is no more likely to be absolutely perfect than any other human endeavor.

Software is an engineering concern, and one of the things that means is that you can't have anything for free. If faced with the choice between a $100 piece of buggy or incomplete software, and a $50,000 piece of production-quality bullet-proof highly-tested quality software, it's unfair to complain that the $100 piece of software is buggy and incomplete.