Skip to content

Reading "Hackers and Painters"

"Hacker Spirit"

Hacker behavior must include three characteristics: fun, high intelligence, and a spirit of exploration. Only when their behavior meets all three criteria can they be called "hackers".

For hackers, a closed door is a challenge, and a locked door is an insult. ... Hackers believe that as long as it helps improve the status quo and explore the unknown, people should be allowed to freely use various tools and information. When a hacker needs something to help create, explore, or fix a device, they won't hesitate to disregard the absurd concept of proprietary rights.

"Work"

Humans enjoy working, and in most places in the world, your job is your identity. However, everything we did back then was meaningless, or at least it seemed that way at the time. At best, those things were just practice for the actual work we might do in the distant future. The goals they aimed for were so far away that we didn't even know why we were practicing them. More often than not, those things were just a series of arbitrary hurdles that we were asked to jump over one by one. The texts you encounter in your studies are designed for exams, not for explaining the problems clearly. (For example, when it comes to the three main causes of the Civil War... when it's time for the exam, there will be a question: Please list the three main causes of the Civil War.) And there's no way to avoid those things. Adults have reached a consensus that this is the path to college. The only way to escape this empty life is to surrender to it.

Meanwhile, what changes have occurred in society? We are forced to face a more serious problem. It has a common cause with many other current issues, and that is "specialization". As the level of specialization in work increases, we have to undergo longer training. Before the industrial age, children started working at around 14 years old, and if they lived on a farm (where most people lived at that time), they started even earlier. Nowadays, a teenager has to wait until they are 21 or 22 years old to start working full-time if they go to college. If they pursue higher degrees, such as a medical or a philosophy doctorate, it may take until they are 30 years old to complete their studies.

How can hackers do what they love? I think the solution to this problem is something that almost all creators know: find a "day job" to support yourself. This term comes from musicians who perform at night, so they can find other jobs during the day. In a more general sense, a "day job" means that you have a job to make money and a job for your hobbies.

Specialization is necessary in modern society, but excessive specialization may deprive individuals of the ability to explore the world. In an era of rapid technological development, the deeper you delve into a particular field of knowledge, the less adaptable you become when new technologies emerge. I believe that we should maintain a balance of "moderate specialization" and allocate time and energy to learn about our own interests. This not only meets society's demand for specialized skills but also maintains the potential for continuous development.

"Methodology of Creation"

The way to create beautiful things is often not to start from scratch, but to make small adjustments based on existing achievements or combine existing ideas in a new way.

The time to think through the entire program should be when you are writing the code, not before.

I prefer to program directly on the computer rather than on paper. Even worse, I don't patiently write the entire program step by step to ensure that it is generally correct. Instead, I mindlessly pile up the code and then slowly modify it.

Programming is not about writing on paper and having it set in stone. It should be easily modifiable. If the end product of a project is like a building, then during construction, you don't decorate each floor as you build it. When developing a project, you can jot down ideas for details but avoid "premature optimization." It's like hastily installing glass windows on the second floor when you've just built up to the third floor, only to realize that the main structure of the building doesn't meet the requirements.

I believe this is also the correct mode of collaboration for multiple people developing software. Collaboration is necessary, but it shouldn't be excessive. If a code block is developed by three or four people together, no one truly "owns" that piece of code. In the end, it will become like a shared storage room, unmanaged, dirty, and filled with redundant code. The correct way to collaborate is to divide the project into well-defined modules, with each module assigned to a specific person. The interfaces between modules should be carefully designed, and if possible, the documentation should be written as clearly as a programming language specification.

For team projects, tasks should be divided by module, allowing each person to have ownership and control over their assigned part.

Programs are meant to be read by people and incidentally run on machines.

Only in those less mature and error-prone areas should you add comments to remind readers to pay attention, just like warning signs only appear at sharp turns on a road.

Here is the translation:

Here's the Zen of Python:

Simple is better than complex.

Let's mention Occam's Razor principle again:

Entities should not be multiplied unnecessarily.

The author explains it in the following way:

