Monday, June 10, 2013

What I've Been Reading

Hackers & Painters: Big Ideas from the Computer Age by Paul Graham. I have become a big supporter of AI because of people like Thrun, Graham and Theil. Technological revolution has produced more deep thinkers than the industrial revolution and if this trend continues (a big assumption of-course), I hope the "predicted" dystopian future of humanity can be averted.

On Childhood & Schooling:
Like manu nerds, probably, it was years after high school before I could bring myself to read anything we'd been assigned then. And I lost more than books. I mistrusted words like "character" and "integrity" because they had been debased by adults. As they were used then, these words all seemed to mean the same thing: obedience. The kids who got praised for these qualities tended to be at best dull-witted prize bulls, and at worst facile schmoozers. If that was what character and integrity were, I wanted no part of them.

On Empathy:
Empathy is probably the single most important difference between a good hacker and a great one. Some hackers are quite smart, but practically solipsists when it comes to empathy. It's hard for such people to design great software, because they can't see things from user's point of view.
Venture capitalists have a list of danger signs to watch out for. Near the top is the company run by techno-weenies who are obsessed with solving interesting technical problems, instead of making users happy. In a startup, you're not just trying to solve problems. You're trying to solve problems that users care about.

On the Importance of Poking Around Nasty & Disreputable Ideas:
I do it, first of all, for the same reason I did look under rocks as a kid: plain curiosity. And I'm especially curious about anything that's forbidden. Let me see and decide for myself.
Second, I do it because I don't like the idea of being mistaken. If, like other eras , we believe things that will later seem ridiculous, I want to know what they are so that I, at least, can avoid believing them.
Third, I do it because it's good for the brain. To do good work yo need a brain that can go anywhere. And you especially need a brain that's in the habit of going where it's not suppose to.
Great work tends to grow out of ideas that others have over looked, and no idea is so overlooked as one that's unthinkable.

On Thinking vs. Speaking:
The most important thing is to be able to think what you want, not to say what you want. And if you feel you have to say everything you think, it may inhibit you from thinking improper thoughts. I think it's better to follow the opposite policy. Draw a sharp line between your thoughts and speech. Inside you head, anything is allowed. Within my head I make a point of encouraging the most outrageous thoughts I can imagine. But, as in a secret society, nothing that happens within the building should be told to outsiders.
Argue with idiots, and you become an idiot.

The Other Road Ahead:
If you're a hacker who has though of one day starting a startup there are probably two things keeping you from doing it. One is that you don't know anything about the business. The other is that you're afraid of competition. Neither of these fences have any current in them.
There are only tow things you have to know about business: build something users love, and make more than you spend. If you get these two right, you'll be ahead of most startups. You can figure out the rest as you go.

On Wealth vs. Money:
Wealth is the fundamental thing. Wealth is the stuff you want: food, clothes. houses. cars. gadgets. travel to interesting places, and so on. You can have wealth without having money. Wealth is what you want, not money. But if wealth is the important thing, why does everyone talk about money? It is a kind  of a shorthand: money is a way of moving wealth, and in practice they are usually interchangeable. But they are not the same thing, and unless you plan to get rich by counterfeiting, taking about making money can make it harder to understand how to make money.

On Why Europe Grew So powerful?
The answer (or at least the proximate answer) may be that the Europeans rode on the crest of a powerful new idea: allowing those who made lot of money to keep it.

On Design:
Good design uses symmetry. Symmetry may just be one way to achieve simplicity, but it's important enough to be mentioned on its own. Nature uses it a lot, which is a good sign. There are two kinds of symmetry, repetition and recursion. Recursion means repetition in subelements, like the patter of veins in a leaf. The danger of symmetry and repetition especially, is that it can be used as a substitute for thought. 
Good design resembles nature. It's not so much that resembling nature intrinsically good that nature has had a long time to work on the problem. So it's a good sign when your answer resembles nature's. 

On Survival of Programming Languages:
Any programming language can be divided into two parts: some set of fundamental operators that play the role of axioms, and the rest of the language, which could in principle be written in terms of these fundamental operators. 
I think the fundamental operators are the most important factor in a language's long term survival. The rest you can change. It's like the rule that in buying a house should consider location first of all. Everything else you can fix later, but you can't fix the location.

On Design vs. Research:
Design doesn't have to be new, but it has to be good. Research doesn't have to be good, but it has to be new. I think these two path converge at the top: the best design surpasses its predecessors by using new ideas, and the best research solves problems that are not only new, but worth solving. So ultimately design and research are aiming for the same destination, just approaching from different directions. 

On Lisp:
Lisp is worth learning for the profound enlightenment experience you will have when you finally get it; that experience will make you a better programmer for the rest of your days, even if you never actually use Lisp itself a lot. - How to Become a Hacker by Eric Raymond.

What's so great about Lisp? And if Lisp is so great, why doesn't everyone use it? There sound like rhetorical questions, but actually they have straightforward answers. Lisp is so great not because some magic quality visible only to devotees, but because it is simply the most powerful language available. And the reason everyone doesn't use it is that programming languages are not merely technologies, but habits of mind as well, and nothing changes slower. 

My purpose here is not to change anyone's mind, but to reassure people already interested using in Lisp - people who know that Lisp is a powerful language, but worry because it isn't widely used. In a competitive situation, that's an advantage. Lips's power is multiplied by the fact that your competitors don't get it. 

Lisp and Fortran were the trunks of two separate evolutionary tress, one rooted in math and one rooted in machine architecture. These two tress have been converging ever since. Lisp started out powerful, and over the next twenty years got fast. So-called mainstream languages started out fast, and over the next forty years gradually gradually got more powerful, until now the most advanced of them are fairly close to Lisp. Close, but they are still missing a few things.


Technology often should be cutting-edge. In programming languages, as Erann Gat pointed out, what "industry best practice" actually gets you is not the best, but merely the average. When a decision causes you to develop software at a fraction of the rate of more aggressive competitors, "best practice" does not really seem the right name for it. 


For more on Lisp check out Paul Graham's other books ANSI Common LISP and On Lisp: Advanced Techniques for Common Lisp



No comments: