A programming error allowed a massive theft of virtual currency. The best things about this article are 1) if you’re a programmer of any dynamic language (JS, Ruby, Obj-C, Perl, etc) then it’s easy to understand the bug; 2) the author makes a great analogy between blockchain programming (smart contracts) and 1990s shrinkwrap software: both need to work right the first time because you rarely get the chance to ship an update.
h/t Marc MERLIN