<?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=Skagedal</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=Skagedal"/>
		<link rel="alternate" type="text/html" href="https://www.explainxkcd.com/wiki/index.php/Special:Contributions/Skagedal"/>
		<updated>2026-04-18T10:29:19Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>https://www.explainxkcd.com/wiki/index.php?title=1270:_Functional&amp;diff=50147</id>
		<title>1270: Functional</title>
		<link rel="alternate" type="text/html" href="https://www.explainxkcd.com/wiki/index.php?title=1270:_Functional&amp;diff=50147"/>
				<updated>2013-10-07T14:54:24Z</updated>
		
		<summary type="html">&lt;p&gt;Skagedal: Clarify what makes example #2 not tail-recursive&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{comic&lt;br /&gt;
| number    = 1270&lt;br /&gt;
| date      = September 26, 2013&lt;br /&gt;
| title     = Functional&lt;br /&gt;
| image     = functional.png&lt;br /&gt;
| titletext = Functional programming combines the flexibility and power of abstract mathematics with the intuitive clarity of abstract mathematics.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Explanation==&lt;br /&gt;
{{incomplete|1270: Functional}}&lt;br /&gt;
&amp;lt;!-- The concept of functional programming is not explained yet, it is debated if that should be explained before explaining recursion or afterwards or if at all --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[White Hat]] questions [[Cueball]]'s faith in {{w|functional programming}}. [[Cueball]] responds saying, &amp;quot;Tail recursion is its own reward.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Functional programming is a famous paradigm (or style) in modern programming that favors functions that can be evaluated like mathematical functions, i.e., the value returned only depends on the input given. Also, unlike {{w|Procedural programming|procedures}}, they always return a value, like {{w|Sine|sine(x)}} returns 1 when x is 90°. Furthermore, the function even can call itself, starting a loop. This is called {{w|Recursion (computer science)|recursion}}, each call does allocate its own memory (for example by using, but not limited to, a {{w|Call stack|stack}}), and works independently to the other calls.&lt;br /&gt;
&lt;br /&gt;
The main difference between functional programming and {{w|imperative programming}} (or {{w|Procedural programming}}) is that in imperative programming, the functions have a {{w|control flow}} and may have local variables. In order to {{w|Iteration|iterate}}, they usually use {{w|Loop (programming)|loops}}. This means that an &amp;quot;imperative function&amp;quot; may return a different result, given the same input due to changes in some local or global variable, whereas a &amp;quot;functional function&amp;quot; will ALWAYS return the same result for a given input.&lt;br /&gt;
&lt;br /&gt;
For example, the {{w|factorial}} function (e.g. &amp;quot;factorial(5) = 5 x 4 x 3 x 2 x 1&amp;quot;) can be coded imperatively as:&lt;br /&gt;
&lt;br /&gt;
 factorial(n):&lt;br /&gt;
     prod = 1&lt;br /&gt;
     while n &amp;gt; 0:&lt;br /&gt;
         prod = prod * n&lt;br /&gt;
         n = n - 1&lt;br /&gt;
     end&lt;br /&gt;
     return prod&lt;br /&gt;
&lt;br /&gt;
An imperative, recursive (but not tail-recursive) implementation can look like this:&lt;br /&gt;
&lt;br /&gt;
 factorial(n):&lt;br /&gt;
     if n &amp;gt; 0:&lt;br /&gt;
         return n * factorial(n-1)&lt;br /&gt;
     else:&lt;br /&gt;
         return 1&lt;br /&gt;
