-
Current reading August 2017
Two-way string matching And an implementation in Musl. The C standard post C11 The Rube-Goldberg approach to fault tolerance in NTPd which is not worse than PTP fault tolerance but a lot worse than what is done in TimeKeeper. Interesting but naive article about bank accounting and credit/money creation. Meanwhile:
-
James Damore’s defenders (updated)

(recently saw a post claiming that Damore’s firing was an indication of closed minds at Google, so it seemed important to repost this – vy) The Google manifesto is a crackpot political argument combined with basic scientific ignorance, not a scientific argument. The people claiming otherwise are either lying or terrible at reading. Damore’s essay is…
-
Google Manifesto shows that many programmers are bad at logic
Everyone can recognize some kinds of spurious reasoning – like the following: (A) Most programmers are not great. (B) Google tries to hire only excellent programmers (C) A implies B is hopeless and counterproductive and demoralizing Clearly, step (C) is nonsense – employers are not required to randomly hire and the distribution may make the…
-
C compiler developers are hostile to C programming
From the LLVM developer mailing list this remarkable exchange in which Chris Lattner of LLVM says that the compiler use of undefined behavior (UB) is so “crappy” that the only solution is to abandon C programming (my bold). On Jul 7, 2017, at 1:40 PM, Peter Lawrence <peterl95124 at sbcglobal.net> wrote: > Chris, > The…
-
Current reading: July 8 2017
Principal type-schemes for functional programs∗ Luis Damas† and Robin Milner First published in POPL ’82: Proceedings of the 9th ACM SIGPLAN-SIGACT symposium on Principles of programming languages, ACM, pp. 207–212 THE PRINCIPAL TYPE-SCHEME OF AN OBJECT IN COMBINATORY LOGIC BY R. HINDLEY Quicksort. Tiny C – sheer genius! Plan B C 89 Mifid II Rust…
-
The C standard versus C and the mother of all hacks.
The Kafkaesque interaction of the C standard and the main open source C compilers was concisely outlined by one of the main LLVM authors back in 2011: “knowing that INT_MAX+1 is undefined allows optimizing X+1 > X to “true”. Knowing the multiplication “cannot” overflow (because doing so would be undefined) allows optimizing X*2/2 to X…
-
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 unspecified value. The bitwise exclusive…
-
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 defining basic operations on finite sequences and then look…

