In praise of hacking

A funny thing happened towards the end of high school: I thought I knew everything.

Fast forward a year or so to the beginning of the first spring break of college. I’m sitting in Logan airport, through security, with time to kill. I open up my laptop and start programming. My reason for programming, like my reason for flying, was not business but pleasure. I was programming for the fun of it! And I wound up doing ugly things in code. For example, I needed to sort a list of positive numbers. I added a -1 to the front of it so I wouldn’t have to deal with that boundary condition, then removed it when it was sorted. I figured out Xcode’s debugger, which is a really useful tool that allows you to see where your code is looping and what the values of variables are. I couldn’t figure out how to do something the right way, so I found a way around it, and when I couldn’t get part of it to work, I found away around that. Yes it’s ugly, and any programmer who knew what he (or she!) was doing would groan and wince. But the point is I made a complicated working program using only what I knew, without so much as an internet connection (damn you Logan) for help. I hacked a program together. Three hours passed very quickly, and I fell asleep on the planes back. I would occasionally be rudely jolted awake from my first dreams in code.

(If you must know, it calculates then sorts the wavelengths of spectral emission lines according to the Rydberg formula, including a custom class for numbers in scientific notation and output using SI prefixes. Yeah, that’s why I didn’t tell you.)

Back home, I (re)discovered that my desk chair broke the last time I was here. One of the 5 prongs on the star that holds the wheels had broken off when I leaned back. Luckily, a replacement part had since magically appeared. (It’s a really comfortable chair, and I’m home so infrequently that it’s not worth replacing.) So first I had to get the old broken star off. I tried hammering it, figuring it had slid up the post over the years, but it wouldn’t slide back down. I wound up taking the base of the chair off so I could work easier, cutting through the hard plastic in two places until it was in two parts, which still didn’t come off until I broke the glue holding them on. And then I had to attach the new piece in such a way that it hopefully won’t slide up. There was a metal ring that held the previous piece in place that had gotten squeezed bigger. How much does thermal expansion matter?, I wondered as I placed the ring in the sink under cold water. (Answer: not much, although I didn’t have liquid nitrogen.) I wound up using a pocket knife to widen the hole in the new piece and sandpaper to smooth it out. Yes I know files would have been the preferred tool, and that a ring the fit the new piece would be preferable to that. So I found a way around my way around again. But when I finished turning the allen wrench to put the whole thing together again, I had successfully hacked my desk chair.

Hacking is the ability to solve problems using sub-optimal solutions, although “sub-optimal” is in the context of the problem itself. Hacks are more appealing when you account for the relative ease of execution and lack of required training. Yeah, says the hacker, it would be better to do this one way, but I can’t get it to work like that so I’m doing it another way. Without going into a FIRST rant, this is a skill that is both vital and rare in my generation, who have been taught to solve problems like paint-by-numbers. The real problems facing the world are applied, which means that there is no right answer. Any answer, even a hack, is making progress.

Knowledge is organic; it is interconnected in a complex web. It’s not immediately apparent what connects with what. What will I do now that influences me a week, a year, a decade later? On Purim, the Jewish Mardi Gras, when we celebrate the quirky randomness that may have some underlying order and meaning. God’s name appears nowhere in the book, but He’s alluded to just when things look the bleakest, which starts a chain of events that reverse Haman’s schemes.

Like that old TV show Get Smart, life is a struggle between chaos and control. If you learn a little, you learn what you don’t know. If you learn a lot, you’ll learn what you can never know, and whether you call it Heisenberg or free will or God doesn’t really matter. And yet you can see glimpses of how the whole is put together. The whole, which is greater in value and fewer in number than the sum of its parts. It’s the cause and effect between two seemingly unrelated actions, of similarities between two disparate subjects. This is the loving tug-of-war between knowledge and wonder.

Part of what I try to do on this blog is put these pieces together. Maybe it’s not not how they were intended to be put together, with everything neatly organized and separate. But color swatches aren’t art; it’s the painting that combines them in new, exciting ways that allows us to see further. Thanks for reading.

Advertisements

2 responses to this post.

  1. Posted by culturalexception on May 14, 2013 at 12:33 pm

    Very nice post. This dovetails nicely with something I’m writing, so I will reach out separately to see if I can quote you.

    Reply

  2. […] Hacking, therefore, is really not a description of a shortcoming, but rather of the acknowledgement that problem-solving is evolutionary. What we fix today will need to be fixed anew (or, perhaps replace “fixed anew” with “adapted”) in the near future. And “near” is relative. Max Goldstein said it best in a quite brilliant blog post on the subject of hacking: […]

    Reply

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: