Michael Jackson on Optimization

Michael Jackson on Optimization: Don't. Don't Yet (for experts only). Donald Knuth in Structured Programming with Goto Statements: Programmers waste enormous amounts of time thinking about, or worrying about, the speed of noncritical parts of their programs, and these attempts at efficiency actually have a strong negative impact when debugging and maintenance are considered. We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil.
Read more →

Interface Versioning

Read more →

How recursion got into programming: a comedy of errors

Hat tip to the O'Reilly Programming Newsletter for this one. How recursion got into programming: a comedy of errors by Maarten van Emden By now it is difficult to imagine that once there was a time when the utility, and even the possibility, of recursion in programming was in doubt. Yet that was true of the programming community around 1960. Even the committee that was to create Algol 60 was divided on the issue.
Read more →

Be as Vulnerable as Possible to Internal Errors

I've been reading ZeroMQ: Messaging For Many Applications. Even if you don't care about ZeroMQ itself, you should read this book. It has some of the most personality that I've ever seen in a technical book, filled with challenging ideas presented in a humorous way. I ran across a great quote regarding error handling. ØMQ’s error handling philosophy is a mix of fail fast and resilience. Processes, we believe, should be as vulnerable as possible to internal errors, and as robust as possible against external attacks and errors.
Read more →

A Critique of the Remote Procedure Call Paradigm

I have long disliked RPC, especially since I built a very messy XML-RPC/PHP system many years ago. This paper would have helped me out immensely. A Critique of the Remote Procedure Call Paradigm by Andrew S. Tanenbaum and Robbert van Renesse We propose the following test for a general-purpose RPC system. Imagine that two programmers are working on a project. Programmer 1 is writing the main program. Programmer 2 is writing a collection of procedures to be called by the main program.
Read more →