Vademecum - Hacker's handbook ============================= Don't panic! It's funny! ;-) Being a hacker is all about Curiosity. Knowledge, like Ignorance, is a fundamental step of our journey. They are steps: both destinations and new starting points. This is just a minimal reference book about hackers' wisdom that you can use to study and teach our way to the Universe and the Human mind. You won't find everything. Neither here nor elsewhere. But here you can read what you need to follow us in your way. This handbook is organized with a few small introductory texts that describe the invariant aspects of our culture followed by a list of hackers whose lives convey important lessons for all of us and by a pocket dictionary that provide useful definitions. The Vademecum itself is a hack to teach a whole Culture in 2^16 byte. Hackers' Ethics --------------- Technology is a prosecution of Politics by other means. Hackers acknowledge this responsibility and serve Humanity through their creative Curiosity. Curiosity is our core value, what qualify us as hackers. But in our pursuit we also follow other values such as 1. Freedom: we have the right to learn what we want in the way we want 2. Communion: the more people know, the more they can learn and share 3. Intellectual Honesty: we can be wrong but not pretend we are not As complex persons from cultures all over the world, we often have other values that stem from our beliefs, religion or whatever, but these values do not conflict with the values above. Are you an hacker? ------------------ With a strong commitment to the values above, everybody can hack. More: soon everybody will hack. Just like everybody can write now. However some people have an innate talent to hack. Natural hackers are often easy to identify because they often challenge common assumptions, ask stupid questions and question dumb answers. Young natural hackers might even look weird to their peers because they do not share common interests and they have different priorities. Often they are oblivious to standard social norms such as subordination to authorities and status symbols. Such strange behaviour depends on their powerful innate Curiosity that slowly makes them see the world in a different way. A non conventional sense of humor and a strong habit to critical thinking are common expressions of this internal force at work. If you see yourself into this description, there are good chances that you are a natural hacker. This doesn't grant you anything. Nobody care. But you might have a good time hacking and lurking with hackers. Informatics ----------- Hackers can hack anything but often computers are our favorite toys. Several hackers are polyglot programmers, master several operating systems, understand network topologies and properly use cryptography. Some venerable hackers also build new hardware devices from scratch. While hackers have always been present among humans, the term "hacker" was coined around 1960, in the A.I. department at M.I.T. mainly because of the peculiar nature of Computers, whose constraints are pretty different from the physical ones. When you talk about hacking, most people will think of computers, while hackers will deduce from context if you are talking about food, parenting or whatever. This Vademecum uses Informatics to convey our wisdom. But there's more. People ------ Archimedes of Syracuse Heron of Alexandria Muḥammad ibn Mūsā al-Khwārizmī Leonardo da Vinci Blaise Pascal Isaac Newton Augusta Ada King-Noel Phoebe Sarah Hertha Ayrton Antonio Santi Giuseppe Meucci Alan Mathison Turing Edsger Wybe Dijkstra Pier Giorgio Perotto Niklaus Emil Wirth Kenneth Lane Thompson Richard Matthew Stallman William Henry Gates III Hans Thomas Reiser Loyd Blankenship Terrence Andrew Davis Linus Benedict Torvalds Cinap Lenrek Jon Lech Johansen Aaron Hillel Swartz Alexandra Asanovna Elbakyan Glossary -------- As an international movement, hackers are used to adopt the most widely used lingua franca of their period. In the past, such language has been Greek, Latin, Arabic, Franch, Chinese (and actually many others depending on the latitude and age). After the second World War, the Marshall Plan exported the U.S.A. market and culture worldwide and English (that was already spoken in several U.K. colonies) became the usual means of communication among people of different linguistic backgrounds. This obviously affected science and technology, thanks to the huge U.S.A. investments during the Cold War. As a product of its times, this Vademecum is in English, but we want to acknowledge the contribution of all the different cultures that over the history of mankind stratified into our language. Thus each term is followed by the known etymology. Agent: (Latin: ago, "I do") An identifiable entity that is modifying the state of a system. Algorithm: (Persian: خوارزمی‎, Muḥammad ibn Mūsā al-Khwārizmī, mathematician) An unambiguous specification of how to solve a class of problems. Application (also App): (Latin: applicō, "I attach" and "I apply") A set of programs that let humans apply computers to a specific goal. By constraining the users' access to the underlying hardware, an application turns a computer into a specialized (but more useful) tool. Bit: (English: bita, "a bite") Smallest possibile size of a datum, usually represented as 0 or 1. E.g. Please, flip that bit. Byte: (English: bite) A sequence of 8 adjacent bits that can be stored or operated on as a unit by a computer. It can represent one of 256 alternative information. Computer: (Latin: computāre, "calculate") Who (or what) calculates. An extremely handy device for realizing any conceivable mechanism by representing computations and without changing a single wire. Cracker: (Middle English: cracker, "an obnoxious person") A person who collect and use knowledge to gain some sort of Power. Usually poses as a hacker, but just pretend to be curious. E.g. Who's the cracker that got fame by poisoning the Jargon File? Cryptography: (Greek: κρυπτός γράφειν, "secret writing") The set of techniques to share secret messages with one or more persons. Curiosity: (Latin: cūriōsus, "curious") The force that moves hackers' action. The will to learn, to understand. E.g. Yes, I am a criminal. My crime is that of curiosity. Datum, pl. Data: (Latin: datum, "given") One of the possibile representations of an information that can be transferred and interpreted as informations by humans. E.g. We will build a model of the climate change from the recorded data. Diversion: (Latin: dīvertere, "to diverge") The act of changing direction, of exploring a different path, for fun. Diversions are small hacks: they are fun, challenging and insightful. Entertainment: (Latin: tenere intra, "to keep inside") Something that block, bridle or tame people through contents. E.g. Panis et Circenses. Few crumbs and entertainment can kill revolutions. Hacker: A person deeply moved by Curiosity. Someone who struggle for knowledge. Hack: What hackers do. An experiment. A smart solution to a problem. HyperText: (Greek: ὑπερ, "beyond"; Latin: textus, "something woven") A computer representation of interrelated informations as a graph of textual documents interconnected through user's clicks on one or more relevant and easily identifiable words. E.g. A scientific hypertext. Hypermedia: (Greek: ὑπερ, "beyond"; Latin: medium, "in the middle", "between") An extended HyperText that can also represent images, audio or video. E.g. An artistic hypermedia. Informatics: (French: informatique, "information électronique ou automatique") The field of human knowledge that study how informations can be transferred, stored, represented, interpreted and transformed and the set of techniques that apply such knowledge. Information: (Latin: informo, "I build in my mind") An idea, a construct of a human mind that can be shared with other humans. Interpreter: (Latin: interpretor, "I explain" or "I understand") Someone or something who translate, on the fly, between languages. A program that executes another program (see Script). Kernel: (Proto-Germanic: *kurnilo, "seed" or "grain") A program that constitutes the central core of a computer operating system with complete control over everything that occurs in the system. Kludge: (German: klug, "cleaver", "canny" or "ingenious") A workaround or quick-and-dirty solution that is clumsy, inelegant, inefficient, difficult to extend and hard to maintain. Language: (Latin: lingua, "tongue") A comunication system among distinct and usually different agents. E.g. Programming languages are used to control computers. Man in the Middle (also MitM): A subversion of users' assumptions by an agent that is able to intercept (and modify) the contents of the comunications among them, just by lurking on the path crossed by the messages. Mathematics: (Greek: Μαθημα τικὴ, "the art of learning") The study of the structure of the constructs of human mind (concepts, patterns, perceptions...) that can be precisely communicated through language. Network: A group of agents that comunicates. E.g. A computer network. Operating System (also OS): (Greek: σύστημα, "a whole from parts"; Latin: operārī, "to work") A set of programs that enable humans to work with a computer. Such programs provide foundational services to the users such as access to the underlying hardware through high level abstractions, a user interface, basic security (authentication, authorization) and often the possibility to create/install/execute/control new programs. Program: (Latin: programma, "a public notice") A sequence of instructions that a agent can perform. It tries to represent as Code an Algorithm from the programmer's mind. As a verb, to write such sequence of instructions. E.g. A computer program. A diet program. She is programming. Protocol: (Latin: protocollum, "the first sheet of a volume") An Algorithm that address a comunication problem by specifying how to exchange (represent and interpret) a certain kind of informations as data. E.g. Internet Protocol. HyperText Transfer Protocol. Network Time Protocol. Science: (Latin: scire, "to know") Science is the process of forcing the human's perceptions of reality into the structure described by Mathematics, so that it can be shared among humans. Script: (Latin: scrīptum, "anything written") A human-readable program performed by an interpreter. Steganography: (Greek: στεγανός γράφειν, "covered writing") The practice of concealing a message within another message. E.g. Humans achieved cool knowledge employing risible steganography. Stupid: (Latin: stupeō, "I'm amazed") Who surprises. Who challenges our assumptions, forcing us to learn more. E.g. This is a stupid hack! ;-) Technology: (Greek: τέχνη λογία, "learning how to build things") Technology is the process of forcing the human's will onto reality, through the creative use of the knowledge acquired by Science. User: (Latin: ūtor, "I use") A human using a program (as seen from the programmer's perspective). Users and programmers are humans collaborating asynchronously, even when both use automated proxies (e.g. the user is scripting the program). Such collaboration produces a feedback loop in both directions, to the extent that the programmers can manipulate the users' beliefs and the user can subvert the programmers' assumptions. Hackers are aware of such collaboration and consider the persons on the other side in their complexity, beyond the limited scope of the program. User Interface (also UI): (Latin: ūtor, "I use"; Latin: inter-faciō, "I build between") One or more programs (or parts of programs) that constitute the perceptible surface of an interactive application. It collects the human messages to the application and represent the application feedbacks to the user. A UI can educate users or fool them, can be intuitive or deceptive, beautiful or ugly, usable or cumbersome. E.g. Firefox fosters Insecurity through UI Obscurity: see about:config.