Great talk from Joe Armstrong on how they created Erlang, and how Programming community looked back in the days. Amazing, inspiring, worth watching:
The only reason coders’ computers work better than non-coders’ computers is coders know computers are schizophrenic little children with auto-immune diseases and we don’t beat them when they’re bad.
Every single paragraph is amazing. This one cracked me up:
“Double you tee eff?” you say, and start hunting for the problem.
You discover that one day, some idiot decided that since another idiot decided that 1/0 should equal infinity, they could just use that as a shorthand for “Infinity” when simplifying their code.
Then a non-idiot rightly decided that this was idiotic, which is what the original idiot should have decided, but since he didn’t, the non-idiot decided to be a dick and make this a failing error in his new compiler.
Then he decided he wasn’t going to tell anyone that this was an error, because he’s a dick, and now all your snowflakes are urine and you can’t even find the cat.
Yet another interpretation of “if programming languages were..”.
This time it is about programming languages as weapons.
Perl is a molotov cocktail, it was probably useful once, but few people use it now.
Ruby is a ruby encrusted sword, it is usually only used because of how shiny it is.
PHP is a hose, you usually plug one end into a car exhaust, and the other you stick in through a window and then you sit in the car and turn the engine on.
Prolog is an AI weapon, you tell it what to do, which it does but then it also builds some terminators to go back in time and kill your mom.
And some links from the oldies:
CRAP is short for Change Risk Anti-Patterns – an acronym to protect you from deeply offensive code.
Measures the C.R.A.P. (Change Risk Anti-Patterns) score. It is designed to analyze and predict the amount of effort, pain, and time required to maintain an existing body of code.
A method with a CRAP score over 30 is considered CRAPpy (i.e., unacceptable, offensive, etc.).
C.R.A.P.(m) = comp(m)^2 * (1 – cov(m)/100)^3 + comp(m)
Where comp(m) is the cyclomatic complexity of method m, and cov(m) is the test code coverage provided by automated tests.