Editing 2140: Reinvent the Wheel

Jump to: navigation, search

Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision Your text
Line 8: Line 8:
  
 
==Explanation==
 
==Explanation==
 +
{{incomplete|Created by a WHEEL OF CHEESE. Second paragraph needs to be expanded. Do NOT delete this tag too soon.}}
 +
 
"{{w|Reinventing the wheel}}" is an idiom/metaphor that refers to duplicate effort to recreate something that has already been created or perfected previously without adding any value in the process. The phrase relates to the idea that the round {{w|wheel}} was invented a long time ago and there is no way to make it better, as a circle is the most optimal shape. While the phrase includes the word "wheel", it isn't typically directly associated with the wheel but instead uses the word "wheel" because of the easily understandable meaning - a simple object with no improvements that can be made. That being said, we have actually reinvented the wheel at one point in time - a {{w|tire}} is a modern improvement to the wheel, which reduces bumps and shocks that people in the car would feel from uneven road surfaces.  
 
"{{w|Reinventing the wheel}}" is an idiom/metaphor that refers to duplicate effort to recreate something that has already been created or perfected previously without adding any value in the process. The phrase relates to the idea that the round {{w|wheel}} was invented a long time ago and there is no way to make it better, as a circle is the most optimal shape. While the phrase includes the word "wheel", it isn't typically directly associated with the wheel but instead uses the word "wheel" because of the easily understandable meaning - a simple object with no improvements that can be made. That being said, we have actually reinvented the wheel at one point in time - a {{w|tire}} is a modern improvement to the wheel, which reduces bumps and shocks that people in the car would feel from uneven road surfaces.  
  