When you are forced to make things simple, you are forced to face the real problems directly. When you can't get away with superficial decorations, you have to focus on the essential parts.

Regarding how to create good designs, the article presents these points: simplicity, aesthetics that align with the essence of history, and imitation of nature.

Good design is simple design. You can hear this statement in various fields, from mathematics to art. In mathematics, it means that shorter proofs are often better proofs. Especially when it comes to mathematical axioms, less is more. This statement also applies to programming. For architects and designers, it means that beauty relies on carefully chosen structural elements, not on the accumulation of superficial decorations. (Decorations themselves are not bad, only when they are used to conceal the pale structure do they become a problem.) The same applies to art, where highly representative still life works that are carefully observed often have more value than grandiose works that are superficially elaborate but essentially meaningless repetitions (such as paintings that reproduce very complex lace patterns). In writing, this statement means saying only what needs to be said and saying it concisely.

Interestingly, if you want your work to be attractive to future generations, one way is to make it appealing to several generations before. It is difficult to imagine what the future will be like, but it is certain that future generations will not care about today's trends, just like several generations before. So, if your work is appealing to people today as well as to people from 1500 years ago, then it is highly likely to also attract people from 2500 years in the future.

Good design imitates the design of nature. I'm not saying that imitating nature itself is inherently good, but rather that nature has already solved many design problems through long-term evolution. So, if your design is close to nature, it will generally not be bad.

The last point can explain well the question of why humans have not evolved wheels.

At any moment in history, there are some hot projects where certain groups achieve great results. If you stay away from these centers, it is almost impossible to achieve great results on your own. To some extent, you can only have a certain influence on trends, but you cannot determine them. In fact, trends determine you.

The personal impact on history is mostly minimal. If there are no specific trends in the era, you can only swim against the current. Understanding the development trends of the era is a necessary condition for creating greater achievements.

One original expression of Parkinson's Law is "work always expands to fill the time available," which later extended to the field of computers as "data always expands to fill the available space," and in a more general sense, it can be summarized as "demand for a resource always exceeds its supply."

People who produce excellent results often feel that their work is not good enough during the process. Others see their achievements as fantastic, while the creators themselves only see the flaws in their work. This difference in perspective is not accidental because outstanding achievements are born out of dissatisfaction with the status quo.

"Freedom of Thought"

Samuel Johnson once said that it takes 100 years for people to reach a consensus on evaluating a writer. You have to wait for his influential friends to die, and then wait for his followers to die before you can have a fair evaluation of him.

But what is truly terrifying is that not only fashion trends come and go, but also moral concepts. Clearly, there are arbitrary and baseless erroneous views that most people believe in without realizing the influence. This is very dangerous. Popular clothes are actually ugly clothes; popular moral concepts are not good but evil. However, if everyone wears fashionable clothes and you don't, you will be ridiculed; if everyone follows popular moral concepts and you don't, the consequences will be much more severe, you may be fired, exiled, imprisoned, or even killed.

If you could travel back in time, regardless of which era, there is one thing that will not change, and that is "loose lips sink ships." You must be careful about what you say. Harmless remarks can bring you great trouble. Today, saying that the Earth revolves around the Sun is commonplace, but if you said that in 17th century Europe, you would be in big trouble. Galileo said such words and ended up being tried by the religious court.

Sometimes, others may say to you, "You need to transform your thoughts and be well-adjusted according to social needs." This statement seems to imply that if you don't agree with society, then it must be your own problem. Do you agree with this statement? In fact, not only is it incorrect, but it also leads to regression in history. If you truly believe in it, you will not dare to think about anything that goes against society and immediately give up your own views. That's when real problems arise.

Once you discover "things that cannot be said," what should you do next? My suggestion is not to say it, or at least choose the appropriate occasion to say it, only fight the battles that are worth fighting. Engaging in debates with fools will only turn you into a fool. At this point, you need to understand that free thinking is more important than speaking freely. If you feel that you must argue with those people and refuse to swallow your pride, you must make your point clear. However, the result may be that you can no longer think freely and rationally. I believe that such arrogance is unacceptable. A better approach is to draw a clear line between thoughts and speech. You can think freely in your mind, but you don't necessarily have to say it out loud. I encourage myself to silently contemplate the most outrageous thoughts in my mind. Your thoughts are like an underground organization, and you should never reveal everything that happens there to outsiders.

