Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris
 
PerlMonks  

Fighting the denigration of hacking

by flyingmoose (Priest)
on Feb 07, 2004 at 15:18 UTC ( [id://327320]=perlmeditation: print w/replies, xml ) Need Help??

Per Merriam-Webster:

Main Entry: hack·er Pronunciation: 'ha-k&r Function: noun 1 : one that hacks 2 : a person who is inexperienced or unskilled at a particular activity <a tennis hacker> 3 : an expert at programming and solving problems with a computer 4 : a person who illegally gains access to and sometimes tampers with information in a computer system

Today, usage 4 seems most common in the computer industry, but I often see my Java-loving-coworkers (counfound them! confound them to heck!) using "hack" in form #2. "Let's not hack that up". "I don't want to see any hacks" here. Needless to say, I don't like those comments very much -- often my solution of adding a bitmask or something equivalent saves hundreds of lines of code and is a good deal more efficient. But that cleverness is "a hack" and therefore not appreciated. Grr.

What "not hacking" usually means to them is, "let's not do something particularly clever here, but instead let us overdesign a painful solution that completely overreaches beyond the original scope of the problem".

Is the day of cleverness in computer software lost to these folks? This goes back to some of my earlier "Programming is Art" type comments. To loose sight of the foundations of the art, and the ability to find clever solutions...to make that non political correct...that's not good.

Yes, folks can write unmaintainable code that is hugely special-case driven, containing many large if-combs, with lots of one-offs, fudge factors, etc, and there are cases where you see code like "c&=(int)m+n+y>>3&0xFC%4". But let's not call that hacking. Let's call that "bad code". Let's call this "cluelessness" or "junior high school programming".

I'm tired of saying "I've got a cool hack that allows XXX" and getting dirty looks for it. So what languages other than Perl & C still allow for the hacker mentality rather than scorn it? Perhaps Ruby has promise, I have not investigated it deeply. Python seems too concerned by structure and orderliness to allow for a hacker-mindset. Perhaps some more functional languages still do?

Anyhow, I don't want to see my profession replaced by in-it-for-the-money drones with lots of invalid preconceptions. Hacking is about thinking outside the box. Or, actually, thinking that there is no box. There is no one true way.

Power to the camel. Death to the smiling black & white pointy triangular thing with two arms.

Edit by castaway, changed accidental a tag to &lt;

Replies are listed 'Best First'.
•Re: Fighting the denigration of hacking
by merlyn (Sage) on Feb 07, 2004 at 20:10 UTC
    I think we lost the battle in 1995 or before. My self-declared "Just Another Perl Hacker" was actually used against me in my court proceedings, and it was clear from the tone of the prosecution that nothing we could say to counter that was going to help.

    "hacking" is now firmly in the public's mind as "evil hacking", never "good hacking". Oh well.

    -- Randal L. Schwartz, Perl hacker
    Be sure to read my standard disclaimer if this is a reply.

      Jumping in here a bit... I'd suggest that it is slowly becoming less and less true (very slowly to be sure). I have seen more mentions/discusion on news and tech channels discussing "White Hat" vs "Black Hat" hackers. People who are not necessarily technical will begin to understand that hacking is not always "evil hacking". I think many are starting to see it more as mischievous curiosity on average with the occasional evil-doer.

      Of course this could all be a function of the people I hang around and therefore be totally incorrect. <grin>

        You seem to be the only one who sees this change developing. Sure, on tech channels there's an understanding of the difference between "hacking away at some code" and "hacking a system", but the illiterati who are still replying to spam and downloading email attachments, hackers are just evil geeks. During the tech boom, there was a brief shining moment when this started to change, when the general populus saw that maybe techies could actually help make their lives better, a moment where intelligence was an asset, not a liability, but that moment has passed.

        Say "hacker", and people think of Matthew Broderick. If you try to explain the misconception, their eyes just glaze over. The one victory I've ever had when trying to get the point across was by using an automotive metaphor. I was talking to a technophobe who loved working on his car. I compared his desire to explore the limits of what his car could do with a desire to max out your PC. Then, I asked about gearheads being a bunch of reckless drag racers. He went off on a rant about car clubs just being about enjoying cars, restoring them, tweaking them, customizing them, and seeing what you could do with them. Sure, there are people who are reckless drivers, but they're a small minority who give the rest a bad name, and besides, the media blows it all out of proportion. Then I smiled. And finally, he saw the light.

        -Logan
        "What do I want? I'm an American. I want more."

Re: Fighting the denigration of hacking
by Abigail-II (Bishop) on Feb 07, 2004 at 17:15 UTC
    But let's not call that hacking. Let's call that "bad code". Let's call this "cluelessness" or "junior high school programming".
    Let's not hack around in the English language, shall we? One should realize that natural languages are moving targets. New words spring into existances, while other words slowly die off. The meaning of words change all the time. Dictionaries do not define what a word means - they just record its usuage.

    Trying to change the meaning of words in the way you propose is like trying to conduct the tides by waving your arms on the beach.

    Just accept that certain words have more than one meaning.

    Abigail

      No, in this case that use is not even recorded -- perhaps my point was not clearly made. In addition, your tone was *not* appreciated.

      "A tennis hack" as mentioned above has the word "hack" modifing the programmer. In the phrase "a programmer hack" does not modify the programmer, the "hack" is a noun and "programmer" modifies "hack".

      Anyhow, in the software case "hack" has three meanings, "bad coding example", "good coding example", and "to break into a system".

      I'm stipulating that "bad coding example" did not come from the tennis origins, nor the software origins, but rather from the perception that what we consider to be "a good hack" is despised by other folks, who do not appreciate cleverness and would prefer martialled order.

      In essense, what I regard as a "good hack" other folks regard as "hacked up code", and these phrases are from the same origin, that of "hacking". I'm saying we have software folks that despise "hacking" in the old school (pre-cracker) sense. They don't like cleverness. They don't like low level code and tweaks. They don't like optomizations. Essentially, they refer to the same denotation of hacking (3) with an opposition connotation.

      Cleverness is good. Boringness is bad. Carry on.

        "A tennis hack" as mentioned above has the word "hack" modifing the programmer. In the phrase "a programmer hack" does not modify the programmer, the "hack" is a noun and "programmer" modifies "hack".

        I believe this usage predates the MIT-computer use, such as in literature ("Kevin J. Anderson is a hack").

        And if you don't like Abigail's tone, get used to it. She's actually far less of an elitist jerk than many programmers I've run into online :)

        ----
        : () { :|:& };:

        Note: All code is untested, unless otherwise stated

      A reply falls below the community's threshold of quality. You may see it by logging in.
Re: Fighting the denigration of hacking
by pfaut (Priest) on Feb 07, 2004 at 15:35 UTC

    Interestingly enough, the jargon file entry for hacker (according to KDict) contains the following:

    8. [deprecated] A malicious meddler who tries to discover sensitive information by poking around. Hence `password hacker', `network hacker'. The correct term for this sense is cracker.

    I think deprecated is wishful thinking since that appears to be the media's primary definition for the word.

    It also points out that hacking doesn't necessarily have to deal with computers.

    90% of every Perl application is already written.
    dragonchild
Re: Fighting the denigration of hacking
by allolex (Curate) on Feb 07, 2004 at 19:05 UTC

    All of the acceptions you have listed are currently in use, but don't forget that the reading/meaning you choose often has a lot to do with what particular group or groups you want to belong to. Apparently the Java people at your work belong to a group that considers the word "hack" to be pejorative. You see yourself as belonging to a group of people that consider "hack" to be positive. When you use "hack" in this sense, you are socially setting yourself apart from your co-workers.

    The English language is big enough for all of these meanings, but you'll find that people typically are not at all familiar with the use of "hack" in any positive sense. That sense is reserved to another in-group. That means you might have to translate what you mean when you're talking to people who either don't know or don't accept your definition.

    This is a bit of an aside to the whole topic:
    As far as dictionaries are concerned, there are a number of philosophies that dictate how they choose the meanings listed under each word and how those items are ordered. Some dictionaries have a descriptive character, trying to show how language is used. Others have a prescriptive nature, reflecting their editors' linguistic preferences. Unfortunately, it's really hard to tell which ones are which.

    Here's the entry for hacker from WordNet 2.0:

    hacker
    n 1: someone who plays golf poorly
    2: a programmer who breaks into computer systems in order to steal or change or destroy information as a form of cyber-terrorism [syn: {cyber-terrorist}, {cyberpunk}[]]
    3: a programmer for whom computing is its own reward; may enjoy the challenge of breaking into other computers but does no harm; "true hackers subscribe to a code of ethics and look down upon crackers"
    4: one who works hard at boring tasks [syn: {hack}, {drudge}[]]

    WordNet concentrates on descriptive definitions.

    --
    Allolex

      I'm not discussing the meaning of the word, neccesarily, but the perception of the concept that the particular definition represents.

      Elaboration: In one circle, programming of a certain type (i.e. cleverness) is good, on these other fronts, cleverness is discouraged, and looking at the exact same line of code, one might here "Nice hack!" and "Urgh! I hate to see that kind of hack there". It's hackscrimination :)

      Merlyn's definitely right regarding non-tech circles though. It's the trend in tech-circles that seems to be weird. Programmers that don't like cleverness of any kind, whether you call it "hacking" or not. And they have management's ear. Gotta shake that up.

      Ok, seeing I have confused everyone, I'll leave it at that.

        Maybe it's because they associate the word with doing things fast (and not necessarily 'cleverly'). For Perl this is a matter of course, but which for some other languages (maybe Java, I wouldn't know), it tends to indicate sloppy coding? I still think there are social issues that might be playing a role. Or maybe they just don't understand what you're doing and cover up by disapproving. Of course all of this is pure conjecture. Best of luck to you!

        --
        Allolex

