Main Page
Welcome to the explain xkcd wiki!
We have an explanation for all 1635 xkcd comics,
and only 28
(2%) are incomplete. Help us finish them!
Latest comic
Explanation
| |
This explanation may be incomplete or incorrect: Needs more detail. The table is great but should be corrected to not refer to a person's view or feelings. I think phrases are used more than once at the moment. |
In software engineering, a tech stack is the set of technology platforms and tools that a company or app uses. A common tech stack is LAMP, composed of a Linux operating system, an Apache web server, a MySQL database, and the PHP programming language. In this comic, the XKCD stack is introduced. The technologies comprising it are either non-existent, unreliable, or outdated.
Explanation of steps
| Layer | Explanation | ||
|
EBNF/CSS |
BNF or Backus–Naur Form is a syntax used for describing context-free grammars. EBNF is "Extended BNF", it is the same thing as BNF with a few more syntactic constructs intended to ease its use in the most common cases. 1343: Manuals mentionned EBNF. CSS or Cascading Style Sheets are a language used to describe what a web page should look like. Web pages are usually written in HTML, which describes the structure of the page (i.e. divides the document into paragraphs, lists, etc.) complemented with CSS which describes the look and feel of the page (colors, fonts, margins, etc.). EBNF/CSS would suggest CSS with strange syntax. | ||
|
Broken Java Applet |
In recent years it has become more difficult to run Java applets in several browsers. Chrome 45 stopped supporting NPAPI, Firefox will drop support by 2016, and Edge does not support NPAPI plugins at all. Furthermore, two days before this comic was published Oracle (the developer of Java) announced plans to officially end support of Java applets in an upcoming version. | ||
|
Archive.org Mirror |
Archive.org is a website which archives websites, and created the Wayback Machine.An Archive.org mirror would be the copy of xkcd on Archive.org. | ||
|
Hypercard.js |
HyperCard can be considered as a kind of predecessor for the world wide web developed at Apple. The file extension .js indicates that is was rewritten in JavaScript. A similar reference to JavaScript is found in 1508: Operating Systems. The .js extension also refers to node.js, where most library names end in .js | ||
|
QBasic on Rails |
A mix between QBasic and Ruby on Rails. QBasic was programming language on first PCs, known for spaghetti code. Ruby is a rather modern language, often used with Ruby on Rails web application framework. QBasic on Rails would likely mean rewrite of Ruby on Rails from Ruby to QBasic. QBasic no longer runs on modern computers, however a free open source rewrite of QBasic, called QB64, is available for Windows, Linux, Mac, and Android. There also exists a webserver on BASIC called RunBasic. | ||
|
[Blocked by AdBlocker] |
Ad blocking software are extensions to browsers that try to remove ads from web pages, so the user is not distracted by them. 624: Branding shows what "browsing without adblock" looks like. The joke is that AdBlocker is preventing us from seeing what makes up this portion of the stack. | ||
|
MongoDB/Excel |
MongoDB is a modern NoSQL database system, Microsoft Excel is a spreadsheet program from Microsoft, which is sometimes misused as a database system. | ||
|
Some piece that works so nobody asks any questions |
Writing any non-trivial piece of software always require a phase of debugging, which consists in finding and fixing bugs. With complex software, this is a long and tiring process, so when the product is finally finished no one dares to modify it any further for fear that it will fail in unexpected ways. After some time passes, it is even worse because nobody really remembers how the software was supposed to work, so the product becomes some kind of godlike treasure which must be treated with the utmost respect and reverence because, you know, if it stops working we're all doomed (1421: Future Self). After completion, Refactoring is the process of rewriting code for greater efficiency or reliability. However, if the performance is not 'too bad' (i.e. not unusably terrible in normal use) there is a great temptation to avoid this, in favour of the 'if it ain't broke, don't fix it' methodology. This could lead, for example, to a trained monkey and an abacus being used to crunch numbers. It works, but could be done far better. However, nobody wishes to change it, for fear of breaking a presently functional, if inefficient, system. | ||
|
Triply-Nested Docker |
Docker allows complete operating system to run under different operating system (OS) (with some performance penalty). Triply-nested docker would mean OS A running under OS B running under OS C running under OS D (running under OS E?). That would likely be a performance and management nightmare | ||
|
Paravirtual Boy® |
This is a reference to the Virtual Boy, a failed portable console created by Nintendo. Paravirtualization is a common buzzword in the virtualization community these days. "Virtual X" means simulated X. "Paravirtual X" means X is simulated, but is aware of simulation and cooperating, for faster performance. | ||
|
A dev typing real [sic] fast |
A dev is a software developer. This is possibly a reference to 341: 1337: Part 1, where Mrs. Roberts edits the TCP stream live while wearing oven mitts and baking cookies. Such a feat would require really fast typing. It looks like the xkcd Webserver is not a computer after all -- we have a person manually replying to HTTP protocol queries. Such a feat would indeed require real fast typing. | ||
|
Older version of our software |
People are often reluctant to switch to newer versions of software because, even though newer versions are supposed to have more features and fewer bugs, they end up confusing users. Users of older versions are used to doing everything with less features and circumventing old bugs. They don't know how to use the new features, which of course come with new bugs they haven't learned how to circumvent yet. It is also often the case that newer versions remove weird unused old features, breaking the workflow of users who actually did use such features and are left without a suitable replacement (1172: Workflow). Alternately, since higher parts of a stack are dependent on lower parts, this could also be a reference to how the consumer versions of Microsoft Windows (3.x, 95, 98, and ME) ran on the "older version" software Microsoft DOS until Windows XP. | ||
|
Mystery Networking Horror |
Randall suggests here that the whole networking stuff behind the XKCD service is both mysterious (no one actually knows the details) and horrific (technically questionable architecture and implementation, or somehow tentacled and eldritch in nature). | ||
|
Microsoft Bob Server® |
Microsoft Bob was a short-lived, failed attempt by Microsoft, around 1995, to provide a user-friendly interface for the Windows 3.1x, Windows 95 and Windows NT operating systems. It consisted of a virtual "house" and "rooms", and the idea was that you could click on a pen and open the word processor. It was heavily criticized and was soon discontinued. Randall seems to be making the suggestion the Bob has continued to be developed and now there's a Bob Server, similarly to Windows server. | ||
|
A giant CPU someone built in Minecraft |
Minecraft is a popular sandbox game where you place blocks to build things. Since the introduction of Redstone objects (materials used to create basic electric circuits within the game) people have made many machines within Minecraft, including calculators and clocks. The most complex of these machines simulate simple computers, capable of storing several lines of code and performing basic mathematical operations such as division, which requires thousands of blocks and extremely complex designs. |
The title text contains several jokes about the Java programming language:
- First, it refers to Java both as Sun Java and Macromedia Java. This is a pun on the fact that older documents refer to "Sun Java" where newer documents refer to "Oracle Java", as if there were two different languages. The fact is that Java was designed originally by Sun and then bought by Oracle, so it "changed name" even though the language is the same. Macromedia was the company that developed Flash before it was bought by Adobe. Both Flash and Java were popular in the early WWW to have interactive web pages, but both are being deprecated in favor of JavaScript.
- Second, the version numbers: older software products used to have two version numbers: major and minor (e.g. in MS-DOS 6.22 the major number is 6 and the minor is 22). Newer products tend to have hundreds of minor revisions, all of them numbered, so a typical user may well find themselves updating version 6.0.0.1 to 7.3.8.1 without knowing at all the differences between both versions or which other versions are in between. The ¾ in the Macromedia Java version is a joke on complex version numbers, which (so far) have never included fractions.
- Third, the 32-bit or 48-bit version: The Intel 80386 processor used an architecture known as IA-32, which implies the data bus is 32-bit wide and thus able to handle up to 4GiB of RAM memory. This was plenty for the early 1990s, when a typical home PC would have about 8MiB (this is 512 times less than 4GiB). However, about 10 years after that, a typical home PC could well use more than 4GiB of RAM, so several 64-bit architectures were created. These architectures are not compatible, so programs (including the Java Runtime Environment, or JRE) often have 32-bit and 64-bit versions. Furthermore, the JRE is heavily used by many web browsers, and for this to work the JRE and browser need to be the same "number of bits". This means that most people have installed both versions of the JRE to be able to use it with both 32-bit and 64-bit browsers. There's no 48-bit architecture (though some 64-bit processors including the most common ones don't actually use all 64 bits everywhere, ignoring some bits so actual virtual or physical memory is smaller (in the case of the most common ones, 48bits virtual and 40bits physical), they simulate a full 64-bit environment to allow adding more bits later, so there are no specific 48-bit applications).
- Fourth, an application trying to let the user install a new version of the JRE should direct the user to the download page in the java.com site, not to the main page which deals with lots of issues with java and is not particularly helpful when trying to update the JRE.
- Fifth, and continuing with the joke of users updating from 7.3.8.1¾ to 6.0.0.1 and not knowing why they should, the new version is said to "run fine but not really change anything". This is the usual behavior for Java updates: they run fine (possibly in opposition to 1197: All Adobe Updates, where updating must be done several times and the user is never sure they have installed all the newest updates), but after finished updating the user can't see any difference with the previous behavior, and/or may still be told that an update is required. Considering that 7.3.8.1¾ is bigger number than 6.0.0.1, it can also refer to the fact that the test for upgrading is incorrect and 7.3.8.1¾ is actually newer version.
- Sixth, Macromedia was a multimedia software company in the 90s that originally developed Flash, a popular plug-in similar to Java. Adobe purchased Macromedia in 2005.
Transcript
- Introducing
- The XKCD Stack
EBNF/CSS
Broken Java Applet
Archive.org Mirror
Hypercard.js
QBasic on Rails
[Blocked by AdBlocker]
MongoDB/Excel
Some piece that works so nobody asks any questions
Triply-Nested Docker
Paravirtual Boy®
A dev typing real fast
Older version of our software
Mystery Networking Horror
Microsoft Bob Server®
A giant CPU someone built in Minecraft
Is this out of date? .
New here?
Last 7 days (Top 10) |
||||||||||||||||||||||||||||||||||||||||||||
|
You can read a brief introduction about this wiki at explain xkcd. Feel free to sign up for an account and contribute to the wiki! We need explanations for comics, characters, themes and everything in between. If it is referenced in an xkcd web comic, it should be here.
- If you're new to wiki editing, see how to edit wiki pages. There's also a handy wikicode cheatsheet.
- Discussion about the wiki itself happens at the Community portal.
- You can browse the comics from List of all comics or by navigating the category tree at Category:Comics.
- There are incomplete explanations listed here. Feel free to help out by expanding them!
- We sell advertising space to pay for our server costs. To learn more, go here.
Rules
Don't be a jerk.
There are a lot of comics that don't have set-in-stone explanations; feel free to put multiple interpretations in the wiki page for each comic.
If you want to talk about a specific comic, use its discussion page.
Please only submit material directly related to (and helping everyone better understand) xkcd... and of course only submit material that can legally be posted (and freely edited). Off-topic or other inappropriate content is subject to removal or modification at admin discretion, and users who repeatedly post such content will be blocked.
If you need assistance from an admin, post a message to the Admin requests board.
![This site requires Sun Java 6.0.0.1 (32-bit) or higher. You have Macromedia Java 7.3.8.1¾ (48-bit). Click here [link to java.com main page] to download an installer which will run fine but not really change anything.](/wiki/images/d/d7/xkcd_stack.png)
