Practice first, study later

I had the same question when I wanted to learn C++. I was already quite practiced at Java and had written C and had read books on C++ off and on for years, but I still could not program in C++.

So I got a copy of Stroustrup “The C++ Programming Language” and started to do his exercises, but the author clearly had never done them himself, some were quite long and tedious and did not teach me anything (never put exercises in a book that you have never done), so I gave up on doing his exercises.

In my exasperation I just made up my own exercises: I just started at the beginning of the book and for each feature the book mentioned I wrote a little program that used it. The book said you can throw any kind of object, including, say, an int, so I wrote a program to throw and catch an int. I have never done that before or since, but I did it. I wrote a little program for every feature of the language. It was incredibly tedious, but it worked.

I also compiled every program with two C++ compilers and ran them and compared the difference. Many of my little programs did different things in the two compilers (!). I coded for 10 hours a day for two weeks; when I was done, I could code in C++, I could think in C++. Don’t despair if it takes you longer: recall that I was already an experienced programmer.

SECRET SAUCE HERE: The key here was to actually write the program even if I was sure I had nothing to learn from it because the feature in question was so conceptually simple: you think you know something, but then when you go to actually type it in, you find out whether know it was well as you thought you did. The tiny improvements you make while doing this copy-check-repeat feedback loop is the essence of learning the skill.

Note that no mistake is too small to be worth correcting. It is critical to not say you have passed the exercise until you can produce the result exactly and reliably, as a matter of course. If you just wrote a program and it was easy, then hide it and write it again.

At one point I was embarrassed that I could not write makefiles, so instead of copying them and hacking on them, every time I needed one I wrote it from scratch; now I am a master of gnumake. I repeatedly write fizz-buzz, binary search, heapsort, hashtables, etc. over and over, just to make sure I can do it correctly and without effort.

One of Richard Feynman’s wives left him, legally accusing him of spousal abuse because he did too much calculus:…

‘He begins working calculus problems in his head as soon as he awakens,” Bell complained to a divorce judge. “He did calculus while driving, while sitting in the living room and while lying in bed at night.’

Ben Franklin describes using this method in his autobiography of how he taught himself to write. He dropped out of second grade and ended up as one of the best writers in American history (not to mention scientist, statesman, engineer, etc.) He says he found writing he liked and practiced copying it and then checking that he had copied it correctly; see his autobiography for more.

Woz used this method to teach himself how to build computers: he had the designs of computers from Silicon Valley firms and he just practiced rote copying the designs over and over.

I tell you this as a former graduate student in Mathematics at Berkeley: The secret to learning is not reading a bunch of abstract ideas. The secret is just running a huge number of examples through your brain; your brain then abstracts them for you. There is no need to study a bunch of abstract rules. After you have learned the skill this way, doing a “master class” with an expert where you return to what you have learned and examine it, think about it, refactor it, can also be helpful. However do this after you have the skill. The standard advice in Zen practice is the same: “practice first, study later”.

If you think that this cannot possibly work, then think of how you learned to speak your native language; did someone explain the rules of the grammar to you as a baby, or did you just rote imitate it? Non-native speakers of English have asked me why a feature of English is the way that it is or what the rule is for a certain situation in English. I tell them I have no idea.

Our school system lies to you completely. LEARNING A SKILL IS NOT ABOUT THE CONCEPTS, IT IS ABOUT ROTE MINDLESS IMITATION UNTIL YOUR BRAIN HAS INTERNALIZED THE IDIOMS. Your brain cannot memorize the massive amount of detail in all of the examples, so it must abstract them into idioms; once it has done that, you simply have the skill and you do not even know how you do it yourself. How exactly do you approach a door and open it? If you think you know, then please explain it to the teams of people at places like MIT who are trying to build a robot that can do that, because it is very complex. You do it and you do not even know how. But you can do it.


Twitter the hate machine

Today, Twitter is a planetary-scale hate machine. By which I don’t mean “people post hateful things on Twitter.” I mean literally generates hate, as in, put a bunch of people with diverse perspectives on Twitter and by the end of the day they hate each other more than when they started.
Reminds me of this William Burroughs excerpt

At any given time recording devices fix the nature of absolute need and dictate the use of total weapons–Like this: Take two opposed pressure groups–Record the most violent and threatening statements of group one with regard to group two and play back to group two–Record the answer and take to back to group one–Back and forth between opposed pressure groups–This process is known as “feed back”–You can see it operating in any bar room quarrel–In any quarrel for that matter–Manipulated on a global scale feeds back nuclear war and nova
“Too often, we judge other groups by their worst examples – while judging ourselves by our best intentions.” -GWB

Social media vs social network

There is social media and there is social network. We have to differentiate them to understand them
Both are technology used to bring people and information closer. The difference between them is the way they are put to use — social networks are limited to connecting people together while social media is not just about the people. It is more than that, it is more wide and ambitious and all encompassing: the brands, the sports, the music, your interests, your friends’ interests, and advertisements for a thousand products vying for your attention and wallet.
Social media is not as personal as social networks. When social networks became too big they morphed to social media. Social networking just become part of it, and also ran. This idea occurred to me while reading this comment on why Facebook ceased to be interesting place once they started to bombard users with advertisements and hijacked the newsfeed:

I haven’t felt “positive reinforcement” or “dopamine hits” for quite some time on Facebook. Since it shifted from social network to social media, it doesn’t “give” me anything anymore. It is tedious, and I don’t check it because I feel compelled, or even enjoy it, but I have to make a concious effort to login and check every now and then, like you check mail or your bank website.
Back when it was more about the profile, about “stalking” friends and connecting with real-life acquaintances, it was much more addictive. Features like “you know this person via these two steps”, poking, but also subtle clues like the timing of when somebody visited your page, or that they commented on an old photo (meaning they browsed your gallery)… that is all missing now. Facebook was so addictive because it enabled you to obsess about social connections. Friends, crushes, people with common hobbies, and so on. – HN

Running is the Worst Way to Get Fit

Remember, running is only good for “cardio” because it makes you breathe hard, but there are endless ways to do that. Just love to run? Don’t want to give it up? That’s cool, just do it faster. “In many ways, sprinting is safer than running,” says Boyce. “The average person has a lot of muscle imbalances, where muscles on one side of the joint are weaker than muscles on the other side of the joint, so it’s really not the best idea to hammer away at them with long, endurance style running where you’re taking, like, ten thousand strides over a thirty-minute run.”

That leads to chronic pain and imbalances, he explains, while sprinting with good form remedies the problems of running in multiple ways. You take fewer strides overall (so it has less impact on the joints), you move more efficiently, you use more muscles in the body, and it recruits more fast-twitch muscle fibers, which are more involved with building strength and power.

“Fast-twitch muscle fibers will help keep your joints bolstered and strong, so it’s just a better choice overall,” Boyce says. “Plus, you’re going to have more of a fat loss effect from sprinting for the same reasons you get it from weights: You’re doing things that require strength, explosiveness, exertion, and intensity, so your muscles are going to have to work a little bit harder, they’re going to burn more calories, and you’re going to be more metabolic after you finish your workout as well.” That means you continue burning extra calories long after you’ve showered off your gym funk