Re: Fighting the denigration of hacking
by knexus (Hermit) on Feb 07, 2004 at 22:17 UTC
    Just a few thoughts for you, IMHO:

    What "not hacking" usually means to them is...

    I understand this sentiment (been there) but I'd suggest you try to see things from the other side (been there too). Often the differences come down to one of perception and expectation. Often those in the decision making capacity want reliability, efficiency and maintainability (and yes, the sun and the moon too). So, perhaps presenting your approach in different terms would get you both what you want.

    I'm tired of saying "I've got a cool hack that allows XXX" and getting dirty looks for it.

    Again, this reminds me off all the years I pissed into the wind... until one day I wised up. Just choose your words more carefully and you may get to do it the way you want more often than not. Be cleaver with you words as well as your code (I don't mean be a BSer). Also, I am not trying to be preachy, this was just a lesson I learned more or less the hard way.

      Just choose your words more carefully

      before
      I've got a cool hack that allows XXX
      after
      I've got an empowering, paradigm-shifting, enterprise-grade scalable solution that allows XXX
        That will work great if you are talking to Homer Simpson.

        "WOOHOO! I gotta have that!"

        However, I did say no BS and that includes the marketing buzzwords.

        www.BuzzWhack.com has the lowdown on many. ;-)

Re: Fighting the denigration of hacking
by halley (Prior) on Feb 09, 2004 at 13:08 UTC
    Sorry, I downvoted the node for two reasons. One, it's the old splitting of semantic hairs that is all too cliche on geek forums. Two, you're in full-rant mode and don't stay on topic.

    Dictionary. Nobody's going to teach the lay public a new definition by babbling on a geek forum. Hack is "penetrate" to the vulnerable. Hack is "tinker" to the tinkerer. Hack is "novice" to the journeyman. Hack is "kludge" to the academic.

    There's nothing wrong with being clever to stay efficient, but efficiency and effectiveness are often at odds. If your one-liner solution doesn't cover foreseeable future usage, then it should be rethought now. The opposite is also true with your points about over-engineering. Maintenance programmers HATE clever stuff that doesn't fit the rest of the style of the project. "Thar be magick hyeer."

    If you get dirty looks from your teammates for diverging from the team's approach, who is at fault? The Demotivator pattern here is "Dysfunction: The Only Consistent Feature of All of Your Dissatisfying Relationships is You."

    These issues exist in any programming language. Why in the heck do you then go onto a tirade about languages? Ruby and Python aren't going to solve your culture and team attitude problems. The "death to Java" closing line is just immature.

    --
    [ e d @ h a l l e y . c c ]

