Research: It’s Like Cheating, But Fair

My niece’s two favorite classes in high school this year are “Intro to AI” and “Ethical Hacking”. (She goes to a much cooler high school than I did!) In “Hacking”, she had an assignment to figure out some bug in some body of code. She was staring and staring, figuring and figuring. She went to her teacher and said she couldn’t figure it out, and he asked her if she’d tried to search for the right keywords on the Internet.

My niece responded “this is homework, and that’d be cheating”, a line she surely must have learned in her previous not-so-cool high school. When the teacher responded with “but doing research is how you learn to do stuff”, my niece was hooked. The class wasn’t abstract or academic any more; it became real. No arbitrary rules. Game on!

But I know how she feels. Whether it’s stubborn independence, or a feeling that I’m cheating, I sometimes don’t do my research first. But attend any hacker talk, where they talk about how they broke some obscure system or pulled off an epic trick. What is the first step? “I looked all over the Internet for the datasheet.” (Video) “I found the SDK and that made it possible.” (Video) “Would you believe this protocol is already documented?” In any serious hack, there’s always ample room for your creativity and curiosity later on. If others have laid the groundwork for you, get on it.

If you have trouble overcoming your pride, or NIH syndrome, or whatever, bear this in mind: the reason we share information with other hackers is to give them a leg up. Whoever documented that protocol did it to help you. Not only is there no shame in cribbing from them, you’re essentially morally obliged to do so. And to say thanks along the way!

