Original link: https://www.ixiqin.com/2023/08/07/hacker-and-painters-notes/
I read “Hackers and Painters” a long time ago, but at that time, I didn’t understand and understand what the book was talking about. Today, when I’m practicing as an indie developer, I don’t really realize why this book is so worth reading.
Is the recommended sequence “hacker spirit” outdated? the answer is never
- The essence of the hacker spirit is to solve problems creatively. “Problem solving” must be related to people’s needs, and it needs to meet the needs of more and more people for a long time. “Hands-on” requires courage, being pragmatic, and action-oriented, and beyond that, a hacker must be a positive individual.
Paul Graham Who and Who
- “Running a startup is like fighting every day; working for a big company is like struggling with suffocation.”
- Paul Graham has a complete set of entrepreneurial philosophy. His entrepreneurial formula is: (1) build a prototype; (2) go online (don’t worry about bugs); (3) collect feedback; (4) adjust the product; (5) grow grow.
- When all the students first came to YC, each of them will get a white T-shirt with the words “Make something people want” (make something people want), and when their project gets venture capital, they will receive it again. A black T-shirt that says “I made something people want” (I made something people want).
Hardcover Translator’s Foreword: Born Towards the Future
- The future is here, within reach. The Hacker and the Painter is a guide on that journey, pointing you in the direction of that door. As Graham said, what you have to do is “live in the future, then build what’s missing” (Live in the future, then build what’s missing). Ruan Yifeng 2
Paperback Edition Translator’s Preface
- Hacking must contain three characteristics: fun, high IQ, and spirit of exploration. Only when its behavior meets these three criteria at the same time can it be called a “hacker”.
- Hackers: Heroes of the Computer Revolution
- In the book, he further summarized the hacker’s values into six “hacker ethic” (hacker ethic), until today these few ethics are regarded as the best exposition in this regard. (1) The use of computers and all things that contribute to understanding the nature of this world should not be restricted in any way. Everything should be tried by hand. (Access to computers—and anything that might teach you something about the way the world works—should be unlimited and total. Always yield to the Hands-On Imperative!) (2) All information should be free. (All information should be free.) (3) Do not trust authority and advocate decentralization. (Mistrust Authority—Promote Decentralization.) (4) Judging the level of a hacker should be based on his technical ability, not on other criteria such as his education, age or status. (Hackers should be judged by their hacking, not bogus criteria such as degrees, age, race, or position.) (5) You can use computers to create beauty and art. (You can create art and beauty on a computer.) (6) Computers make life better. (Computers can change your life for the better.)
1 Why nerds are not popular
- Torture is entertainment until a man has a conscience.
- At best, those things are just exercises for real jobs we might be doing in the distant future. The goal it is aimed at is so remote that at the time we didn’t know what we were practicing it for. More often, those things are nothing more than a series of haphazardly set rope hoops that you are asked to jump through one by one. The text you encounter in your studies is designed for the exam, the purpose is to ask questions, not to clarify the questions. (For example, the three main causes of the Civil War… When it comes time for the test, there will be a question: Please list the three main causes of the Civil War.) And, there is no way to avoid those things. Adults have come to a consensus that the path to college is just that. The only way to escape this empty life is to surrender to it.
2 Hackers and painters
- What hackers and painters have in common is that they are both creators. Like composers, architects, and writers, hackers and painters try to make good work. None of them are doing research per se, although in the process they might discover some new technology (which is of course better).
- So instead of doing what they really want to do (beautifully designed software), hackers in universities and labs think they should write research papers.
- Beautiful software is not always an appropriate subject for a dissertation. First, scientific research must be original. Anyone who has written a doctoral dissertation knows that the way to make sure you are tapping new territory is to find land that no one wants. Second, scientific research must be productive, and fields that are immature and have obstacles are the easiest to write many papers because you can write about the obstacles you have to overcome in order to get the job done. There is nothing like a false premise to create a flood of unanswered questions.
- The way to create beautiful things is often not to start from scratch, but to make some small adjustments on the basis of existing achievements, or to combine existing ideas in relatively new ways. This type of work is difficult to express in a research paper.
- After years of baptism, beautiful things have a better chance of survival and development, and ugly things tend to be eliminated.
- It’s not the worst thing that people can’t evaluate your work, or even misunderstand your work. The greater danger is that you yourself will misunderstand your own work.
- I’ve found that the best sources of new ideas for hackers are not theoretical fields with “computer” in their name, but other creative fields. Instead of looking for ideas in the field of “computation theory”, you might as well look for ideas in painting.
- It means that the first feature of a programming language should be to allow dynamic extension. Programming languages are designed to help you think about programs, not to express programs you’ve already thought up. It should be a pencil, not a pen. Static typing 4 is a nice concept if everyone programs like they are taught in school.
- What we need is a language that can be smeared and changed at will. We don’t want to sit upright, put a teacup full of various variable types on our knees carefully, and work hard to talk to the meticulous compiler lady. Pick your words carefully, make sure your variable types match, and make yourself appear polite and thoughtful.
- I didn’t discover this until recently. When Yahoo bought Viaweb, they asked me what I wanted to do. Never having much interest in business, I replied that I wanted to continue hacking. After I came to Yahoo, I found that in their view, the job of a “hacker” is to use software to achieve a certain function, not to design software. There, programmers are treated as artisans whose job it is to translate the product manager’s “vision” (if that’s the word) into code.
- The real battleground for competitive software design is the emerging field of the market where no one has yet built fortifications. As long as you can come up with a bold design, with one person or group of people responsible for both designing and implementing the product, you can beat the big guys here. That’s how Microsoft itself got off to a successful start, as did Apple and Hewlett-Packard. I think almost all startups succeed this way.
- All creators face this problem. Price is determined by both supply and demand. The demand for fun software is not as high as the demand for software that solves customer troubles;
- How can hackers do what they love? I think the solution to this problem is one that almost every creator knows: get a “day job” to support a family. The term comes from musicians who perform music at night so they can find another job during the day. More generally, “day job” means that you have a job for money and another job for hobby.
- Almost all creators have a “day job” early in their career. Painters and writers are especially notable. If you are lucky, you can find a “day job” that is very related to your “real job”. Musicians often seem to work in record stores. Likewise, hackers who specialize in a programming language or operating system are likely to get a “day job” using those tools.
- To my surprise, employers are hesitant to have their hackers work on open source software projects. But at Viaweb, if you’re not willing to do that, we’re very hesitant to hire you. When we interview programmers, the main thing we focus on is what software they write in their spare time, because if you don’t love something, you can’t do it really well. If you love programming, you will inevitably Will develop your own project. 7
- I think that’s how most creators learn and work, writers and architects seem to do that. Perhaps it’s good for a hacker to take the same approach as a painter: start from scratch on a regular basis, rather than working on a project for years and years and trying to include all the latest ideas in revisions.
- There is another thing worth learning from painting: a painting is completed step by step. Usually start with a rough sketch and then gradually fill in the details. However, it is not simply a process of filling in details. Sometimes the original idea looks wrong and you have to fix it. When countless ancient oil paintings are examined under X-rays, it is possible to see traces of modification, the position of limbs has been moved, or the expression of the face has been adjusted. This creative process of painting is worth learning. I think hacks should work like this too. You can’t expect to have a perfect specification design and then start programming, it is unrealistic to think so. If you admit up front that the specification design is not perfect, you can modify the specification on the spot as needed when programming, and you will end up with a better result. (The internal structure of large companies makes it difficult for them to do this. This is another advantage for startups.)
- If a hacker is just a technical worker responsible for realizing the will of the leader, and his responsibility is to write code according to the specification, then he is actually the same as a worker digging a ditch, digging from one end to the other, nothing more. However, if a hacker is a creator, he is not engaged in mechanical work, he must have inspiration.
- Hackers are like painters, they work with a psychological cycle. Sometimes, you have a new and exciting project and you’re willing to work 16 hours a day on it. After a while, you will feel bored again and lose interest in everything.
- For creators like painters and hackers, some jobs require a great deal of passion, while others are trivial, day-to-day chores. It’s a good idea to move on to easier tasks when you’re bored.
- The process of eliminating bugs is like solving a math problem. Many constraints are known, and you only need to solve the equation according to the conditions.
- The correct way to collaborate is to divide the project into strictly defined modules, each of which has a clear responsibility for one person. The interface between modules has been carefully designed. If possible, it is best to write the documentation as clearly as the programming language specification.
- Knowing how someone else sees things doesn’t mean you’re serving his interests. In some cases, such as in war, knowing your opponent is precisely what you need to do to fight your opponent12
- Most creators create for human users. In order to attract users, you have to understand what they want.
- Of all the differences that separate a mediocre hacker from a good hacker, the ability to “empathize” is probably the most important single factor. Some hackers are smart, but completely self-centered and don’t put themselves in the user’s shoes at all. It is difficult for such people to design good software, because they do not see the problem from the user’s point of view.
- Part of the function of software is to explain itself. In order to write good software, you must assume that users know basically nothing about your software. You have to understand that when users use your software for the first time, they don’t do their homework in advance. They start using it without any preparation, so the way to use the software should be in line with the user’s intuition. Don’t expect users to read and use it. manual.
- Programs must be written to be read by humans and occasionally executed by computers.
mechanism
- I am not saying that struggle is never about ideas, but rather that whether or not there is actually a struggle of ideas, there will always be a struggle of ideas. Just as a fad that has just passed is not unfashionable at all, so the ideas of the losing side are not all bad.
Why did you do this
- In science, questioning the conclusions and accepted assumptions of others is especially important and offers enormous opportunities for scientific creativity. The way scientists (or at least good scientists) do things, to be precise, is to look for places where conventional wisdom doesn’t make sense, and then try to take that apart and see what’s going on, and see what’s going wrong inside. This is how new theories emerge.
- A good scientist not only avoids traditional views, but also strives to break traditional views. Scientists are asking for trouble. This should be the way any academic studies, but scientists seem particularly willing to check.
- People with higher intelligence are more willing to think about those shocking ideas
- For companies that make great products, self-evaluation often focuses on “criticism” and “self-deprecating”, rather than “affirmation” and “praise”.
tight-lipped
- Discussing an idea leads to more ideas, and without discussing, there are no ideas at all. So, if possible, you’d better find some trusted confidantes, and only talk to them freely and everything. Not only does this allow for new perspectives, but it can also be used to choose friends. The person you should know the most is the person who can talk about “heresy” without getting angry.
always question
- The so-called “popularity” (traditional concepts are also a kind of fashion), essentially means that one cannot see one’s own appearance, otherwise there would be no fashion.
- If you are part of the tide, how can you see the direction of the tide? You can only keep questioning forever: what can’t I say? Why?
4 good bad habits
- Tolerance of appropriate disobedience does not do much harm, but rather contributes to the national advantage of the United States, which makes it attractive not only to smart people, but also to those who are very pompous.
- Computers are indeed very precise and methodical, but what hackers do is purely out of interest, doing whatever comes to mind, without a clear plan, just for fun.
- It seems to me that a society where people have freedom of speech and freedom of action is often the most likely to adopt the best solution, rather than the solution proposed by the most powerful person.
user win
- Near my house, a sticker on the bumper of a car reads “death before inconvenience.” Most of the time, most people always choose the most convenient way. If Internet software can beat desktop software, it must be more convenient. This is true both from the user’s point of view and from the developer’s point of view.
release of software
- The publishing rules of Internet software are: if it can’t run, you can’t release it; once it can run, you can release it immediately.
Customer Support
- Not so with Viaweb. Our customer support is free because we want to know how our users react. If they’re having trouble using it, we want to know right away so we can reproduce the bug so we can fix it and release a new version.
- Our approach pleases everyone. Customers are happy, calling the manufacturer’s service hotline is free and treated as a tip-off; customer service staff also like this, because it allows them to help users instead of reading operation manuals to users; procedures Developers like this because they can reproduce the bug instead of learning about it through vague second-hand reports.
fully get involved
- If a new version of the software isn’t released until a year later, I put most new ideas on the shelf, at least for a while. But one thing about ideating this kind of thing is that it leads to more ideas. Have you ever noticed that when you sit down to write, half of the ideas come from writing? The same goes for software. Realizing an idea leads to more ideas. So, putting an idea on the shelf means not only delaying its realization, but also delaying all the ideas that are sparked in the process of realization. In fact, putting an idea on the shelf can even limit the generation of new ideas, because you look at the unrealized ideas piled aside and think “I have a lot of new things waiting to be implemented for the next version”, and you I am too lazy to think about more new features.
- The approach of large companies is not to implement new functions immediately, but to make a plan for new functions first. That’s where Viaweb ran into trouble. Investors and analysts ask, what are your plans for the future. The real answer is, we don’t have any plans. We have ideas for improvement, but if we think about how it should be improved, we have already implemented it. What are we going to do in the next 6 months? Make all the best improvements imaginable. I don’t know if I have the guts to say that publicly, but it’s the truth. The word plan is just another way of putting ideas on the shelf. As long as a good idea comes to us, we will start to realize it immediately.
- Of course, there are limitations to writing software this way. It works for a small development team of good and reliable programmers, not for a large software company filled with mediocre people, where it’s not the programmers who come up with good ideas, but a committee collective Approve bad ideas.
Reverse The Mythical Man-Month 9
- Fewer programmers are needed to develop software, which doesn’t just mean more money saved. As the book The Mythical Man-Month points out, adding people to a project often slows it down. As the number of participants increases, the cost of communication between people increases exponentially. The number of people is growing, the meeting time to discuss how the various parts work together is getting longer and longer, the unforeseen interaction is getting bigger and bigger, and the bugs are getting more and more
money problem
- Software companies sometimes employ a distribution model where ISPs distribute Internet software. It’s not good to do that. The server must be under your own control, because you need to continuously improve the hardware and software. If you give up direct control of the server, you give up most of the advantages of Internet software.
Target customers
- Many companies want to know what things can be outsourced and what things cannot be outsourced. One possible answer is that all parts of the company that are not directly exposed to competitive pressure should be outsourced and exposed to it. (By “outsourcing,” I mean hiring another company to execute it, not moving operations overseas.)
Start-up companies
- Startups that build Internet software do the best of everything related to entrepreneurship. Software can be written and run with fewer people and less money. You have to break out of the box and move fast, you can’t succeed by following the rules. You can get a product up and running with just three people, and your only office space is an apartment with a server attached to your ISP. That’s what we do.
- Throughout the history of startups, you will find that they have become smaller, faster, and less like formal enterprises
why not try
- If you’re a hacker and dream of starting your own business, two things might be holding you back from actually starting to take action. One is that you don’t know how to manage a business, and the other is that you are afraid of competition. But in fact, both of these things are electric fences without electricity.
- Make products that users like, and ensure that expenses are less than income.
- Start by making a simple product, first make sure you want to use it yourself. Then, quickly make a 1.0 version and keep improving it, listening closely to user feedback throughout the process. The user is always right, but different users have different requirements. Low-end users demand simplicity and clarity, and high-end users demand that you add new features. The biggest advantage of software is that it makes everything simple. However, the way to do this is to set the defaults correctly, rather than restricting the user’s choices. Don’t be complacent if your competitor’s product sucks. The standard for comparing software should be to see what functions the opponent’s software will have in the future, not what functions it has now. Whenever possible, you use your own software.
- Only a hacker who knows how to design can design software, and it cannot be handed over to a designer who knows little about software. If you’re not going to design and develop your own, don’t start a business.
element of luck
- The advantage of this method of getting rich by creating something of value is not only that it is legal (many other methods are not legal today), but that it is simpler, you just make something that other people need up.
money does not equal wealth
- To create something of value is to create wealth. You’d better figure out what wealth is first.
- I’m only referring here to a specific technical level of “wealth” – something that people exchange money with you. It’s an interesting wealth to study, because it keeps you from starvation, and it’s up to them, not you, to trade money for this wealth.
craftsmen
- Programmers create wealth by sitting in front of a computer. Good software is a valuable thing in itself.
what is the job
- It’s also what you do when you work for a company. However, the various layers within the company make this sometimes not easy to perceive. The work you do within the company is done in collaboration with many people, of which you are only one. You feel that you are working for the needs of the company, and you may not realize that you are actually working to meet a certain need of the customer. Your contribution may not be direct, but the company as a whole has to provide something that people want, or it won’t be profitable.
Scalability and Scalability
- Any individual who gets rich through his own efforts should be able to find both measurability and scalability in him.
Small Team = Scalability
- The revenue generated by the entire company is measurable, and if the company has only one employee, then his contribution can be known exactly. So, the smaller the company, the more accurately you can estimate everyone’s contribution. A healthy start-up may have only 10 employees, so the people factor that affects revenue is at most 10.
amount of users
- Venture capitalists have a checklist full of red flags that say they shouldn’t buy. One of the top signs is that the company is run by tech nerds who only want to solve interesting technical problems without considering the needs of users. You don’t start a startup purely to solve a problem, but to solve problems that users care about
- Thinking of company management as software optimization can also help you avoid another pitfall that venture capitalists worry about—taking too long to develop a product. Hackers are now familiar with this and have coined the term “premature optimization”. Come out with version 1.0 as soon as possible, and then optimize the software based on user feedback, not your own guesswork.
wealth and power
- Remember what a startup is from an economic point of view? Simply put, it is a place where people can work faster.
theft
- The emergence of the middle class makes the total amount of wealth no longer a fixed value, and the distribution of wealth is no longer a zero-sum game. The two founders of Apple, Jobs and Wozniak, made money without making others poorer. In fact, what they created made the material life of human beings richer. They can only do this, or no one will pay them.
technology leverage
- The only thing that cannot be made cheaper by technology is branding.
- Designers of college admissions systems should follow the example of the computer security industry, not assuming that your system is flawless, but figuring out to what extent the vulnerabilities cannot be exploited
axiomatic dissent
- Widening income gap in modern society is a sign of health
- If technology accelerates the widening of productivity differences, if this widening is not reflected in income, there are only three possible explanations: (a) technological innovation stalls; (b) those who generate most of the wealth stop working; (c) People who create wealth don’t get paid.
- In general, you want to avoid absolute poverty, not relative poverty.
8 One way to prevent spam1
- Mathematician Norbert Wiener said that if you race a slave, you become a slave too
9 Designer’s Taste
- What my friend means is that he wants students who are not only technically strong but also able to use technology to make beautiful products
- Good design is simple design. You hear this statement in everything from mathematics to painting. In mathematics, it means that shorter proofs are often better proofs
- Good design is design that never goes out of style. Every mathematical proof is timeless as long as it is error-free
- Good design is inspiring design. The works of British author Jane Austen carry almost no description
- Good design is usually design with a little bit of fun.
- Good design is hard design. If you look at people who do great work, what they all have in common is that they work very hard. If you’re not working hard, you’re probably wasting time. Difficult problems require enormous effort to solve, difficult mathematical proofs require very carefully structured solutions (often fun to do), and the same is true for engineering
- Good design is deceptively easy design. When a good athlete competes, it looks like he won easily, and so does a good designer, whose job looks easy
- A good design is a symmetrical design
- Recursion is especially useful in mathematics and engineering. The inductive proof method is as simple as it is beautiful. In software, a problem that can be solved using recursion usually means that the best solution has been found.
- Good design is design that imitates nature
- Design is to imitate the design of nature
- The purpose of realism is not to leave exactly the same records of life, but to provide a chewing point for your thoughts: your eyes look at something, your hands represent your thoughts, and draw some more interesting content.
- Good design is a redesign. Very few people get things right the first time. The expert approach is to complete an early prototype, come up with plans for modifications, and throw the early prototype away
- Throwing away early prototypes takes confidence, and you have to be able to see where you can improve. For example, people who are just learning to draw are often reluctant to redraw mistakes. They feel that it is very good to be able to paint as it is now, and if some parts are repainted, the result may not be as good as it is now. So, they convince themselves that my painting is passable, and maybe others will see it the same way
- It’s normal to make mistakes. Don’t regard mistakes as disasters, but be brave enough to admit and correct them
- A design is a design that can be replicated. Our attitude towards copying is often a process of negation of negation. Novices imitate others without knowing it, and only after they become proficient do they start to create original works. In the end he will realize that doing things is more important than originality
- When you gradually become passionate about one thing, you will not be satisfied with imitating it. Your taste has entered the second stage, and you start to be original consciously.
- The style you end up developing comes naturally
- Good designs come in batches.
- The biggest factor that promotes the emergence of talents in batches is to bring talented people together to solve a certain problem together. Mutual encouragement is more important than talent. The main reason why Da Vinci became Da Vinci is not only his talent, but more importantly, he lived in Florence at that time, not Milan. Today, human life is much more mobile, but great projects remain disproportionately concentrated in a few hot spots: the Bauhaus, the Manhattan Project, The New Yorker, Lockheed’s Skunk Studios, Xerox’s Palo Alto Research Center.
- Good design is often bold design. In any period of history, people will take certain absurd things as true and believe them so deeply that if you question them, you are in danger of being ostracized or violently injured.
Object-Oriented Programming
- A language that allows you to do something is certainly no worse than a language that forces you to do it, so at least in this respect we can draw a clear conclusion: you should use a language that allows you to program in object-oriented. Whether you use it or not is another question.
11 Programming languages in 100 years
- In my opinion, basic operators are the most important factor for the long-term survival of a language, and other factors are not decisive. It’s a bit like when buying a house you should consider location first. There are ways to make up for problems in other places in the future, but the geographical location cannot be changed.
- The word essay comes from the French verb essayer, which means “try it out.” In this original sense, a dissertation is an article you write to try to figure out something. The same goes for software. I think some of the best software is like a thesis, that is, when the authors actually start writing the software, they don’t really know what the end result will be.
- Inefficient software is not the same as bad software. A language that makes programmers do useless work really sucks. The real inefficiency is wasting the programmer’s time, not the machine’s time. This will become more apparent as computers get faster
secret weapon
- The only thing we’re good at is developing software. We hope this can make up for our disadvantage. We can’t let go of anything that helps us gain an advantage in software development.
Aikido for Startups 7
- Programming Languages Are a Mixture of Technology and Religion
Towards a Mathematical Method
- Lisp and Fortran represent the two major directions of programming language development. The basis of the former is mathematics, and the basis of the latter is hardware architecture. Since then, these two directions have been moving closer to each other. The Lisp language was powerful when it was first designed, and over the next 20 years it increased its speed.
The price of following the herd
- Therefore, the stronger the programming ability of the language, the shorter the program written (of course it does not refer to the number of characters, but refers to the independent grammatical unit
a trick
- Within large organizations, there is a term for this practice of following the majority’s choices, called “industry best practice.” The reason for this word is actually so that your manager can shirk responsibility. Since I choose the best practice in the industry, if it is not successful and the project fails, then you can’t blame me, because the person who makes the choice is not me, but the entire industry
Programmability
- A really good programming language should be both clean and messy. “Clean” means that it is clearly designed, that the kernel is made up of a small number of operators that are easy to understand, each with a very complete independent purpose. “Confused” means that it allows hackers to use it in their own way. The C language is an example of this, as was the early Lisp language. A real hacker language always has a slightly uninhibited personality.
redesign
- Even if there are only two people on the committee, it will still hinder “redesign”. A typical example is that different people are responsible for each interface inside the software. At this time, unless both people agree to change the interface, the interface cannot be changed. Therefore, in reality, although the software functions are becoming more and more powerful, the internal interface is often unchanged and becomes a dragging part of the entire system.
15 Design and Research
- The difference between design and research seems to be that the former pursues “good”, while the latter pursues “new”. Excellent design is not necessarily “new”, but must be “good”; excellent research is not necessarily “good”, but must be “new”. I think these two paths will eventually cross: only the application of “new” ideas and theories will lead to the best design that surpasses the previous ones; The best research will be born. So, in the end, both design and research lead to the same place, they just take different routes.
- In the software field, the design idea of being close to users is summarized as the “Worse is Better” mode2. This model actually contains several different ideas, so people are still debating whether it really holds true. However, one of the things that is true is that if you are designing something new, you should come up with a prototype as soon as possible and listen to users.
- Morale is a key factor in design. I’m surprised how little this is mentioned. One of my first art teachers told me: If you think drawing something is boring, then what you draw will be really boring. Suppose you have to draw a building, and you decide to start with each brick. You think you can stick to it, but when you are halfway through the drawing, you suddenly get bored, so instead of carefully observing each brick and drawing their different characteristics, you sloppyly put the bricks in a mechanical and repetitive way. It’s done. In this way, the effect of your work is very poor, and it is even better not to use realistic techniques in the first place, just to hint at the existence of bricks.
- Prototyping first and working your way to the finished product is good for morale because it allows you to see the results of your work at all times. When developing software, I have a rule: at all times, the code must be able to run. If you can see the results of the code you are writing in an hour, it is like seeing a reward at your fingertips not far away, so you will be motivated and inspired.
- nice
This article is transferred from: https://www.ixiqin.com/2023/08/07/hacker-and-painters-notes/
This site is only for collection, and the copyright belongs to the original author.