Re: Fighting the denigration of hacking
by logan (Curate) on Feb 08, 2004 at 06:50 UTC
    I dunno, I see "hacking" as poking at something without a great understanding or a strict methodology. In the case of "hacking a system", this would include probing the ports of a system to see what's open and vulnerable. In the case of "hacking away at some code", it's cutting corners and using trial and error rather than having a clear plan in mind. "Hacking code", in my mind, is about just getting it to work and worrying about finesse later.

    Example:
    I was doing some performance testing, and I found that the odbc.ini file on a server kept getting corrupted when the system was under heavy load. I filed a bug on it, but I didn't want to halt testing until I could get a fix. I wrote a quick perl script to check the file every second to see if it existed and replace it if it was corrupted. With this hack in place I was able to continue testing.

    A few builds later, the problem had been fixed. I assumed that someone had gone into the code, found the cause, and fixed the fault that caused the file corruption. Wrong. My hack was simply rolled into the code base. That is the danger of hacking code: temporary fixes often become permanant.

    -Logan
    "What do I want? I'm an American. I want more."
Re: Fighting the denigration of hacking
by stvn (Monsignor) on Feb 08, 2004 at 18:06 UTC

    It's all about context. You can preach to the choir here about life, liberty and the pursuit of hacking, and we will all (well most maybe) will agree with you and help you to carry your banner high.

    BUT, when jobs, money, careers (and all that they imply) are "on the line" (real or imagined). It's an entirely different story. I have been around enough at various types of companies to know that sometimes its best to call it a "feature" rather than a "clever hack".

    Some people don't see the aesthetic possiblities of code. Some think elegance in code is something for academics with tenure, and has no use in the workplace. And yes, you may find some of them will be your managers, and sometimes that's why they are "managers", they would rather not-code then code. They never saw it, and never will. Of course not all managers are this way, but even the good ones have to report to someone, and usually the further up the flagpole you run it, the less impressed they are with "clever bitmask hacks that save hundreds of lines of code". For them, it is about long term maintatinability (of the code and/or their jobs), your cleverness is of no use for them, especially since you may or may not be here in 2 weeks (by your choice or thiers).

    Remember too that in the end, what we do has to be making money for someone, otherwise how would we get paid. The people who sign our paychecks will likely always be leary of "hacking", no matter if it produces "results" or not. Imagine if marketing had to put this in the product brochure:

    This new release tar-ball contains hundred of clever hacks and cool bitmask tricks, making it a much more elegant and optimized code base. You will marvel at the aesthetic beauty of the code of our top hackers, and bask in the glory of how sweet this run's on the latest development release of Linux when compiled with the bleeding edge development release of gcc 3.5.0a.
    Alot of times, this doesn't go over well with the people who actually buy the software (meaning sign the purchase order and cut the actual check). They are much more comfortable with things like:
    The new XP-UltraExtreme 2.0 version of our product contains hundreds of new features to make you and your staff over 200% more productive in half the time. It's simple point-n-click Windows installation is a snap.
    No matter if its a flat out lie or not.

    Remember, no matter what Eric S. Raymond may say about what "hacking" is and isn't, Matthew Brodrick beat him too it, and had a much bigger marketing budget to work with.

    -stvn