50 thoughts on “Research: It’s Like Cheating, But Fair

  1. My favorite phrase is “on The Internet, in between the kiddie porn and the bomb-making instructions, I found…”
    While the internet is often maligned as a “wretched hive of scum and villainy”, it is also a repository of a good amount of extremely useful information.

    I have found manuals for old pieces of equipment (and have contributed a few myself), solutions to error messages (just copy and paste them into Google) and YouTube videos showing how to open apparently sealed enclosures. I take issue with anyone who says the internet has degraded to the point of uselessness. It’s really an extremely valuable resource, you just need to look past the layer of junk on the surface, to find the gems hidden below.

    1. The Internet needs a keyword helper. Finding a set of keywords that leads to useful info is getting much harder. When names and terms in a topic or field are adopted in popular slang or by pop music groups it can be impossible. Usage shifts for words, which is surprisingly frequent, create a huge amount of search noise. I have been hitting dead-ends lately on things I used to be able to find. Maybe an argument for a personal repo of everything I find that is worthwhile.

      Is there a search engine that takes a set of hierarchical selections? Like category check boxes on eBay?

        1. I hate how these days you have to put every single damn word in quotes.

          And sometimes, it’ll say:

          Missing: foo. Include: “foo”
          Missing: “foo”. Include: “”foo””
          Missing: “”””””””””foo””””””””””. Include: “””””””””””foo”””””””””””

  2. If you are trying to learn how to do some particular task, this maker mindset is fine. It may even get us to Mars. But this mindset won’t get us to Alpha Centauri.

    1. Because on a deep space mission you really need a solitary genius to reinvent everything from scratch.

      The point of this article is not “just copy and paste from stackoverflow”, the point is “you do not, personally, have to derive the universe from first principles to accomplish a task”. You get much farther by building on things that you already know work than by throwing everything out. Even if your example of getting a probe (et c) to Alpha Centauri ends up using a system wholly dissimilar to the chemical rockets that got us to the moon, that doesn’t mean that it still won’t make use of the lessons already learned.

      The pithier version is the quote from chemist Frank Westheimer: “A month in the laboratory can often save an hour in the library.”

  3. heh i agree with the thrust of the article but it’s funny to me to see NIH thrown in the bucket. for me, NIH represents my lack of faith in other solutions. i indulge most heavily in NIH when i already failed working with things invented elsewhere

        1. Unfortunately, with the chip crisis and general supply crisis, NIH is becoming a half-sensible philosophy (atleast when building things rather than reversing them). Thesedays doing things yourself from more basic generic components seems the most reliable way to avoid getting dependent on buying a part which goes out of stock for years on end.

    1. Yeah. Seeing how other people did things it’s often a driver to do it better/properly/cheaper yourself. Often in that process, you realise why they did do it that way, and you’ve learned something!

  4. Many decades back while taking an Organic Chem course the final was a “take home” experience. Aside from being one of the most challenging and time consuming finals I ever took, the professor’s statement that has stayed with me regarding collaboration and use of library resources to answer the question posed in the final exam: “No researcher locks themselves in a bare room and tries to figure it all out by themselves; they talk with others, use the research stacks and any other resource available to solve the problem at hand. I encourage you all to do the same!”
    So, today, whether it’s software design, product design, etc., I continue to use and incorporate all that which is available and shared in the public domain. This approach has served me well over many decades.

  5. “staring and staring” – reminds me of pre-http-internet days debugging code and eventually tracing a fault back one extremely complex looking line of code. And staring at that one line of code, trying to work out why it caused the program to crash for me, but not the person who originally wrote the code. After more hours that I care to mention (multiple pots of coffee were consumed) it turns out that the line contained the strtok function, and that modifies the contents of the string passed as a pointer. But elsewhere in the code (in a different file, that was accessed from a nested #include) the variable used was declared as “const char”. Eventually it turned out that one compiler on one architecture just totally ignored/dropped the const keyword, but a different compiler on a different architecture, did not ignore the keyword, but instead core dumped the program with an indecipherable error code, when the program attempted to modify the contents of memory where the read only string was stored (The error code was listed in the physical manuals that came with the compiler, but I did not have access to those at the time). The valuable lesson I learned was to always assume nothing works the way you think that it should, or always double check all your assumptions – no matter how trivial.

    1. Also, practically every one of the C standard string functions has traps, so always always always go over the semantics with a fine tooth comb because they will inevitably be doing something different to what you expect :)

  6. I prefer to spend at least some time looking over the code, on the Man page or equivalent documentation – as then even if you didn’t spot the real issue the result from your search engine of choice should always be meaningful to you*, you can really understand it, as you just looked at/up how it works. And to me it is the most important thing to understand the hows/whys of whatever you are doing to be sure your solution actually really does what you want, will be reliable etc.

    *nobody can actually recall exactly how something like that works months later unless they have used it many times

      1. Unless you count stupid things like externally applied direct muscle stimulation (perhaps while you sleep) and lots of steroids… Very much cheating the problem and a really stupid idea, but still somewhat of a proxy…

    1. It’s not cheating if you ask about how to train best. You can still do the training just right, or even better.

      Too many teachers want you to magically guess the right answer or rather the exact answer they have in mind.

      What matters is honing your skills, and becoming versatile, not finding the right answers to tests. Avoiding hard challenges is wrong, but assuming you can redo all of humans achievement in your own life time is just unrealistic.

  7. Today, we have to work with so many different technologies that it’s impossible to keep everything in our heads and be a specialist in *everything* that we work with.

    It’s not even a case of never having worked with certain technologies. If I need to debug something that I worked on 6 months ago, it’s likely that I’ll need to go back to the documentation & online resources to refresh my memory.

    The internet & the ubiquity of information has changed the way we problem solve, allowing us to confront challenges far more varied than was ever possible in the past.

    We’ve moved from needing to remember the tiny details, numbers, and formulas of very specific tasks, to instead focusing on remembering the *concepts* of a wide range of general tasks. The key to being effective is understanding the general concept, and then knowing how to efficiently find & absorb the knowledge that we need to complete the task at hand.

    1. I agree, the vast and easily searchable array of knowledge has let many more of us* approach the old world’s masters on a topic, without having to spend all those years as a novice practicing and memorising until you can’t forget a detail of your little niche – which means we can approach that expert level at least in delivered results on many more topics.

      Yes library and books existed before, and helped somewhat at doing the same thing, but its not the same, mostly because its vastly slower and index’s and contents pages are not good enough to find that one time x was mentioned in passing every time… So you still end up having to rely on your memory more, which also slows you down…

      *Much as some folks would like to pretend otherwise in the name of equality or something there are those with the right type of mental and physical skill and ability and those without – the internet can’t make the idiot smart or the cripple able to work a tool that needs the limb they don’t have the use of, though it is still useful for them.

  8. Sometimes you have to bang your head against something for a while until it hammers in a list of what you don’t know, because you dunning-krugered, THEN you can start finding interwebnet sources, papers, datasheets to bring you up to speed. I know this… I don’t know this… I need to know this, this and this… I finally done this.

  9. Wow, im jealous. I wish my high school was that good. The only programming course at my school is tought with VB6. Yes, the one that released in 1998. Im amazed it still runs on Win10, but sadly, it does. The class requires zero thinking, all you need to do is type out the code from screenshots the teacher takes.
    I just work on my GLSL raytracer instead, but the teacher barely cares about it. I had to get my mom to email the school for him to accept that as a project.

  10. It is important to try and solve a problem yourself even if it is just to get a better understanding of the problem before you then research and apply a variant on somebody else’s solution. e.q. last week I was working on a piece of complex parametric geometry that requires compound surfaces that blend into each other and while raw Openscad is powerful the addition of Revarbat’s BOSL2 library made things far easier.

  11. It’s a tricky topic. In academia people can get obsessed with citations, when there is sometimes not much to cite, besides very basic material that is known to many.

    The literature review can equally become an obsession and stop your progress, because sometime reinventing the wheel is faster and gives you more control.

    I’d say the best is to collect all the relevant resources while being focused on the outcome, and not too focused on what people will think. Academic writing is too focused on what reviewers will think and too little on clarity and practicality.

    That also shows in the citations, most of which are really useless, and only necessary in the context of showing reverence or proving you really have a good overview of current work, so you can place it within that landscape.

    I’d say, look up whatever you need to progress, refer it where necessary if you might lose it again, pick up what is unclear and otherwise just focus on implementing a solution.

    Look up what slows you down considerably, but don’t look up everything just to see if some little bit exists already somewhere else. In one way or another something has been thought of or done already, but the approaches and the execution vary a lot.

    It’s a waste of time to relate to all.

    1. Another point I wanted to add. Academia renders the whole learning experience very inefficient, by havint to cite and remember where you picked something up all the time.

      Natural learning doesn’t happen this way, and you will be hard pressed to remember where you read or learned something, this there are countless resources that were used along the way.

      It’s like remembering all the people you observed when you learned something, where you picked up which word, and who taught you a certain expression. Sometimes you know, but most of the time you don’t.

  12. > If you have trouble overcoming … NIH syndrome

    For me, it’s the opposite. I’m like “Agh I’ve been searching for hours/days/weeks and I can’t find anything. Why do I have to invent it here??”

  13. Plagiarize
    Let no one else’s work evade your eyes
    Remember why the good Lord made your eyes
    So don’t shade your eyes
    But plagiarize, plagiarize, plagiarize
    Only be sure always to call it please ‘research’

    — Tom Lehrer

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.