In 1638, the English poet John Milton was preparing for his first visit to Italy. Sir Henry Wootton, who had served as the British ambassador to Venice, told Milton to remember the motto "i pensieri stretti & il viso sciolto," which literally means "tight-lipped thoughts and an open face." In other words, you should smile at everyone but refrain from expressing your true thoughts. Among all the methods of counterattack, humor is possibly the best. Fanatics have one thing in common: a lack of a sense of humor. They cannot handle jokes calmly. In the kingdom of humor, they feel out of place, like a heavily armored knight stepping onto an ice rink. A real-life example is the Victorian era in Britain, where people emphasized court etiquette and were seen as a joke. As a result, it seemed to have been defeated by the jokes themselves. Its modern incarnation, "political correctness," will likely meet the same fate. "I am glad I wrote 'The Crucible,'" Arthur Miller wrote, "but looking back, I often wish I had that temperament to write a farce that reflected the situation at the time."

If you are part of the tide, how can you see the direction of the current? You can only maintain a state of perpetual questioning. Ask yourself, what are the things I cannot say? Why?

A sense of humor is a sign of strength. Always having a sense of humor means you can laugh off misfortune, while losing your sense of humor means you have been deeply wounded by it. Therefore, a sign (or at least a characteristic) of strength is being able to face your own life with ease.

"Market"

The real battlefield for competing in software design is the emerging market, where no one has built defensive fortifications yet. As long as you can come up with bold designs and have one person or a group of people responsible for both designing and implementing the product, you can defeat big companies here. Microsoft itself started this way, and so did Apple and HP. I believe almost all successful startup companies have followed this path.

Having a certain amount of piracy is an "advantage," but it is also a problem. A certain number of pirated copies are beneficial to software companies. No matter how much you price your software, there will always be users who will never purchase it. If these users use pirated copies, you don't suffer any loss. In fact, you gain because you now have an additional user, which increases your market influence. This user may eventually pay for your software after graduating.

McDonald's is a fast-food chain that relies on designing a fast-food service system that can be replicated in every corner of the world. Every McDonald's franchise must strictly adhere to operational regulations, making it operate like software. Therefore, McDonald's also conforms to the "develop once, universally applicable" model.

This is not only a good method for operating startup companies but also the essence of startup companies. Venture capitalists (VCs) know this and have given it a name - barriers to entry. If you have a new idea and approach a VC to ask for investment, one of the questions they will ask is whether it is difficult for others to replicate your model. In other words, how high are the barriers you have set for competitors? You better provide a convincing explanation and clarify the reasons why your technology is difficult to replicate. Otherwise, once big companies see it, they will create their own versions, combined with their brand, capital, and distribution capabilities, and overnight, they will snatch away your entire market. At that point, you will be like a guerrilla in an open field, easily wiped out by regular troops.

"Tools"

Most of the time, you don't need a fully functional computer (a computer that can run software). The equipment you need only requires a keyboard, screen, browser, and possibly a wireless network card.

I have also thought about it. Since performance and portability cannot be achieved at the same time, why not offload the computationally intensive tasks and rendering work to the cloud, while the user terminal only needs a processor with basic performance, along with screen, keyboard, and mouse as interaction devices. Moreover, by mapping the cloud servers to the terminals in a one-to-many manner, not only can costs be saved, but also seamless switching can be achieved, adapting to more scenarios. You can connect to a large screen at home and use a tablet when you're outside.

Currently, the main issues are connection speed and cost.

References and Acknowledgements

Original: https://wiki-power.com/ This post is protected by CC BY-NC-SA 4.0 agreement, should be reproduced with attribution.

This post is translated using ChatGPT, please feedback if any omissions.