&lt;br /&gt;
In this situation, the recursion stops when the argument (n) is not greater than zero. Without the conditional definition, it would be an infinite loop. {{w|Tail recursion}} is a special case of recursion whose very '''last''' operation is to invoke the function itself or return a definite value.  The previous example is not tail-recursive, since after the call to &amp;quot;factorial(n-1)&amp;quot;, the returned value has to be multiplied by n.&lt;br /&gt;
&lt;br /&gt;
This (functional) example is tail recursive inside the helper function:&lt;br /&gt;
&amp;lt;!-- This is a valid Haskell definition of the factorial function: http://ideone.com/OrCUMp&lt;br /&gt;
  It is not really helpful to jump from imperative to functional at this point. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 factorial(n) = factorial_helper(n, 1)&lt;br /&gt;
 &lt;br /&gt;
 factorial_helper(n, prod) = &lt;br /&gt;
     if n &amp;gt; 0 then&lt;br /&gt;
         factorial_helper(n - 1, prod * n)&lt;br /&gt;
     else&lt;br /&gt;
         prod&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
 factorial(5) = factorial_helper(5, 1)&lt;br /&gt;
  factorial_helper(5,1) = factorial_helper(5-1, 1*5)&lt;br /&gt;
   factorial_helper(4,5) = factorial_helper(4-1, 5*4)&lt;br /&gt;
    factorial_helper(3,20) = factorial_helper(3-1, 20*3)&lt;br /&gt;
     factorial_helper(2,60) = factorial_helper(2-1, 60*2)&lt;br /&gt;
      factorial_helper(1,120) = factorial_helper(1-1, 120*1)&lt;br /&gt;
       factorial_helper(0,120) = 120&lt;br /&gt;
&lt;br /&gt;
In functional programming, tail recursion is detected by the compiler or interpreter and can be executed as efficiently as loops in imperative programming languages. This makes tail recursion an essential programming technique in functional programming.&lt;br /&gt;
&lt;br /&gt;
Cueball is making a play on words where &amp;quot;Tail recursion is its own reward&amp;quot; is used both in the &amp;quot;it is worth doing on elegance and intellectually satisfying grounds alone&amp;quot; sense and in the sense that &amp;quot;the 'tail call' of a function is its final step, and is the final step (and hence the result/reward) for &amp;lt;em&amp;gt;all levels&amp;lt;/em&amp;gt; of a tail-recursive function&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The title text says that to {{w|Abstract mathematics|abstract mathematicians}} functional programming is both powerful and flexible, as well as intuitive and clear since it comes very close to the way mathematicians usually describe functions. The humorous contrast is that, to non-mathematicians, functional programming can be exactly the opposite (thus being non-intuitive and unclear as abstract mathematics appears to them). And it is also a reference to a common saying about the imperative programming language, 'C': &amp;quot;C combines the flexibility and power of {{w|assembly language}} with the user-friendliness of assembly language&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Transcript==&lt;br /&gt;
:[White Hat stands behind Cueball, who is sitting at a computer]&lt;br /&gt;
:White Hat: Why do you like functional programming so much? What does it actually ''get'' you?&lt;br /&gt;
:Cueball: Tail recursion is its own reward.&lt;br /&gt;
&lt;br /&gt;
{{comic discussion}}&lt;br /&gt;
[[Category:Comics featuring White Hat]]&lt;br /&gt;
[[Category:Comics featuring Cueball]]&lt;br /&gt;
[[Category:Programming]]&lt;br /&gt;
[[Category:Recursion]]&lt;/div&gt;</summary>
		<author><name>Skagedal</name></author>	</entry>

	<entry>
		<id>https://www.explainxkcd.com/wiki/index.php?title=1270:_Functional&amp;diff=50146</id>
		<title>1270: Functional</title>
		<link rel="alternate" type="text/html" href="https://www.explainxkcd.com/wiki/index.php?title=1270:_Functional&amp;diff=50146"/>
				<updated>2013-10-07T14:51:40Z</updated>
		
		<summary type="html">&lt;p&gt;Skagedal: No reason to use three different (pseudo-)code styles for three simple examples.  In fact I think one would be enough, but I'm leaving the last one.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{comic&lt;br /&gt;
