Programmer brainfood, part 2
Friday, February 6th, 2009Here is another set of articles with which to feed your brain. This time around the main focus of my article-scrounging is history and conduct, although a few general programming articles are still there. History is especially important for programmers to understand because it gives us a basis for why things are the way they are today. Last time, I focused on dynamic programming languages (programmer brainfood, part 1).
We all disagree on things. Sometimes we get carried away, or don’t exactly know how to disagree. This article by Paul Graham is a great overview of the argument pyramid, and a great set of guidelines for your next argument!
Although this article is focused on Python 3.0, the introduction is very insightful and applicable to many areas of life, programming included. (And if you’re interested in Python, go ahead and read the rest as well.) I had always agreed with the lesson of the introduction in some way or another, but reading it there really put things into perspective for me: reasons are important.
Execution in the Kingdom of Nouns
Another long one by Steve Yegge. This time he’s focusing on “noun oriented programming” (which some also affectionately call “object obsessed programming”).
Things You Should Never Do, Part 1
Joel Spolsky talks about a big mistake that a lot of people have made, and I’m no exception: throwing away code. “It’s important to remember that when you start from scratch there is absolutely no reason to believe that you are going to do a better job than you did the first time.”
“There is another group of people who loudly call themselves hackers, but aren’t. These are people (mainly adolescent males) who get a kick out of breaking into computers and phreaking the phone system. Real hackers call these people ‘crackers’ and want nothing to do with them.” Eric S. Raymond, long-time Unix hacker and author, presents an article and FAQ about (real) hacker culture.
The Art of Unix Programming: Chapter 1, Philosophy
Although it’s worthwhile to read the entire chapter, the focal point here is the list of rules that support the Unix philosophy. It’s filled with software design wisdom. Some of my favorites are “separate policy from mechanism” and (paraphrasing) “a programmer’s time is expensive; a machine’s time is not.”
The Art of Unix Programming: Chapter 2, History
Even if you have never used a Unix descendant, such as Linux or BSD, it has such a rich history that it is worth knowing. The birth of the Internet, the C programming language, and the Open Source Movement are all closely related to Unix. (The book is also available as a pdf.)

) and may take a while to read through, but it’s still enjoyable.