Hacking and Non-hacking

GeekDad’s review of Hacking: The Art of Exploitation by Jon Erickson innocently catalyzed the following rant:

The distinction between hacking and non-hacking is the distinction between repurposing and purposing. In order to tell one from the other, you have to have a clear and complete understanding of intended use.

Take a claw hammer. Two ends, two intended uses: Bash nails, pull nails. Open a paint can with the claw: Hacking.

Now take a hunk of software. The only clear way to state an “intended use” is with a reproducible acceptance test. The only complete way to state “intended uses” is to assemble a suite of acceptance tests. If a test passes, that’s non-hacking. If a test fails, that’s a bug. Any use not covered byte-for-byte and click-for-click by an acceptance test is an unintended use: Hacking. Every user is a hacker.

0 Responses to “Hacking and Non-hacking”


  1. No Comments

Leave a Reply