Daniel J. Bernstein advocates for Ruby?

It's not your typical advocacy piece for Ruby (in fact it's not about Ruby at all), but Daniel J. Bernstein has written a paper reflecting on the success of his qmail mail server, which has a security guarantee (in the form of a $500 bounty) that has gone unclaimed since March 1997, and which runs several prominent mail houses.

He notes several aspects of his development process and architectural decisions that contributed to qmail's success. Interestingly, many of his comments relate to his use of concepts in his C code that are usually associated with higher-level languages. Here he complains about C's dangerous handling of integers:

Another surprise for the programmer is that y can be much smaller than x after y = x + 1. This happens if x is the largest representable integer, typically 2^31 − 1; y will then be the smallest representable integer, typically −2^31.
...
Most programming environments are meta-engineered to make typical software easier to write. They should instead be meta-engineered to make incorrect software harder to write. An operation that is not exactly what I normally want should take more work to express than an operation that is exactly what I normally want.


Ruby does get many details like this right, and good object-oriented practices can help too. For example, I kept thinking of the Tiny Types pattern while reading this.

I'm reading this a bit at a time and still parsing what Bernstein's ideas mean to me, but the segments on spending some performance dollars to buy quality abstractions were refreshing to see from a developer who's met with measurable success.