<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://www.explainxkcd.com/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=173.245.54.16</id>
		<title>explain xkcd - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://www.explainxkcd.com/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=173.245.54.16"/>
		<link rel="alternate" type="text/html" href="https://www.explainxkcd.com/wiki/index.php/Special:Contributions/173.245.54.16"/>
		<updated>2026-04-14T07:50:38Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>https://www.explainxkcd.com/wiki/index.php?title=240:_Dream_Girl&amp;diff=115383</id>
		<title>240: Dream Girl</title>
		<link rel="alternate" type="text/html" href="https://www.explainxkcd.com/wiki/index.php?title=240:_Dream_Girl&amp;diff=115383"/>
				<updated>2016-03-22T03:56:47Z</updated>
		
		<summary type="html">&lt;p&gt;173.245.54.16: /* Explanation */ link Geohashing&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{comic&lt;br /&gt;
| number    = 240&lt;br /&gt;
| date      = March 26, 2007&lt;br /&gt;
| title     = Dream Girl&lt;br /&gt;
| image     = dream girl.png&lt;br /&gt;
| titletext = No matter how elaborately you fool yourself.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Explanation==&lt;br /&gt;
The comic itself is pretty self-explanatory; [[Cueball]] had a very emotional dream.&lt;br /&gt;
&lt;br /&gt;
This comic is a commentary on people who dream, daydream, and wish for things to happen, commonly in a romantic context. Cueball dreams of a girl who gives him a time and a place, and the last panel implies that he went to that place at the given time, but did not find the girl. The strip builds up hope and anticipation that this supernaturally romantic reunion will occur, but grounds the reader with the last line of the comic and the title text.&lt;br /&gt;
&lt;br /&gt;
The coordinates of the note lead to [http://maps.google.com/maps?q=42.39561+-71.13051&amp;amp;hl=en&amp;amp;ll=42.395612,-71.130509&amp;amp;spn=0.001549,0.002642&amp;amp;sll=32.907845,-96.605711&amp;amp;sspn=0.159394,0.338173&amp;amp;t=h&amp;amp;z=19 Reverend Thomas J. Williams Park in Cambridge, MA, USA]. The time on the note, September 23, 2007, was about six months ''after'' the publishing of this comic. One hundred eighty-one days, to be exact.&lt;br /&gt;
&lt;br /&gt;
Notably, [http://thephoenix.com/Boston/News/48208-wisdom-of-crowds/ several hundred xkcd fans met up at that very time and place]. [[Randall]] also visited the meetup, and was recorded as saying &amp;quot;Maybe wanting something does make it real.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The idea that the frame of the comic grabs the people inside was already used in comic [[82: Frame]].&lt;br /&gt;
==See also==&lt;br /&gt;
* [[Geohashing]]&lt;br /&gt;
&lt;br /&gt;
==Transcript==&lt;br /&gt;
:Cueball: I had a dream that I met a girl in a dying world.&lt;br /&gt;
&lt;br /&gt;
:It was all coming apart. Hairline cracks in reality widened to yawning chasms. Everything was going dark and light all at once, and there was a sound like breaking waves rising into a piercing scream at the edge of hearing. I knew we didn't have long together.&lt;br /&gt;
&lt;br /&gt;
:She grabbed me and spoke a stream of numbers into my ear. Then it all went away.&lt;br /&gt;
:[A girl grabs him as the edges of the panel crack and tear.]&lt;br /&gt;
&lt;br /&gt;
:I woke up. The memory of the apocalypse faded to mere fancy, but the numbers burned bright in my mind. I wrote them down right away.&lt;br /&gt;
:[A note reads: 42.39561  -71.13051  2007 09 23  14 38 00.]&lt;br /&gt;
:They were coordinates. A place and a time, neither one too far away.&lt;br /&gt;
&lt;br /&gt;
:Cueball: What else could I do? When the day came, I went to the spot and waited.&lt;br /&gt;
&lt;br /&gt;
:Friend: ...and?&lt;br /&gt;
:Cueball: It turns out wanting something doesn't make it real.&lt;br /&gt;
&lt;br /&gt;
{{comic discussion}}&lt;br /&gt;
[[Category:Comics featuring Cueball]]&lt;br /&gt;
[[Category:Romance]]&lt;br /&gt;
[[Category:Dreams]]&lt;/div&gt;</summary>
		<author><name>173.245.54.16</name></author>	</entry>

	<entry>
		<id>https://www.explainxkcd.com/wiki/index.php?title=1654:_Universal_Install_Script&amp;diff=114714</id>
		<title>1654: Universal Install Script</title>
		<link rel="alternate" type="text/html" href="https://www.explainxkcd.com/wiki/index.php?title=1654:_Universal_Install_Script&amp;diff=114714"/>
				<updated>2016-03-11T17:51:53Z</updated>
		
		<summary type="html">&lt;p&gt;173.245.54.16: The wording makes it sound as if &amp;quot;&amp;amp;&amp;quot; is a feature exclusive to bash, when it's something that every shell supports.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{comic&lt;br /&gt;
| number    = 1654&lt;br /&gt;
| date      = March 11, 2016&lt;br /&gt;
| title     = Universal Install Script&lt;br /&gt;
| image     = universal_install_script.png&lt;br /&gt;
| titletext = The failures usually don't hurt anything, and if it installs several versions, it increases the chance that one of them is right. (Note: The 'yes' command and '2&amp;gt;/dev/null' are recommended additions.)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Explanation==&lt;br /&gt;
&lt;br /&gt;
Most users of computers today are used to simple, easy installation of programs. You just download a .exe or a .dmg, double click it, and do what it says. Sometimes you don't even have to install anything at all, and it runs without any installation.&lt;br /&gt;
&lt;br /&gt;
However, when things are more &amp;quot;homebrew&amp;quot;, for example downloading source code, things are more complicated.  Under {{w|Unix-like}} systems, which this universal install script is designed for, you may have to work with &amp;quot;build environments&amp;quot; and &amp;quot;makefiles&amp;quot;, and command line tools. To make this process simpler, there exist repositories of programs which host either packages of source code and the things needed to build it or the pre-built programs. When you download the package, it automatically does most of the work of building the code into something executable if necessary and then installing it. However, there are many such repositories, such as &amp;quot;pip&amp;quot; and &amp;quot;brew&amp;quot;, among others listed in the comic. If you only know the name of a program or package, you may not know in which repository(ies) it resides.&lt;br /&gt;
&lt;br /&gt;
The script provided in the comic attempts to fix this problem, by giving a &amp;quot;universal install script&amp;quot;, which contains a lot of common install commands used in various Unix-like systems. In between each of the install commands in the script is the &amp;amp; character, which in POSIX-compatible shells (including {{w|Bash (Unix shell)|BASH}}, a popular shell scripting language) means it should continue to run the next command without waiting for the first command to finish, and not print any output of the command other than errors.  This has the effect of running all the install commands simultaneously; whatever errors each commands would have because of a package not existing in that repository will be mixed together as they are all displaying on the screen around the same time.  More about the &amp;amp; below.&lt;br /&gt;
&lt;br /&gt;
The script accepts the name of a program when you run it as an argument. This value is then referenced as &amp;quot;$1&amp;quot; (argument number 1). Everywhere the script says &amp;quot;$1&amp;quot;, it substitutes in the name of the package you gave it. The end result is the name being tried against a large number of software repositories and package managers, and hopefully, at least one of them will be appropriate and the program will be successfully installed. Near the end, it even tries changing the current working directory to that which is assumed to hold the package to be installed, and then runs several commands which build the program from source code.&lt;br /&gt;
&lt;br /&gt;
All in all, this script would probably work; it runs many standard popular repository programs and package managers, and runs the nearly-universal commands needed to build a program.  Most of the commands would simply give an error and exit, but hopefully the correct one will proceed with the install.&lt;br /&gt;
&lt;br /&gt;
One of the more subtle jokes in the comic is the inclusion of &amp;lt;code&amp;gt;apt-get&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;sudo apt-get&amp;lt;/code&amp;gt; in the same script. In most cases this would be redundant as the &amp;lt;code&amp;gt;sudo&amp;lt;/code&amp;gt; command is just to add admin permissions. This could be a reference to a joke in the Linux community about forgetting to include the sudo command. An example of this joke being used elsewhere was a  [https://twitter.com/liamosaur/status/506975850596536320 viral tweet] that showed a workaround for the issue. Sudo has also been used both by [[Randall]] in [[149: Sandwich]] and by Jason Fox to force Randall to let him appear on xkcd with [[824: Guest Week: Bill Amend (FoxTrot)]].&lt;br /&gt;
&lt;br /&gt;
Another explanation for this could be that plain &amp;quot;apt-get&amp;quot; is for Debian, while Ubuntu etc. use sudo.&lt;br /&gt;
&lt;br /&gt;
The tool &amp;lt;code&amp;gt;curl&amp;lt;/code&amp;gt; downloads files from the network (e.g., the Internet). Used like &amp;lt;code&amp;gt;curl http://xkcd.com/&amp;lt;/code&amp;gt; it downloads the xkcd main page and displays the HTML source code. The pipe &amp;lt;code&amp;gt;|&amp;lt;/code&amp;gt; in the script attaches the output of the command before the pipe to the input of the command after the pipe. Both commands are executed concurrently. &amp;lt;code&amp;gt;bash&amp;lt;/code&amp;gt; is a popular shell for Unix-like operating systems. The line &amp;lt;code&amp;gt;curl &amp;quot;$1&amp;quot; | bash&amp;lt;/code&amp;gt; tries to download a file from the network and to execute the download directly. &amp;lt;!--- Although this is a common practice for conveniently installing software, it is considered extremely insecure and should never be done. [ed. note: there's no reason this cannot be secure, especially if HTTPS with validated certificates is used, from a trusted domain which utilizes DNSSEC] --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The use of &amp;amp; at the end of each line causes the shell interpreter to execute the commands in parallel (asynchronously) instead of sequentially. Even if single commands fail, the rest of them will be executed. Note this is even the case for the final commands which attempt to change to the installed package, probably the only reason why this may not work completely for packages that do need compiling after being downloaded. (However, just running this script again would probably do the trick.)&lt;br /&gt;
&lt;br /&gt;
There appears to be a bug with the &amp;amp; at the end of the &amp;quot;git clone&amp;quot; line; since a git repository typically contains program source code, not executables, it may have been intended to retrieve the source code with git and then compile and install the program in the next line. In this case, the single &amp;amp; should be replaced with &amp;amp;&amp;amp;, an operator that will run the second command only if the first one has completed successfully. This plays into a second bug on the &amp;quot;configure&amp;quot; line, where the placement of the &amp;amp; means that only the &amp;quot;make install&amp;quot; command will be run asynchronously after the &amp;quot;configure&amp;quot; and &amp;quot;make&amp;quot; steps have finished in sequence. To make success as likely as possible, the two lines should be like this:&lt;br /&gt;
&lt;br /&gt;
 git clone &amp;lt;nowiki&amp;gt;https://github.com/&amp;lt;/nowiki&amp;gt;&amp;quot;$1&amp;quot;/&amp;quot;$1&amp;quot; &amp;amp;&amp;amp; (cd &amp;quot;$1&amp;quot;; ./configure; make; make install) &amp;amp;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The title text mentions the possibility that the same program may be in multiple repositories, so in this case, the script will download and install several versions, or it may fail on a number of repositories, in which case usually nothing bad happens. Since all the commands come from different operating systems, versions, or distributions, it is not very likely that more than one will work (with the exception of pip/easy_install and the two forms of apt-get) or even exist on the same system. It mentions that adding a way of automatically saying &amp;quot;yes&amp;quot; to questions asked during the different repository-fetching programs' running, by making them read input from another program that writes a (nearly) endless stream of &amp;quot;y&amp;quot;s, could simplify things further. &amp;lt;code&amp;gt;2&amp;gt;/dev/null&amp;lt;/code&amp;gt; redirects the second output stream (the &amp;quot;error stream&amp;quot;) to the null device driver, which discards all writes to it, meaning errors (the package not existing) will be ignored.&lt;br /&gt;
&lt;br /&gt;
==Transcript==&lt;br /&gt;
:[In the panel is a shell script which, unusual for xkcd, uses only lower case. At the top the title of the program is inlaid in the frame, which has been broken here.]&lt;br /&gt;
:&amp;lt;big&amp;gt;Install.sh&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;nowiki&amp;gt;#!/bin/bash&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:pip install &amp;quot;$1&amp;quot; &amp;amp;&lt;br /&gt;
:easy_install &amp;quot;$1&amp;quot; &amp;amp;&lt;br /&gt;
:brew install &amp;quot;$1&amp;quot; &amp;amp;&lt;br /&gt;
:npm install &amp;quot;$1&amp;quot; &amp;amp;&lt;br /&gt;
:yum install &amp;quot;$1&amp;quot; &amp;amp; dnf install &amp;quot;$1&amp;quot; &amp;amp;&lt;br /&gt;
:docker run &amp;quot;$1&amp;quot; &amp;amp;&lt;br /&gt;
:pkg install &amp;quot;$1&amp;quot; &amp;amp;&lt;br /&gt;
:apt-get install &amp;quot;$1&amp;quot; &amp;amp;&lt;br /&gt;
:sudo apt-get install &amp;quot;$1&amp;quot; &amp;amp;&lt;br /&gt;
:steamcmd +app_update &amp;quot;$1&amp;quot; validate &amp;amp;&lt;br /&gt;
:git clone &amp;lt;nowiki&amp;gt;https://github.com/&amp;lt;/nowiki&amp;gt;&amp;quot;$1&amp;quot;/&amp;quot;$1&amp;quot; &amp;amp;&lt;br /&gt;
:cd &amp;quot;$1&amp;quot;;./configure;make;make install &amp;amp;&lt;br /&gt;
:curl &amp;quot;$1&amp;quot; | bash &amp;amp;&lt;br /&gt;
&lt;br /&gt;
==Trivia==&lt;br /&gt;
*pip and easy install are package managers for Python&lt;br /&gt;
*brew is the successor/replacement for MacPorts and a package manager for OS X&lt;br /&gt;
*npm is the node package manager that maintains node.js packages&lt;br /&gt;
*yum is the package management tool for Red Hat Enterprise Linux and some derivatives.&lt;br /&gt;
*dnf is the package management tool for Fedora since version 22.&lt;br /&gt;
*pkg is the package management tool on BSD systems&lt;br /&gt;
*apt-get is the package management tool of Debian and derivatives (eg Ubuntu)&lt;br /&gt;
*steamcmd refers to Steam, the computer game client&lt;br /&gt;
*git is the revision control software used for eg. the linux kernel and gained a lot of traction through the github plattform&lt;br /&gt;
*configure/make/make install refers to the default way of compiling software from source (on Linux/Unix)&lt;br /&gt;
*curl is a tool for loading data via http:// (eg from a website), this data is then pushed to the shell interpreter (in order to install). &lt;br /&gt;
**Note: While this is a security nightmare, the Nvidia drivers for Linux were (but no longer are) installed like that&lt;br /&gt;
&lt;br /&gt;
{{comic discussion}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Programming]]&lt;/div&gt;</summary>
		<author><name>173.245.54.16</name></author>	</entry>

	<entry>
		<id>https://www.explainxkcd.com/wiki/index.php?title=Talk:1652:_Conditionals&amp;diff=114336</id>
		<title>Talk:1652: Conditionals</title>
		<link rel="alternate" type="text/html" href="https://www.explainxkcd.com/wiki/index.php?title=Talk:1652:_Conditionals&amp;diff=114336"/>
				<updated>2016-03-07T21:41:24Z</updated>
		
		<summary type="html">&lt;p&gt;173.245.54.16: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The title text... So he should both stop being pedantic in general and stop caring about conditionals in particular. What is it he does in the title text... the current explanation of that part is not clear to me. Is it completely clear who speaks which line in the title text...? --[[User:Kynde|Kynde]] ([[User talk:Kynde|talk]]) 15:03, 7 March 2016 (UTC)&lt;br /&gt;
:It is fairly obvious that the line &amp;quot;If you're done being pedantic, we should get dinner,&amp;quot; is provided by Cueball's friend, as it is already established that Cueball was the one being pedantic about conditionals in the first place. [[Special:Contributions/108.162.216.12|108.162.216.12]] 15:15, 7 March 2016 (UTC)&lt;br /&gt;
&lt;br /&gt;
To me the word &amp;quot;Conditionals&amp;quot; is clearly in the grammatical sense. Computer programming was invented literally centuries after the grammatical meaning, and the joke would have been as meaningful 3000 years ago as it is today. [[Special:Contributions/108.162.221.13|108.162.221.13]] 15:17, 7 March 2016 (UTC)&lt;br /&gt;
&lt;br /&gt;
The particular kind of conditional that Cueball's friend is using is called a &amp;quot;biscuit conditional,&amp;quot; after the example &amp;quot;There are biscuits in the sideboard if you want some&amp;quot; (from the philosopher J.L. Austin). There's a bit of discussion of them at [http://languagelog.ldc.upenn.edu/nll/?p=1469 Language Log]--Cueball is doing what Sam C talks about in the first comment, deliberately misunderstanding the conditional. The characteristic of these conditionals is that the truth of the consequent doesn't depend on the truth of the antecedent (the &amp;quot;if&amp;quot; clause), but the consequent isn't relevant if the antecedent isn't true--if Cueball didn't want to hang out, it wouldn't matter that his friend was in the city.&lt;br /&gt;
In the title text, Cueball thinks that his friend is uttering another biscuit conditional, and that just saying that they should get dinner. But the truth of the consequent really is dependent on the truth of the antecedent--if Cueball isn't done being pedantic his friend doesn't want to get dinner. So I think it is accurate to say &amp;quot;The intent is to show that because the initiator still believes that Cueball is still being pedantic, then he believes that it is not a good idea to have dinner together,&amp;quot; though maybe it could be expressed more clearly. [[Special:Contributions/162.158.60.23|162.158.60.23]] 15:57, 7 March 2016 (UTC)&lt;br /&gt;
&lt;br /&gt;
Didn't Demitri Martin do this joke like 10 years ago? :P [[Special:Contributions/108.162.221.63|108.162.221.63]] 18:11, 7 March 2016 (UTC)&lt;br /&gt;
&lt;br /&gt;
Whenever there is something like this that annoys me and I find out it has a name (like relevance conditional), it stops bothering me. [[User:HisHighestMinion|HisHighestMinion]] ([[User talk:HisHighestMinion|talk]]) 20:20, 7 March 2016 (UTC)&lt;br /&gt;
&lt;br /&gt;
The one that always bugs me is the Steven Universe intro song:&lt;br /&gt;
&lt;br /&gt;
    ''We are the Crystal Gems&lt;br /&gt;
    ''We'll always save the day,&lt;br /&gt;
    ''and if you think we can't&lt;br /&gt;
    ''We'll always find a way.&lt;br /&gt;
&lt;br /&gt;
Something about the &amp;quot;if&amp;quot; being at the beginning of the biscuit clause throws me. What if I think they can save the day? Then there's no guarantee that they will! But if I AM always thinking that they can't save the day, then they will ALWAYS find a way. Therefore I think they will always find a way. It's so circular![[User:NotLock|NotLock]] ([[User talk:NotLock|talk]]) 20:28, 7 March 2016 (UTC)&lt;br /&gt;
&lt;br /&gt;
The title text (you did it again - no I didn't) hearkens back to 725 Literally [[Special:Contributions/108.162.216.58|108.162.216.58]] 21:14, 7 March 2016 (UTC)&lt;br /&gt;
&lt;br /&gt;
So I read the caption as &amp;quot;WHEN I try not to be pedantic about conditionals&amp;quot; and was thinking that it was about &amp;quot;if/only if&amp;quot; directionality. ;-)&lt;/div&gt;</summary>
		<author><name>173.245.54.16</name></author>	</entry>

	</feed>