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!
53 thoughts on “Research: It’s Like Cheating, But Fair”
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.
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?
I’ve also noticed this too, and I’d like to see the same feature in a search engine.
Google’s was better when it didn’t insist it knew better than I do what I’m searching for. If I say “foo”, I BLOODY WELL MEAN FOO
Yep. ‘Stuffed animal’ has a wide variety. Be careful if your youngster is sitting on your lap when you perform that search.
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”””””””””””
I look for every short cut. There is always plenty to figure out even with full documentation.
Don’t be stupid and proud. (the same thing in many cases)
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.
And reinventing the wheel every time somehow will get us to Alpha Centauri when you’re saying that making use of established knowledge won’t?
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.”
“I’m afraid I can’t do that Dave, shit’s effed up, shall I defrost the hacker?”
The only ‘cheating’ part of searching the internet for information is when you take someone else’s work and present it as your own. ie plagiarism.
A concept that might go away as it gets harder to identify the original source.
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
National Institute of Health? (Come on, I just learned what FOMO means!)
Not Invented Here
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.
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!
This is how all my OpenSCAD libraries start.
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.
“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.
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 :)
Einstein called it “seat time”. They portrayed it well on The Big Bang Theory https://www.youtube.com/watch?v=Dy8EsHZr6DI
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
The niece was right. It is homework and it is cheating. I can hire a Task Rabbit to do pushups but it won’t make me stronger.
The problem isn’t completing pushups in your example. The actual problem is achieving the goal of YOU becoming stronger, which, of course, you can’t hire a proxy for.
Yeah, it’s a terrific analogy and you are perhaps not the world’s greatest commenter.
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…
Well, there are even non-contact magnetic methods for muscle stimulation which do not cause electrolytic burns which is the major problem of most muscle stimulators.
Building off of other people’s work is how real hackers operate.
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.
we all stand on the shoulders of giants…. Basically the analogy is “teach a man to fish” but you went with the task rabbit what if’s….
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.
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.
You cannot hope to see further if you refuse to stand on the shoulders of others.
Most people that come to this website have a high-enough IQ and/or tech/science/math skills that they don’t have “anything to prove” so to speak. Solve the problem and move to the next thing.
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.
I find that people who say “Dunning-Krueger” or some variant thereof are usually huge dewshes and I disregard them. Imagine the time saved!
Just as well RW *wrote* the term then… 🙄
Don’t you have anything better to do than troll? Stop trundling hackaday for comments to troll, and being so contrarian. I like the name btw
That is the problem with D-K. People who can understand it don’t need it. It has value in understanding the actions of people around you. The greater threat comes from the stupid. https://medium.com/mind-cafe/the-5-basic-laws-of-human-stupidity-513de9dd0bd5
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.
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.
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.
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.
My experience is that you have no heckin’ clue what my experience is.
Judging by the tone of your comments you’ve had a sad life living under a bridge
> 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??”
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
To survive in the wiley worlds of information technology, one must master the art of GoogleFu — Confucius (or not ;))
Haha, But new technologies are really developing rapidly, many companies will not be able to survive, and some will release cool new products.
The teacher was right, and if students study the information on their own, analyze it and write their work on its basis, then there is nothing wrong with that.
It’s great that your niece has the opportunity to study such subjects, the curriculum looks quite interesting.
Please be kind and respectful to help make the comments section excellent. (Comment Policy)