The C standard committee effort to kill C continues


Consider the following code: void f(void) { unsigned char x[1]; /* intentionally uninitialized */ x[0] ^= x[0]; printf("%d\n", x[0]); printf("%d\n", x[0]); return; } In this example, the unsigned char array x is intentionally uninitialized but cannot contain a trap representation because it has a character type. Consequently, the value is both indeterminate and an…

Types considered harmful


Russell introduced what is often viewed as his most original contribution to mathematical logic: his theory of types—which in essence tries to distinguish between sets, sets of sets, etc. by considering them to be of different “types”, and then restricts how they can be combined. I must say that I…

Basic math for basic algorithms


It's odd that all the descriptions of basic programming operations, such as sorting, rely on pseudo code or complex formal logic. All we are doing is modifying finite sequences so it seems like we should be able to use ordinary algebra. I'm going to start by defi ning basic operations on…

Current reading


Wadler's influential "monads" paper for Haskell. It seems like a classic case of making something simple sound profound and mysterious.  And companion paper by Hughes on "why functional programming matters" . See also some comments above. McCarthy's original LISP paper.  Just terrible. He made a serious error picking Lambda calculus as…

Chang-Maxemchuk atomic broadcast


The Chang-Maxemchuk algorithm (US Patent 4,725,834 ) solves atomic broadcast (and in-order broadcast) problems for distributed networks in a far simpler and more efficient way than some popular alternatives. In fact, the obscurity of this method is hard to understand given the current interest in distributed consensus. The basic idea is simple…

Time out of joint


Financial trading venues and trading systems operate so quickly and rely on clocks so deeply that events like the one noted in this FINRA report are more common than many understand The findings stated that the firm transmitted to OATS New Order Reports and related subsequent reports where the timestamp…

Data base design criteria: ease of use


Regarding ease-of-use, it’s often struck me when reviewing data systems papers that the evaluation sections are full of performance and correctness criteria, but only rarely is there any discussion of how well a system helps its target users achieve their goals: how easy is it to build, maintain, and debug…