In this comic, [[Beret Guy]] works for an automotive company (or this is his [[:Category:Beret Guy's Business|own company]]), and he is explaining to Ponytail their decision to not reinvent the wheel for the automobiles that they produce, using the phrase in a literal sense instead of figuratively.  Instead of determining for themselves what wheel to use, they want to use whichever wheel is presumably considered the "best" wheel by the world, using a daily Google image search for "wheel" to determine the highest ranked wheel, and then using that wheel on the vehicles they produce that day. In reality, this would be a very bad way of choosing the wheels of the automobiles Beret Guy's company produces. In addition to being extremely inefficient, as they might have to change the wheels they use every day, it may also result in copyrights and lawsuits against his company.
+
In this comic, [[Beret Guy]] works for an automotive company (or this is his [[:Category:Beret Guy's Business|own company]]), and he is explaining to Ponytail their decision to not reinvent the wheel for the automobiles that they produce, using the phrase in a literal sense instead of figuratively.  Instead of determining for themselves what wheel to use, they want to use whichever wheel is presumably considered the "best" wheel by the world, using a daily Google image search for "wheel" to determine the highest ranked wheel, and then using that wheel on the vehicles they produce that day.
  
 
The point of the comic is to make fun of programmers who take the idea that you should never reinvent the wheel too seriously. When these people have a problem, they may Google to find a solution to that problem, and when they find a piece of online code, they use it in their own code, even if it wasn't initially designed to handle the task for which it is being used and thus may have unintended side effects or other issues.
 
The point of the comic is to make fun of programmers who take the idea that you should never reinvent the wheel too seriously. When these people have a problem, they may Google to find a solution to that problem, and when they find a piece of online code, they use it in their own code, even if it wasn't initially designed to handle the task for which it is being used and thus may have unintended side effects or other issues.
  
Another way that programmers may go too far in avoiding reinventing the wheel is in using external dependencies. It can be valuable to use external libraries, especially for applications where certain tasks have strange edge cases that a 'reinvention' is likely to miss or require lots of development effort to correctly implement (like [https://infiniteundo.com/post/25326999628/falsehoods-programmers-believe-about-time time]). However, using someone else's code means taking on the risk of security vulnerabilities, and when the library is updated on live installations, the user also takes on the risk that the library might become unavailable or otherwise break.  In this case, Beret Guy's company updates their wheel "library" on a daily basis from Google's image search. Google is unlikely to shut down a core search product, but they might change the API that Beret Guy's company uses (unless he's just going to their website himself), and they have been known to shut down projects that people like, such as [https://www.google.com/reader/about/ Google Reader]. On the day this comic was released, Randall changed the [[Design_of_xkcd.com#Header_text|Header text]] of xkcd, adding a [[Header text#2019-04-23_-_Google_Reader|reference to Google Reader]].
+
Another way that programmers may go too far in avoiding reinventing the wheel is in using external dependencies. It can be valuable to use external libraries, especially for applications where certain tasks have strange edge cases that a 'reinvention' is likely to miss or require lots of development effort to correctly implement (like [https://infiniteundo.com/post/25326999628/falsehoods-programmers-believe-about-time time]). However, using someone else's code means taking on the risk of security vulnerabilities, and when the library is updated on live installations, the user also takes on the risk that the library might become unavailable or otherwise break.  In this case, Beret Guy's company updates their wheel "library" on a daily basis from Google's image search. Google is unlikely to shut down a core search product, but they might change the API that Beret Guy's company uses (unless he's just going to their website himself), and they have been known to shut down projects that people like, such as [https://www.google.com/reader/about/ Google Reader]. On the day this comic was released, Randall changed the [[Design_of_xkcd.com#Header_text|Header text]] of xkcd, adding a [[Design_of_xkcd.com#2019-04-23|reference to Google Reader]].
  
The popular programming language Python manages external dependencies with packages called "wheels" which are "published to the cheese shop", which may or may not be an intended reference.  
+
The popular programming language "Python" manages external dependencies with packages called "wheels" which are "published to the cheese shop", which may or may not be an intended reference.  
  
In any event, Beret Guy is in effect reinventing the wheel by doing a new search for wheels on Google Images every day. If the wheel he finds on Google Images on a given day is suitable for his company's needs, the company would likely be better off using the same wheel on succeeding days (unless circumstances change which make that unfeasible), compared to trying to doing a new search for wheels every day. In addition, Beret Guy's company might be forced to create new wheel-producing machinery every day, although if Beret Guy can transmit [[1293: Job Interview|soup]] and [[1395: Power Cord|air]] through electrical cords, it may simply be a matter of copying the image then pasting it in real life.
+
In any event, Beret Guy is in effect reinventing the wheel by doing a new search for wheels on Google Images every day. If the wheel he finds on Google Images on a given day is suitable for his company's needs, the company would likely be better off using the same wheel on succeeding days (unless circumstances change which make that unfeasible), compared to trying to doing a new search for wheels every day.
  
The title text indicates that Beret Guy is currently using bicycle wheels for his vehicles, requiring his vehicles to be lighter as bicycle wheels cannot carry a lot of weight.  He says this "reduce[s] overhead", which is both literally true, that his vehicle weighs less, and refers to the usual figurative desire of reducing overhead costs of development by using external libraries. If the former interpretation is correct, this raises the question of why Beret Guy's company didn't try to lighten the load of its vehicles beforehand. Finally, the narrator (supposedly Beret Guy) explains that at one point a wheel of cheese was near the top of the Google images search. If it had reached the top, it would have been disastrous as a wheel of cheese is completely unsuited for use as a vehicle's wheel.{{Citation needed}} Beret Guy implies that his company would have used it if it reached the first position even though he knows that it would be unsuitable for usage in vehicles, further demonstrating Beret Guy's lack of business knowledge.
+
The title text indicates that Beret Guy is currently using bicycle wheels for his vehicles, requiring his vehicles to be lighter as bicycle wheels cannot carry a lot of weight.  He says this "reduce[s] overhead", which is both literally true, that his vehicle weighs less, and refers to the usual figurative desire of reducing overhead costs of development by using external libraries. Finally, the narrator (supposedly Beret Guy) explains that at one point a wheel of cheese was near the top of the Google images search. If it had reached the top, it would have been disastrous as a wheel of cheese is completely unsuited for use as a vehicle's wheel.{{Citation needed}}
  
 
On the day the comic was released a bicycle wheel came up first when searching for "wheel", see image in the [[#Trivia|Trivia]] section below.
 
On the day the comic was released a bicycle wheel came up first when searching for "wheel", see image in the [[#Trivia|Trivia]] section below.
Line 32: Line 34:
 
*On the day this comic came out a Google search on Wheel would in some cases have a bicycle wheel at the top:
 
*On the day this comic came out a Google search on Wheel would in some cases have a bicycle wheel at the top:
 
:[[File:2140_Reinvent_the_Wheel_Google_Search_Wheel.png|400px]]
 
:[[File:2140_Reinvent_the_Wheel_Google_Search_Wheel.png|400px]]
*The JavaScript development community has had several security and reliability incidents caused by over-dependence on automated package updates.  In 2016, a JavaScript developer [https://www.theregister.co.uk/2016/03/23/npm_left_pad_chaos/ un-published several libraries] (including one "library" which was just an eleven-line function for padding strings, which was nevertheless included in thousands of projects and downloaded millions of times a month) from the npm package repository.  This broke projects that depended on them and, until npm un-un-published his packages (with new maintainers), also opened the possibility that a bad actor could register malicious projects under those names and hijack all of their dependents. In July 2018, an attacker gained access to the npm account of an ESLint maintainer and [https://eslint.org/blog/2018/07/postmortem-for-malicious-package-publishes published malicious versions of their packages], and in September 2018, the event-stream library was taken over by a malicious maintainer who [https://www.theregister.co.uk/2018/11/26/npm_repo_bitcoin_stealer/ added code to look for and steal bitcoins from the users who installed it].
+
*The JavaScript development community has had several security and reliability incidents caused by over-dependence on automated package updates.  In 2016, a JavaScript developer [https://www.theregister.co.uk/2016/03/23/npm_left_pad_chaos/ un-published several libraries] (including one "library" which was just an eleven-line function for padding strings, which was nevertheless included in thousands of projects and downloaded millions of times a month) from the npm package repository.  This broke projects that depended on them and, until npm un-un-published his packages (with new maintainers), also opened the possibility that a bad actor could register malicious projects under those names and hijack all of their dependents. In July 2018, an attacker gained access to the npm account of an ESLint maintainer and [https://eslint.org/blog/2018/07/postmortem-for-malicious-package-publishes published malicious versions of their packages], and in September 2018, the event-stream library was taken over by a malicious maintainer who [https://www.theregister.co.uk/2018/11/26/npm_repo_bitcoin_stealer/ added code to look for and steal bitcoins from the users who installed it].
  
 
{{comic discussion}}
 
{{comic discussion}}
  
[[Category:Language]]
 
 
[[Category:Comics featuring Beret Guy]]
 
[[Category:Comics featuring Beret Guy]]
 
[[Category:Comics featuring Ponytail]]
 
[[Category:Comics featuring Ponytail]]
 
[[Category:Beret Guy's Business]]
 
[[Category:Beret Guy's Business]]
[[Category:Google Search]]
 

Please note that all contributions to explain xkcd may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see explain xkcd:Copyrights for details). Do not submit copyrighted work without permission!

To protect the wiki against automated edit spam, we kindly ask you to solve the following CAPTCHA:

Cancel | Editing help (opens in new window)