I recently read about no starch press’s “Super Scratch Programming Adventure!” from a post at boingboing and had to purchase a copy. The book looks as terrific in person as it does in the discussion at boingboing. My daughter was happy to see the book when it came in the mail. I’m looking forward to starting to read it with her and try some of its projects. Check it out.
This was a fascinating post I tripped upon at LiveJournal that I wanted to share. celandine13: Errors vs. Bugs and the End of Stupidity:
In fact, wrong notes always have a cause. An immediate physical cause. Just before you play a wrong note, your fingers were in a position that made that wrong note inevitable. Fixing wrong notes isn’t about “practicing harder” but about trying to unkink those systematically error-causing fingerings and hand motions. That’s where the “schizophrenia” comes in: pretending you can move your fingers with your mind is a kind of mindfulness meditation that can make it easier to unlearn the calcified patterns of movement that cause mistakes.
Remembering that experience, I realized that we really tend to think about mistakes wrong, in the context of music performance but also in the context of academic performance.
A common mental model for performance is what I’ll call the “error model.” In the error model, a person’s performance of a musical piece (or performance on a test) is a perfect performance plus some random error. You can literally think of each note, or each answer, as x + c*epsilon_i, where x is the correct note/answer, and epsilon_i is a random variable, iid Gaussian or something. Better performers have a lower error rate c. Improvement is a matter of lowering your error rate. This, or something like it, is the model that underlies school grades and test scores. Your grade is based on the percent you get correct. Your performance is defined by a single continuous parameter, your accuracy.
But we could also consider the “bug model” of errors. A person taking a test or playing a piece of music is executing a program, a deterministic procedure. If your program has a bug, then you’ll get a whole class of problems wrong, consistently. Bugs, unlike error rates, can’t be quantified along a single axis as less or more severe. A bug gets everything that it affects wrong.
Transcription: “Oh, The Methods You’ll Compose”.
When a coder sits down to start banging out code
The first thing to start crowding his cognitive load
Is whether his program will do what it should
Correctness, he says, is what makes my code good
It’s the function that captures the coder’s attention
Behaviors and inputs and outputs are mentioned
As if the one good that a coder can bring
Is to spin the right wheels on some Turing machine
And compiling and linking and running are great
(We need to do these to put food on our plate!)
But the shocker that might leave you scratching your head
Is that actual code is less written than read
We spend more of our time in maintaining our stuff
Than we ever spend writing the simplest of cruft
Which means that unless you’ve got something the matter
You’ll try to learn just a few code style patterns
So coders and countrymen, lend me your ears
As I teach you some lessons won hard through the years
From that Beckian book about implementation
And patterns that derail code suckification
New Yorker: David Remnick: We Are Alive: Bruce Springsteen at sixty-two:
“You are isolated, yet you desire to talk to somebody,” Springsteen said. “You are very disempowered, so you seek impact, recognition that you are alive and that you exist. We hope to send people out of the building we play in with a slightly more enhanced sense of what their options might be, emotionally, maybe communally. You empower them a little bit, they empower you. It’s all a battle against the futility and the existential loneliness! It may be that we are all huddled together around the fire and trying to fight off that sense of the inevitable. That’s what we do for one another.”