| number    = 1270&lt;br /&gt;
| date      = September 26, 2013&lt;br /&gt;
| title     = Functional&lt;br /&gt;
| image     = functional.png&lt;br /&gt;
| titletext = Functional programming combines the flexibility and power of abstract mathematics with the intuitive clarity of abstract mathematics.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Explanation==&lt;br /&gt;
{{incomplete|1270: Functional}}&lt;br /&gt;
&amp;lt;!-- The concept of functional programming is not explained yet, it is debated if that should be explained before explaining recursion or afterwards or if at all --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[White Hat]] questions [[Cueball]]'s faith in {{w|functional programming}}. [[Cueball]] responds saying, &amp;quot;Tail recursion is its own reward.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Functional programming is a famous paradigm (or style) in modern programming that favors functions that can be evaluated like mathematical functions, i.e., the value returned only depends on the input given. Also, unlike {{w|Procedural programming|procedures}}, they always return a value, like {{w|Sine|sine(x)}} returns 1 when x is 90°. Furthermore, the function even can call itself, starting a loop. This is called {{w|Recursion (computer science)|recursion}}, each call does allocate its own memory (for example by using, but not limited to, a {{w|Call stack|stack}}), and works independently to the other calls.&lt;br /&gt;
&lt;br /&gt;
The main difference between functional programming and {{w|imperative programming}} (or {{w|Procedural programming}}) is that in imperative programming, the functions have a {{w|control flow}} and may have local variables. In order to {{w|Iteration|iterate}}, they usually use {{w|Loop (programming)|loops}}. This means that an &amp;quot;imperative function&amp;quot; may return a different result, given the same input due to changes in some local or global variable, whereas a &amp;quot;functional function&amp;quot; will ALWAYS return the same result for a given input.&lt;br /&gt;
&lt;br /&gt;
For example, the {{w|factorial}} function (e.g. &amp;quot;factorial(5) = 5 x 4 x 3 x 2 x 1&amp;quot;) can be coded imperatively as:&lt;br /&gt;
&lt;br /&gt;
 factorial(n):&lt;br /&gt;
     prod = 1&lt;br /&gt;
     while n &amp;gt; 0:&lt;br /&gt;
         prod = prod * n&lt;br /&gt;
         n = n - 1&lt;br /&gt;
     end&lt;br /&gt;
     return prod&lt;br /&gt;
&lt;br /&gt;
An imperative, recursive (but not tail-recursive) implementation can look like this:&lt;br /&gt;
&lt;br /&gt;
 factorial(n):&lt;br /&gt;
     if n &amp;gt; 0:&lt;br /&gt;
         return n * factorial(n-1)&lt;br /&gt;
     else:&lt;br /&gt;
         return 1&lt;br /&gt;
&lt;br /&gt;
In this situation, the recursion stops when the argument (n) is not greater than zero. Without the conditional definition, it would be an infinite loop. {{w|Tail recursion}} is a special case of recursion whose very '''last''' operation is to invoke the function itself or return a definite value.&lt;br /&gt;
&lt;br /&gt;
This (functional) example is tail recursive inside the helper function:&lt;br /&gt;
&amp;lt;!-- This is a valid Haskell definition of the factorial function: http://ideone.com/OrCUMp&lt;br /&gt;
  It is not really helpful to jump from imperative to functional at this point. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 factorial(n) = factorial_helper(n, 1)&lt;br /&gt;
 &lt;br /&gt;
 factorial_helper(n, prod) = &lt;br /&gt;
     if n &amp;gt; 0 then&lt;br /&gt;
         factorial_helper(n - 1, prod * n)&lt;br /&gt;
     else&lt;br /&gt;
         prod&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
 factorial(5) = factorial_helper(5, 1)&lt;br /&gt;
  factorial_helper(5,1) = factorial_helper(5-1, 1*5)&lt;br /&gt;
   factorial_helper(4,5) = factorial_helper(4-1, 5*4)&lt;br /&gt;
    factorial_helper(3,20) = factorial_helper(3-1, 20*3)&lt;br /&gt;
     factorial_helper(2,60) = factorial_helper(2-1, 60*2)&lt;br /&gt;
      factorial_helper(1,120) = factorial_helper(1-1, 120*1)&lt;br /&gt;
       factorial_helper(0,120) = 120&lt;br /&gt;
