Close

Hackers make things possible

Published

There is a beautiful little book named "Hacker's Delight" that was published in 2003. It has nothing to do with breaking into computers. This is not what hacking is all about, or at least, breaking into computers was never the original purpose and intent of hacking.

So what is hacking and what does a hacker do? This particular book is full of algorithms, short cuts and programming tricks. How do you write the shortest, prettiest or fastest program for multiplying two numbers or finding the inverse of a number? How do you divide really fast? It turns out that division can be accomplished by first computing the inverse of the number and storing it. These stored quantities are called magic numbers, and they allow one to convert division by a constant into a multiplication, which is significantly faster.

These are important fragments of programs. They are pearls; like a jeweler forms a beautiful, ornamental jewel from many smaller pieces, a programmer puts these fragments together and creates his program. They are important because the operations are performed several million times per second to read music from a CD and play. Just about anything we do with digital media (voice, music, video) involves small steps in things we do with numbers: add, multiply, invert and divide. A hacker is a relentless inventor. The things he or she invents are small pieces of algorithms, short cuts and programming tricks. "Hacker's Delight" is just one of the thousands of articles and books that document them; however, some are not even documented. They are hiding inside programs, waiting to be discovered by a younger generation of programmers. Like older pirates leaving treasure buried on distant uninhabited islands for younger pirates, younger hackers discover the goodies left for them by their elders.

Hackers make things possible. Without their inventions many of today's computers and software would not have come alive. Sometimes I imagine a world where hackers are dumb or lazy or both, in which neither computers nor their software would have been pretty, sleek, fast or inventive. It would have been a dull, slow and pretty boring world! Many people, including myself, consider Richard Hamming as the original hacker, an American mathematician who made many contributions to computer science. There are other names, of course; for example, Marvin Minsky, the father of Artificial Intelligence. What Minsky invented was fundamental and prodigious. However, we tend to reserve the title of hacker for those who write programs and who invent many (little or big) things along the road. Richard Hamming is that person. He was one of the first recipients of the Turing Award, the equivalent of the Nobel Prize for computer science.

Hamming was a relentless inventor; every place he went, everything he worked on he invented something, little or big. The little things he carved out turned out to be tips of undiscovered icebergs made into colossal theories by others. In 1950, he invented a small matrix with seven columns and four rows that makes it possible to send messages over a noisy channel and still receive it at the other end clearly. This seemingly small invention was highly useful and practical; it has become a standard wireless communication. The Hamming code itself gave birth to what is now called linear codes, a vast field of different kinds of error-correcting codes in which there are hundreds of articles and books and many tens of doctoral dissertations.

He has invented many little things just like that. I was fortunate to have met this amazing hacker in 1985. For some reason, he always wore a colorful jacket. He was a joker.

Hamming received a bachelor's degree in mathematics from Chicago in 1937, and worked on the Manhattan project alongside the best physicists in the world, von Neumann, Oppenheimer and Fermi. His job was to program the day's "electronic computers" to solve the equations of solutions desired by the physicists. I guess that would make you a hacker, the original hacker. The world knew nothing of these "electronic computers," which were nothing but rooms full of clumsy, noisy and power-hungry electric relays. One blew out every few seconds!

How can one be a hacker? First you need to be a programmer. You need to learn a programming language and write programs that will do little things; for example, bounce a red ball falling from a height. Keep making it more interesting: When the ball hits the floor, it should change shape a bit, right? It should slightly compress vertically due to the force applied by the floor. How can you demonstrate that in your program? The ball should fall according to Newton's Law, with an acceleration rate of 9.81 meters per square second - that is, it should not fall with a constant speed; every second the speed should increase a bit. Keep thinking and keep inventing. If you love what you do, you will be a hacker.

Hackers are not thieves that steal other people's mundane data or stuff. If anything, they borrow or steal ideas from humanity in order to give back even more dazzling pearls.

Share on Facebook Share on Twitter