Re: Fighting the denigration of hacking
by theguvnor (Chaplain) on Feb 08, 2004 at 15:01 UTC

    I sympathise. It grates on my nerves when people abuse the English language. You almost make Abigail's point for her though when you write (emphasis mine):

    To loose sight of the foundations of the art

    You probably meant "lose", the verb to lose being far different than either the adjective "loose" or the verb "to loose (an arrow etc.)". You probably know this and just hit the 'o' key an extra time. Yet I see that mistake so often that at some point, dictionaries will "officially" recognise that "loose" is being used in place of "lose".

    My point is not to single out what was probably a minor typo on your part, rather it is to illustrate how difficult it is to hold any kind of line against this kind of morphing within languages. People generally don't care enough. Though this is sad in many ways, I suppose if language didn't evolve at all it would die, much like Latin.

    [Jon]

Re: Fighting the denigration of hacking
by Anonymous Monk on Feb 10, 2004 at 21:21 UTC
    Yes, folks can write unmaintainable code that is hugely special-case driven, containing many large if-combs, with lots of one-offs, fudge factors, etc, and there are cases where you see code like "c&=(int)m+n+y>>3&0xFC%4". But let's not call that hacking. Let's call that "bad code". Let's call this "cluelessness" or "junior high school programming".


    You get a point on that one, when i see c &= (int) m+n+y >> 3 & 0xFC % 4, i'd call that "idioty" too, anybody'd get quicker result for that line with: c = 0...

    sorry couldnt resist :-)

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlmeditation [id://327320]
Approved by pfaut
Front-paged by rnahi
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others rifling through the Monastery: (2)
As of 2024-04-24 17:07 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found