How to Become A Hacker

Deven Trinity Blake

<trinity@trinity.moe>

No Copyright 🄯 2021 Deven T. Blake


Why This Document?

A lot of hackers consider Eric S. Raymond's original How to Become A Hacker to be definitive, for good reason. It explains the "hacker philosophy", some key things at which one should be good, and is a good compass that points to What to Learn Next. I myself stumbled upon the document maybe a decade or so ago, when I was a small impressionable child, and know half of what I do because of where it pointed me. I think, however, that How to Become A Hacker is a bit dated, so I'm writing this to be a nice complementary piece for those to read after they read esr's original.

If you are reading a snapshot of this document offline, the current version lives at http://www.trinity.moe/hacker-howto.

Basic Hacking Skills

1. Learn how to program

Python is an okay first language as long as you don't take it too seriously. As said by smarter people than me, Python is a glue language. It's slow and a bit basic, but its errors are often easy to solve, so do as much as you can with Python and Python libraries, and do the rest in faster languages.

Never touch Java. Not even once. While at one point it was promising, it's become a monstrous beast and it must be slain through attrition.

When you are good at programming you will think outside of programming languages. Programming languages are tools for a job. Some are better suited to some tasks than others. For example, I would use C as a language for building utilities for myself, as I want them to be blisteringly fast and I know that's easier to do in C than Python. I've written utilities in Python to know how I want them to behave, and then perfected them by rewriting them in C. This being said, when learning a language for the first time, master it, then move on.

2. Get one of the open-source Unixes and learn to use and run it.

Don't try to program on Microsoft Windows. Seriously. This is the one mistake almost all beginners make; they'll install fifty different tools onto their MS Windows system in order to make a simple program that doesn't really work because their tutorial only works for UNIX. Just install a Free UNIX-clone ("clone" in this context is not a bad thing; most Free UNIX-clones are much more practical in this world than the original) and learn how to work in it. In fact, you may want to learn shell before anything else. When you know how to

  1. Make a directory,
  2. Make an empty file within that directory,
  3. Overwrite the file with exactly 500B of random data,
  4. Mark the file as executable,
  5. Print the file to the terminal as readable, hexadecimal data,
  6. And remove the directory and the file,
you will know enough to start on your journey into hacking.

BSDs are awesome and I use a BSD myself, but perhaps start with Linux as there's a much bigger community to help you there. There are no longer any good non-UNIX operating systems. The importance of choosing a Free operating system cannot be understated. It's hard to learn from your OS's code when your OS's code is only readable by those within the corporation that made the OS.

Don't use Ubuntu as it suffers from many of the flaws that drive non-hacker Windows users to Linux-based systems. Instead, try Linux Mint, which is based on Ubuntu but without the more annoying issues.

3. Learn how to use the World Wide Web and write HTML.

View the source code of the original How to Become A Hacker and then read the source code to this webpage.

4. If you don't have functional English, learn it.

It's unfortunate that English has become the lingua franca of the Internet. But it's true, it has, and it's more or less required learning if you want to become a hacker.

5. Learn to use a search engine.

This is my own tip. This is the most important thing on this page. How to accomplish this is an exercise left to the reader.