Hacking is a subject that is near and dear to my heart. I grew up a social outcast who embraced technology. My family did not come from very rich means, but we lived a typical average American life: Two parents (still together), three boys, placed in the suburbs of a Midwestern city, with pets coming and going. Given that my love for technology came about at an early age (I loved to play Nintendo and even preferred Atari/Bally game systems at times; I adopted the Internet far later than my friends in favor of local BBSes like Virtual Arcade), it wasn’t economically feasible to own modern computer equipment at that time. Younger readers of this blog post may not remember, but computers then were exorbitantly expensive and going through a very rapid evolutionary pace. I learned command-line BASIC on Apple IIe computers and very occasionally got to use a friend’s 486 computer to play Doom on and surf the web (which was pretty darn boring back then).
As I grew older, my parents purchased a state-of-the-art computer system with 17″ monitor (you have no idea how rare this was then), a Pentium 100 Mhz CPU, 1 GB hard drive (also unbelievably large), and 64 MB of RAM if I recall correctly. This Gateway 2000-branded machine probably set them back over $3,000, as my father pulled out all the stops one Christmas for us. It was nothing short of an amazing product, and completely out of left field – my parents didn’t lavish expensive gifts on us (my grandfather tended to), so this was quite rare.
I got in my fair share of trouble with it, but the intellectual curiosity of hacking was always there. Programming, not so much – my father bought me Visual Basic 4 one Christmas at my constant nagging, but I never ended up doing much with it. I learned much later in life that programming only interested me if it involved a project that I had to complete myself – writing lines of code to satisfy someone else’s ideas or basic examples in a book were no more exciting to me than memorizing poetry.
I recently saw The Social Network, also known as The Facebook Movie. My first reaction to the trailers were: “Oh great, the Facebook movie. I don’t want to see this.” However, Zuckerberg’s background was sufficiently interesting to me, and the people I went with were very good friends, so I decided not to shut it out for no real good reason. There were many times I uncontrollably smiled throughout the movie – when Zuckerberg’s hacker mind is being spoken via narration as he frantically hammers out line after line of Perl to download and scrape pictures from Harvard’s various repositories; when Eduardo and he discuss the algorithm to rank women on campus (a variation of the Elo system used in Chess and Magic: The Gathering); the blurred poster of the Hacker’s Manifesto posted above his dorm room desk; and the code-off where he makes interns take shots for every 10th line of code they write (a genius idea – that’s how you keep terse code in your projects). It appealed to me in a way that few people can understand – Zuckerberg at his very core was a hacker.
Hacking does not have a simple definition. My current employer where I do some contract programming/scripting/boring work asked what programming experience I had. I told him that I was a hacker, not a programmer. He responded that there were many levels of programmer – junior, senior, and so forth. I told him that I was aware of the hierarchy installed in most businesses, but that I fell outside of them. I don’t write lines of code. I don’t check things in to repositories with any sense of responsibility. I hack together lines of code to complete a project in the best way I know how. I steal code from others and stand on the shoulders of giants. As Zuckerberg’s actor said in The Social Network, “I think if your clients want to sit on my shoulders and call themselves tall, they have the right to give it a try—but there’s no requirement that I enjoy sitting here listening to people lie.” I do not call myself tall in this regard; it is ridiculous to even suggest it.
No, what I am good at is solving the algorithmic. My resume has gone through various iterations, but the current technology-driven one simply lists a few notable companies I’ve worked for and the assurance that if your problem is algorithmic in nature, that I can either solve it myself or find you the person you need to solve it. This is perhaps the one thing I am proud of (having dispensed of pride in most other areas). My brain works tirelessly to solve algorithms; it works like a brute force program that can know the salt used in complex problems without needing to guess. It gives me a huge head start in anything iterative. If this makes sense to you, you might need to consult a mental health professional.
My creativity is paired irreversibly with my love for the algorithmic. I have the luxury of having a brain that can conceptualize a problem and the various ways to attack said problem using all sorts of methods – ranging from the simple to the complex. It does this automatically, and attempts to visualize it for others fails utterly and completely. What I consider to be “creative” is not what nearly anyone else would call it, but over time I’ve come to understand that how I reverse engineer problems is the source of my creativity.
This love for the algorithmic does not apply only in math, science, and computers – in fact, those are the areas where I am most weak. Like Kirtan Loor in the Rogue Squadron books (talk about a nerd reference; at least Zac will appreciate it), I rely too heavily on my memory and my previous achievements in those fields. This hampers me and drags me down, often completely turning off my creativity. It is when I approach unknown subjects that this love for the algorithmic truly blossoms. Two examples follow.
Recently I found myself in the position of needing to figure out how to crack a wireless network (my own, of course – it would be illegal otherwise!). I knew that WEP was insecure, but didn’t know much about the technology. Doing some research, I found it utterly fascinating exactly how insecure it was and how easy it would be to acquire the key. Moving on to WPA-TKIP, I read tutorial after tutorial with poorly written instructions that didn’t really help me – so I moved on to all the boring stuff. Understanding the root problem rather than duplicating someone’s instructions always worked better for me and provided me with a better sense of accomplishment when I finished it, anyway. In many senses, cracking WPA was easier, even if they used TKIP since WPA was still based on the Pre-Shared Key (PSK) concept. What you needed to do was deauthorize a connection, forcing them to re-initiate the handshake with the router, capture the handshake, and then crack this handshake to get the key. The problem, of course, is that you have to brute force the key with rainbow tables, word lists, or outright guess it. Cracking it on a standard powerful desktop could take days, if not weeks. Enter WPA Cracker – a cloud-based solution that takes the handshake and runs it against their 400+ CPU cluster, giving you a result (if there is one) within an hour – for $17. Amazing. This is one of the ways how technology excites me – leveraging the use of redundant and cheap resources en masse to provide distributed computing power never before conceptualized, much less implemented!
I have thought long and hard about the biomechanics of throwing a baseball. This is incredibly boring for nearly everyone I know outside of a handful of crazies. The very nature of this industry promotes closed-minded analysis and protecting the data that universities and other institutions collect. Kinesiologists and others who do studies on pitchers in their $200,000+ sports labs are not interested in sharing their methods or data with a Seattle-based hacker who is trying to build his own private motion capture laboratory on a budget of $1,000. To me, this project represents what I believe hacking to be – freeing information from those who would desperately seek to protect it for their own selfish means. Doctors and people high up in academia look down on me for approaching this problem in ways that no other person would consider valid – a college dropout self-studying from the same texts available at premier universities, hiring interns who are far more experienced, and experimenting on his own body. But wait: All of a sudden, we aren’t just talking about hacking, are we? What I feel I am doing with the motion capture lab and the desire to make as much of it as possible open source represents the true nature of science. For science to be truly available to everyone, it must be repeatable and verifiable. I plan on making my lab on a shoestring budget and duplicating the efforts for others who want to follow in my footsteps. My interests go beyond the entrepreneurial and into the scientific – even if the others do not see me as their equal because of missing letters after my name.
Hacking is not something that can be defined. It manifests itself differently in each person. To attempt to describe it with a static definition would be like telling someone that a simple definition exists for the concept of creativity, or love. Hacking is a way of thinking – a way of building and deconstructing – in paths that are annoyingly incomplete, terribly cluttered, and horribly documented.
And ruthlessly efficient.