My ol' Why Not Mozilla? page recently wandered onto programming.reddit.com, though I wouldn't go clicking through for the comments.
Some specific criticisms are out of date, but the gist still seems true.
On the off chance any Mozilla people ever read this, the feedback has uniformly been positive about the piece. If any of you still harbor delusions of platform-ness, it's not going to happen. The developer community has been burned.
Programming
On Values
When we make a judgment, we are saying that one thing has a larger value than another. We have a value function in our brains that takes two arguments and returns whether the first is less than, equal to, or greater than the other. As cruel or as crazy as it may sound, that function can take any two things and compare them; we have to make decisions like Value(CoolJob, CloseToFamily) all the time.
What Is Programming?
What is programming?
When you first start programming, the answer is painfully obvious: Programming is making the computer do what you want.
Duh, right?
However, if you have any aptitude for it at all, you will rapidly get to the point where making the computer do what you want really isn't that hard. Oh, you may be betrayed by your environment, your libraries, even your hardware sometimes, and you never get to the point where you are immune to the multi-day debugging sessions, but in general, getting the computer to do what you want ceases to be a challenge.
Judging Tradeoffs
The core point of the entire Programming Wisdom blogbook.
Higher Level Tradeoffs
Expanding the points made in Compression and Compression in Languages up to the Methodology level, and beyond.
Language Design Tradeoffs
Wherein the point I was setting up in Compression is made.
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.