&lt;br /&gt;
In functional programming, tail recursion is detected by the compiler or interpreter and can be executed as efficiently as loops in imperative programming languages. This makes tail recursion an essential programming technique in functional programming.&lt;br /&gt;
&lt;br /&gt;
Cueball is making a play on words where &amp;quot;Tail recursion is its own reward&amp;quot; is used both in the &amp;quot;it is worth doing on elegance and intellectually satisfying grounds alone&amp;quot; sense and in the sense that &amp;quot;the 'tail call' of a function is its final step, and is the final step (and hence the result/reward) for &amp;lt;em&amp;gt;all levels&amp;lt;/em&amp;gt; of a tail-recursive function&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The title text says that to {{w|Abstract mathematics|abstract mathematicians}} functional programming is both powerful and flexible, as well as intuitive and clear since it comes very close to the way mathematicians usually describe functions. The humorous contrast is that, to non-mathematicians, functional programming can be exactly the opposite (thus being non-intuitive and unclear as abstract mathematics appears to them). And it is also a reference to a common saying about the imperative programming language, 'C': &amp;quot;C combines the flexibility and power of {{w|assembly language}} with the user-friendliness of assembly language&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Transcript==&lt;br /&gt;
:[White Hat stands behind Cueball, who is sitting at a computer]&lt;br /&gt;
:White Hat: Why do you like functional programming so much? What does it actually ''get'' you?&lt;br /&gt;
:Cueball: Tail recursion is its own reward.&lt;br /&gt;
&lt;br /&gt;
{{comic discussion}}&lt;br /&gt;
[[Category:Comics featuring White Hat]]&lt;br /&gt;
[[Category:Comics featuring Cueball]]&lt;br /&gt;
[[Category:Programming]]&lt;br /&gt;
[[Category:Recursion]]&lt;/div&gt;</summary>
		<author><name>Skagedal</name></author>	</entry>

	<entry>
		<id>https://www.explainxkcd.com/wiki/index.php?title=1270:_Functional&amp;diff=50145</id>
		<title>1270: Functional</title>
		<link rel="alternate" type="text/html" href="https://www.explainxkcd.com/wiki/index.php?title=1270:_Functional&amp;diff=50145"/>
				<updated>2013-10-07T14:47:08Z</updated>
		
		<summary type="html">&lt;p&gt;Skagedal: /* Explanation */ small stylistic edits like putting space before parentheses&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{comic&lt;br /&gt;
| number    = 1270&lt;br /&gt;
| date      = September 26, 2013&lt;br /&gt;
| title     = Functional&lt;br /&gt;
| image     = functional.png&lt;br /&gt;
| titletext = Functional programming combines the flexibility and power of abstract mathematics with the intuitive clarity of abstract mathematics.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Explanation==&lt;br /&gt;
{{incomplete|1270: Functional}}&lt;br /&gt;
&amp;lt;!-- The concept of functional programming is not explained yet, it is debated if that should be explained before explaining recursion or afterwards or if at all --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[White Hat]] questions [[Cueball]]'s faith in {{w|functional programming}}. [[Cueball]] responds saying, &amp;quot;Tail recursion is its own reward.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Functional programming is a famous paradigm (or style) in modern programming that favors functions that can be evaluated like mathematical functions, i.e., the value returned only depends on the input given. Also, unlike {{w|Procedural programming|procedures}}, they always return a value, like {{w|Sine|sine(x)}} returns 1 when x is 90°. Furthermore, the function even can call itself, starting a loop. This is called {{w|Recursion (computer science)|recursion}}, each call does allocate its own memory (for example by using, but not limited to, a {{w|Call stack|stack}}), and works independently to the other calls.&lt;br /&gt;
&lt;br /&gt;
The main difference between functional programming and {{w|imperative programming}} (or {{w|Procedural programming}}) is that in imperative programming, the functions have a {{w|control flow}} and may have local variables. In order to {{w|Iteration|iterate}}, they usually use {{w|Loop (programming)|loops}}. This means that an &amp;quot;imperative function&amp;quot; may return a different result, given the same input due to changes in some local or global variable, whereas a &amp;quot;functional function&amp;quot; will ALWAYS return the same result for a given input.&lt;br /&gt;
&lt;br /&gt;
For example, the {{w|factorial}} function (e.g. &amp;quot;factorial(5) = 5 x 4 x 3 x 2 x 1&amp;quot;) can be coded imperatively as:&lt;br /&gt;
&lt;br /&gt;
 factorial(n):&lt;br /&gt;
     prod = 1&lt;br /&gt;
     while n &amp;gt; 0:&lt;br /&gt;
         prod = prod * n&lt;br /&gt;
         n = n - 1&lt;br /&gt;
     end&lt;br /&gt;
     return prod&lt;br /&gt;
