XKCD Stack
XKCD Stack
[A simple table with only one column and fifteen rows is shown. Text above:] Introducing The XKCD Stack
[The list of cells:] 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

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 it comprises are either non-existent, unreliable, outdated, or entirely irrelevant.
Another example of a tech stack is featured in 2166: Stack .
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 mentioned EBNF. CSS or Cascading Style Sheets is 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 dropped support in version 52, 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 . It's ambiguous whether the "Archive.org mirror" would be a copy of the xkcd server or of Archive.org itself. Hypercard.js HyperCard can be considered as a kind of predecessor for powerpoint 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 . QBasic on Rails A mix between QBasic and Ruby on Rails . BASIC is a programming language that was very widespread during the 80s. QBasic is an implementation of BASIC created by Microsoft in early 90s, that, among other things, added support for structured programming . QBasic, lacking several of the features present on modern computer languages, is known for its spaghetti code. Ruby is a rather modern language, often used with Ruby on Rails web application framework . QBasic on Rails would likely mean a port of Ruby on Rails, replacing Ruby with QBasic. QBasic no longer runs on modern computers, but there are a couple of free open source implementation of QBasic, one being QB64 and the other FreeBASIC , which are 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. This could be because: Someone inserted an ad in the stack description. Some sites do insert ads in the middle of tables and lists, a typical case being between posts in forums. An ad is actually an integral part of the stack. Some sites make ads an integral part of the site content, so that users with ad blocking software will be forced to disable ad blocking to be able to properly interact with the site. Usually, in real life, this is not really a case of ads being part of the site, only that the site artificially refuses to work until it has some confirmation that ads have been properly loaded in the client side (by means of some script within the ads which sends the confirmation to the server). Ad blocking software has misidentified that portion of the stack as an ad, when in fact it is not (i.e. a false positive). This happens in real life, and it is a common source of great pains for the owner of the site which is being misidentified as an ad.
MongoDB/Excel MongoDB is a modern NoSQL database system, Microsoft Excel is a spreadsheet program from Microsoft, which is sometimes used as a database system (rarely a good choice). 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 is a software container , which is a way that allows a complete operating system to run under different operating system (OS) (as long they share the same kernel, among other things). 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 . It was promoted as being a highly immersive, incredible experience , but the poor technology that it used caused it to be very criticized for not meeting the high expectations. Paravirtualization is a way of virtualization, that requires cooperation of the guest operating system, contrary to full virtualization , on which the guest operating system is not required to do anything special and the host handles everything. A dev typing real 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. 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. If this is the case, then it's possible that almost none of the other layers of the stack actually do anything. 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 NT. Paired with the previous layer, it could instead mean that the human is merely retyping the output of the older version. 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 clicking on objects in the room would open applications, for instance clicking on a pen would open the word processor. It was heavily criticized and was soon discontinued. Randall seems to be making the suggestion that 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. A Minecraft CPU capable of hosting a website would be ridiculously huge and nearly impossible to work with: the input/output would be needlessly unwieldy, and by the time the data is parsed any other computer could have finished the job already; and Redstone circuits in Minecraft work much slower than in real life, quite literally trillions of times slower.
The title text contains several jokes about the Java programming language:
[A simple table with only one column and fifteen rows is shown. Text above:] Introducing The XKCD Stack
[The list of cells:] 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
