1
Adopt the mindset of a hacker.
Hackers solve problems and build things, and they believe in freedom
and voluntary mutual help. To be accepted as a hacker, you have to
behave as though you have this kind of attitude yourself. And to behave
as though you have the attitude, you have to really believe the
attitude. So, if you want to be a hacker, repeat the following things
until you believe them:
- The world is full of fascinating problems waiting to be solved.
Successful athletes get their motivation from a kind of physical delight
in making their bodies perform, in pushing themselves past their own
physical limits. Similarly, you have to get a basic thrill from solving
problems, sharpening your skills, and exercising your intelligence.
- No problem should ever have to be solved twice. The thinking time of
other hackers is precious — so much so that it's almost a moral duty
for you to share information, solve problems and then give the solutions
away just so other hackers can solve new problems instead of having to
perpetually re-address old ones.
- Boredom and drudgery are evil. When hackers are bored or have to
drudge at stupid repetitive work, they aren't doing what only they can
do — solve new problems. To behave like a hacker, you have to want to
automate away the boring bits as much as possible.
- Freedom is good. The authoritarian attitude has to be fought
wherever you find it, lest it smother you and other hackers. Not all
authority figures are authoritarian. However, authoritarians thrive on
censorship and secrecy, and they distrust voluntary cooperation and
information-sharing.
- Attitude is no substitute for competence. Hackers won't let posers
waste their time, but they recognize competence — especially competence
at hacking, but competence at anything is valued. Competence at
demanding skills that few can master is especially good, and competence
at demanding skills that involve mental acuteness, craft, and
concentration is best.
2
Earn respect as a hacker.
Like most cultures without a monetary economy, hackerdom runs on
reputation. You're trying to solve interesting problems, but how
interesting they are, and whether your solutions are really good, is
something that only your technical peers or superiors are normally
equipped to judge. This is why you aren't really a hacker until other
hackers consistently call you one. Specifically, hackerdom is what
anthropologists call a "gift culture." You gain status and reputation in
it not by dominating other people, nor by being beautiful, nor by
having things other people want, but rather by giving things away: your
time, your creativity, and the results of your skill.
- Write open-source software.
Write programs that other hackers think are fun or useful, and give the
program sources away to the whole hacker culture to use. Hackerdom's
most revered demigods are people who have written large, capable
programs that met a widespread need and given them away, so that now
everyone uses them.
- Help test and debug open-source software. Any open-source author
who's thinking will tell you that good beta-testers (who know how to
describe symptoms clearly, localize problems well, can tolerate bugs in a
quickie release, and are willing to apply a few simple diagnostic
routines) are worth their weight in rubies. Try to find a program under
development that you're interested in and be a good beta-tester. There's
a natural progression from helping test programs to helping debug them
to helping modify them. You'll learn a lot this way, and generate good karma with people who will help you later on.
- Publish useful information. Another good thing is to collect and
filter useful and interesting information into web pages or documents
like Frequently Asked Questions (FAQ) lists, and make those generally
available. Maintainers of major technical FAQs get almost as much
respect as open-source authors.
- Help keep the infrastructure working. The hacker culture (and the
engineering development of the Internet, for that matter) is run by
volunteers. There's a lot of necessary but unglamorous work that needs
done to keep it going — administering mailing lists, moderating
newsgroups, maintaining large software archive sites, developing RFCs
and other technical standards. People who do this sort of thing well get
a lot of respect, because everybody knows these jobs are huge time
sinks and not as much fun as playing with code. Doing them shows
dedication.
- Serve the hacker culture itself. This is not something you'll be
positioned to do until you've been around for a while and become
well-known for one of the four previous items. The hacker culture
doesn't have leaders, exactly, but it does have culture heroes and
tribal elders and historians and spokespeople. When you've been in the
trenches long enough, you may grow into one of these. Beware: hackers
distrust blatant ego in their tribal elders, so visibly reaching for
this kind of fame is dangerous. Rather than striving for it, you have to
sort of position yourself so it drops in your lap, and then be modest and gracious about your status.
Learning Programming
1
Learn how to program.
The best way to learn is to read some stuff written by masters of the
form, write some things yourself, read a lot more, write a little more,
read a lot more, write some more, and repeat until your writing begins
to develop the kind of strength and economy you see in your models. To
be a real hacker, however, you need to get to the point where you can
learn a new language in days by relating what's in the manual to what
you already know. This means you should learn several very different
languages. Besides being the most important hacking languages, the
following represent very different approaches to programming, and each
will educate you in valuable ways:
- Python
is a good language to start off with because it's cleanly designed,
well documented, and relatively kind to beginners. Despite being a good
first language, it is not just a toy; it is very powerful and flexible
and well-suited for large projects. Java is an alternative, but its value as a first programming language has been questioned.[1]
- If you get into serious programming, you will have to learn C, the core language of Unix (C++
is very closely related to C; if you know one, learning the other will
not be difficult). C is very efficient with your machine's resources,
but will soak up huge amounts of your time on debugging and is often
avoided for that reason (unless machine efficiency is essential).
- Perl
is worth learning for practical reasons; it's very widely used for
active web pages and system administration, so that even if you never
write Perl you should learn to read it. Many people use Perl to avoid C
programming on jobs that don't require C's machine efficiency.
- LISP is worth learning for a different reason — 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. You can get some
beginning experience with LISP fairly easily by writing and modifying
editing modes for the Emacs text editor, or Script-Fu plugins for the GIMP.
Familiarizing Yourself With Unix
1
Get one of the open-source Unixes and learn to use and run it.
Unix is the operating system of the Internet. While you can learn to
use the Internet without knowing Unix, you can't be an Internet hacker
without understanding Unix. For this reason, the hacker culture today is
pretty strongly Unix-centered. So, bring up a Unix (like Linux
but there are other ways and yes, you can run both Linux and Microsoft
Windows on the same machine). Learn it. Run it. Tinker with it. Talk to
the Internet with it. Read the code. Modify the code.
- There are other operating systems in the world besides Unix. But
they're distributed in binary — you can't read the code, and you can't
modify it. Trying to learn to hack on a Microsoft Windows machine or
under any other closed-source system is like trying to learn to dance
while wearing a body cast. Under Mac OS X it's possible, but only part
of the system is open source — you're likely to hit a lot of walls, and
you have to be careful not to develop the bad habit of depending on
Apple's proprietary code.
- Download Linux online[2] or (better idea) find a local Linux user group to help you with installation.
- While other distros have their own areas of strength, Ubuntu is far and away the most accessible to Linux newbies.
- A good way to dip your toes in the water is to boot up what Linux
fans call a live CD, a distribution that runs entirely off a CD without
having to modify your hard disk. This is a way to get a look at the
possibilities without having to do anything drastic.
Learning HTML
Learn how to use the World Wide Web and write HTML.
Most of the things the hacker culture has built do their work out of
sight, helping run factories and offices and universities without any
obvious impact on how non-hackers live. The Web is the one big
exception, the huge shiny hacker toy that even politicians admit has
changed the world. For this reason alone (and a lot of other good ones
as well) you need to learn how to work the Web. This doesn't just mean
learning how to drive a browser (anyone can do that), but learning
how to write HTML,
the Web's markup language. If you don't know how to program, writing
HTML will teach you some mental habits that will help you learn. So
build a home page. Try to stick to
XHTML, which is a cleaner language than classic
HTML.
No comments :
Post a Comment