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.

Leave a Reply

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>