&lt;br /&gt;
An imperative, recursive (but not tail-recursive) implementation can look like this:&lt;br /&gt;
&lt;br /&gt;
 factorial(n)&lt;br /&gt;
 {&lt;br /&gt;
     if n &amp;gt; 0&lt;br /&gt;
     {&lt;br /&gt;
         return n * factorial(n-1)&lt;br /&gt;
     }&lt;br /&gt;
     return 1&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
In this situation, the recursion stops when the argument (n) is not greater than zero. Without the conditional definition, it would be an infinite loop. The {{w|Tail recursion}} is a special case of recursion whose very '''last''' operation is to invoke the function itself or return a definite value.&lt;br /&gt;
&lt;br /&gt;
This (functional) example is tail recursive inside the helper function:&lt;br /&gt;
&amp;lt;!-- This is a valid Haskell definition of the factorial function: http://ideone.com/OrCUMp&lt;br /&gt;
  It is not really helpful to jump from imperative to functional at this point. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 factorial(n) = factorial_helper(n, 1)&lt;br /&gt;
 &lt;br /&gt;
 factorial_helper(n, prod) = &lt;br /&gt;
     if n &amp;gt; 0 then&lt;br /&gt;
         factorial_helper(n - 1, prod * n)&lt;br /&gt;
     else&lt;br /&gt;
         prod&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
 factorial(5) = factorial_helper(5, 1)&lt;br /&gt;
  factorial_helper(5,1) = factorial_helper(5-1, 1*5)&lt;br /&gt;
   factorial_helper(4,5) = factorial_helper(4-1, 5*4)&lt;br /&gt;
    factorial_helper(3,20) = factorial_helper(3-1, 20*3)&lt;br /&gt;
     factorial_helper(2,60) = factorial_helper(2-1, 60*2)&lt;br /&gt;
      factorial_helper(1,120) = factorial_helper(1-1, 120*1)&lt;br /&gt;
       factorial_helper(0,120) = 120&lt;br /&gt;
&lt;br /&gt;
In functional programming, tail recursion is detected by the compiler or interpreter and can be executed as efficiently as loops in imperative programming languages. This makes tail recursion an essential programming technique in functional programming.&lt;br /&gt;
&lt;br /&gt;
Cueball is making a play on words where &amp;quot;Tail recursion is its own reward&amp;quot; is used both in the &amp;quot;it is worth doing on elegance and intellectually satisfying grounds alone&amp;quot; sense and in the sense that &amp;quot;the 'tail call' of a function is its final step, and is the final step (and hence the result/reward) for &amp;lt;em&amp;gt;all levels&amp;lt;/em&amp;gt; of a tail-recursive function&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The title text says that to {{w|Abstract mathematics|abstract mathematicians}} functional programming is both powerful and flexible, as well as intuitive and clear since it comes very close to the way mathematicians usually describe functions. The humorous contrast is that, to non-mathematicians, functional programming can be exactly the opposite (thus being non-intuitive and unclear as abstract mathematics appears to them). And it is also a reference to a common saying about the imperative programming language, 'C': &amp;quot;C combines the flexibility and power of {{w|assembly language}} with the user-friendliness of assembly language&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Transcript==&lt;br /&gt;
:[White Hat stands behind Cueball, who is sitting at a computer]&lt;br /&gt;
:White Hat: Why do you like functional programming so much? What does it actually ''get'' you?&lt;br /&gt;
:Cueball: Tail recursion is its own reward.&lt;br /&gt;
&lt;br /&gt;
{{comic discussion}}&lt;br /&gt;
[[Category:Comics featuring White Hat]]&lt;br /&gt;
[[Category:Comics featuring Cueball]]&lt;br /&gt;
[[Category:Programming]]&lt;br /&gt;
[[Category:Recursion]]&lt;/div&gt;</summary>
		<author><name>Skagedal</name></author>	</entry>

	<entry>
		<id>https://www.explainxkcd.com/wiki/index.php?title=Talk:1234:_Douglas_Engelbart_(1925-2013)&amp;diff=42890</id>
		<title>Talk:1234: Douglas Engelbart (1925-2013)</title>
		<link rel="alternate" type="text/html" href="https://www.explainxkcd.com/wiki/index.php?title=Talk:1234:_Douglas_Engelbart_(1925-2013)&amp;diff=42890"/>
				<updated>2013-07-05T08:26:55Z</updated>
		
		<summary type="html">&lt;p&gt;Skagedal: remove header, looks bad when discussion is included on page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The song he claims to have written is, of course, Leonard Cohen's &amp;quot;Hallelujah&amp;quot;. But why? /[[User:Skagedal|Skagedal]] ([[User talk:Skagedal|talk]]) 08:22, 5 July 2013 (UTC)&lt;/div&gt;</summary>
		<author><name>Skagedal</name></author>	</entry>

	<entry>
		<id>https://www.explainxkcd.com/wiki/index.php?title=1234:_Douglas_Engelbart_(1925-2013)&amp;diff=42888</id>
		<title>1234: Douglas Engelbart (1925-2013)</title>
		<link rel="alternate" type="text/html" href="https://www.explainxkcd.com/wiki/index.php?title=1234:_Douglas_Engelbart_(1925-2013)&amp;diff=42888"/>
				<updated>2013-07-05T08:25:45Z</updated>
		
		<summary type="html">&lt;p&gt;Skagedal: /* Explanation */ add sentence about Hallelujah&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{comic&lt;br /&gt;
| number    = 1234&lt;br /&gt;
| date      = July 5, 2013&lt;br /&gt;
| title     = Douglas Engelbart (1925-2013)&lt;br /&gt;
| image     = douglas engelbart 1925 2013.png&lt;br /&gt;
| titletext = Actual quote from The Demo: '... an advantage of being online is that it keeps track of who you are and what you’re doing all the time...'&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Explanation==&lt;br /&gt;
{{incomplete}}&lt;br /&gt;
&lt;br /&gt;
The comic describes and references {{w|The Mother of All Demos}} in honor of {{w|Douglas Engelbart}}, who died July 2nd.  The demo is renowned for the numerous technologies Engelbart's team introduced, as indicated in the the first two panels.  The second panel contains the opening lyrics of Leonard Cohen's song {{w|Hallelujah (Leonard Cohen song)|Hallelujah}}. The third is a reference to contemporary internet memes, specifically [http://knowyourmeme.com/memes/subcultures/cats cat pictures] and [http://knowyourmeme.com/memes/yolo YOLO].&lt;br /&gt;
&lt;br /&gt;
The title text is a reference to recent revelations about spying by the United States {{w|National Security Agency}}.&lt;br /&gt;
&lt;br /&gt;
==Transcript==&lt;br /&gt;
:&lt;br /&gt;
&lt;br /&gt;
{{comic discussion}}&lt;br /&gt;
[[Category:Comics featuring real people]]&lt;br /&gt;
[[Category:Internet]]&lt;/div&gt;</summary>
		<author><name>Skagedal</name></author>	</entry>

	<entry>
		<id>https://www.explainxkcd.com/wiki/index.php?title=Talk:1234:_Douglas_Engelbart_(1925-2013)&amp;diff=42887</id>
		<title>Talk:1234: Douglas Engelbart (1925-2013)</title>
		<link rel="alternate" type="text/html" href="https://www.explainxkcd.com/wiki/index.php?title=Talk:1234:_Douglas_Engelbart_(1925-2013)&amp;diff=42887"/>
				<updated>2013-07-05T08:22:41Z</updated>
		
		<summary type="html">&lt;p&gt;Skagedal: /* Song question */ created login, changed signature&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Song question ==&lt;br /&gt;
The song he claims to have written is, of course, Leonard Cohen's &amp;quot;Hallelujah&amp;quot;. But why? /[[User:Skagedal|Skagedal]] ([[User talk:Skagedal|talk]]) 08:22, 5 July 2013 (UTC)&lt;/div&gt;</summary>
		<author><name>Skagedal</name></author>	</entry>

	</feed>