Hackers & Painters: Big Ideas from the Computer Age
Rate it:
Open Preview
Kindle Notes & Highlights
Read between October 21 - October 26, 2023
67%
Flag icon
Lisp macros are unique. And believe it or not, what they do is related to the parentheses.
67%
Flag icon
be. What that means is that at least 20-25% of the code in this program is doing things that you can’t easily do in any other language.
68%
Flag icon
Lisp’s power is multiplied by the fact that your competitors don’t get it.
68%
Flag icon
If you ever do find yourself working for a startup, here’s a handy tip for evaluating competitors. Read their job listings.
68%
Flag icon
The more of an IT flavor the job descriptions had, the less dangerous the company was. The safest kind were the ones that wanted Oracle experience.
68%
Flag icon
The pointy-haired boss miraculously combines two qualities that are common by themselves, but rarely seen together: (a) he knows nothing whatsoever about technology, and (b) he has very strong opinions about it.
69%
Flag icon
false. The pointy-haired boss believes that all programming languages are pretty much equivalent.
69%
Flag icon
right. Some languages are better, for certain problems, than others.
69%
Flag icon
explode. As long as he considers all languages equivalent, all he has to do is choose the one that seems to have the most momentum, and since that’s more a question of fashion than technology, even he can probably get the right answer.
71%
Flag icon
As a rule, the more demanding the application, the more leverage you get from using a powerful language. But plenty of projects are not demanding at all.
72%
Flag icon
In server-based applications you can get away with using the most advanced technologies,
72%
Flag icon
Surely by now we all know that software is best developed by teams of less than ten people. And you shouldn’t have trouble hiring hackers on that scale for any language anyone has ever heard of.
72%
Flag icon
You can’t let the suits make technical decisions for you.
72%
Flag icon
If you start a startup, don’t design your product to please VCs or potential acquirers. Design your product to please the users. If you win the users, everything else will follow. And if you don’t, no one will care how comfortingly orthodox your technology choices were.
73%
Flag icon
If you’re trying to solve a hard problem with a language that’s too low-level, you reach a point where there is just too much to keep in your head at once.
73%
Flag icon
Technology often should be cutting-edge. In programming languages, as Erann Gat has pointed out, what “industry best practice” actually gets you is not the best, but merely the average.
73%
Flag icon
If you want to win in a software business, just take on the hardest problem you can find, use the most powerful language you can get, and wait for your competitors’ pointy-haired bosses to revert to the mean.
75%
Flag icon
The Dream Language
75%
Flag icon
Programming languages are not theorems. They’re tools, designed for people, and they have to be designed to suit human strengths and weaknesses as much as shoes have to be designed for human feet.
76%
Flag icon
One thing hackers like is succinctness.
76%
Flag icon
The most important kind of succinctness comes from making the language more abstract.
77%
Flag icon
Good programmers often want to do dangerous and unsavory things.
77%
Flag icon
Let yourself be second-guessed.
77%
Flag icon
A really good language should be both clean and dirty: cleanly designed, with a small core of well understood and highly orthogonal operators, but dirty in the sense that it lets hackers have their way with it.
77%
Flag icon
To be attractive to hackers, a language must be good for writing the kinds of programs they want to write. And that means, perhaps surprisingly, that it has to be good for writing throwaway programs.
77%
Flag icon
A throwaway program is a program you write quickly for some limited task:
78%
Flag icon
And so, paradoxically, if you want to make a language that is used for big systems, you have to make it good for writing throwaway programs, because that’s where big systems come from.
78%
Flag icon
programs? To start with, it must be readily available.
78%
Flag icon
Another thing you want in a throwaway program is succinctness.
78%
Flag icon
Of course the ultimate in succinctness is to have the program already written for you, and merely to call it.
78%
Flag icon
I think future programming languages will have libraries that are as carefully designed as the core language.
79%
Flag icon
A friend of mine rarely does anything the first time someone asks him. He knows that people sometimes ask for things they turn out not to want. To avoid wasting his time, he waits till the third or fourth time he’s asked to do something. By then whoever’s asking him may be fairly annoyed, but at least they probably really do want whatever they’re asking for.
79%
Flag icon
So anyone who invents something new has to expect to keep repeating their message for years before people will start to get it.
79%
Flag icon
It’s not when people notice you’re there that they pay attention; it’s when they notice you’re still there.
80%
Flag icon
“The best writing is rewriting,” wrote E. B. White. Every good writer knows this, and it’s true for software too. The most important part of design is redesign.
80%
Flag icon
worry made the work good.
80%
Flag icon
If you can keep hope and worry balanced, they will drive a project forward the same way your two legs drive a bicycle forward.
80%
Flag icon
In young hackers, optimism predominates. They produce something, are convinced it’s great, and never improve it. In old hackers, skepticism predominates, and they won’t even dare to take on ambitious projects.
80%
Flag icon
Prose can be rewritten over and over until you’re happy with it. But software, as a rule, doesn’t get redesigned enough.
80%
Flag icon
Users are a double-edged sword. They can help you improve your language, but they can also deter you from improving it.
80%
Flag icon
So choose your users carefully, and be slow to grow their number. Having users is like optimization: the wise course is to delay it.
80%
Flag icon
Introducing change is like pulling off a bandage: the pain is a memory almost...
This highlight has been truncated due to consecutive passage length restrictions.
80%
Flag icon
it’s not a good idea to have a language designed by a committee. Commit...
This highlight has been truncated due to consecutive passage length restrictions.
81%
Flag icon
Design and Research
81%
Flag icon
And yet, making what works for the user doesn’t mean simply making what the user tells you to.
82%
Flag icon
Users don’t know what all the choices are, and are often mistaken about what they really want.
82%
Flag icon
you have to pick some group of users. I don’t think you can even talk about good or bad design except with reference to some intended user. You’re most likely to get good design if the intended users include the designer himself.
82%
Flag icon
And looking down on the user, however benevolently, always seems to corrupt the designer.
82%
Flag icon
If you think you’re designing something for idiots, odds are you’re not designing something good, even for idiots.
82%
Flag icon
Over in the arts, things are different. Design is all about people.