1579: Tech Loops

Explain xkcd: It's 'cause you're dumb.
Jump to: navigation, search
Tech Loops
And when I think about it, a lot of "things I want to do" are just learning about and discussing new tools for tinkering with the chain.
Title text: And when I think about it, a lot of "things I want to do" are just learning about and discussing new tools for tinkering with the chain.


The comic is about how much time a geek might spend on a computer just to maintain the system itself, rather than actually using it for something relevant. This can in the worst cases go all the way up to the point where maintaining the system becomes the main goal. Often the operating system (OS) needs periodic updates, which might break some apps which in turn need to be updated; apps themselves might need to be updated, which can create all sort of incompatibilities which the geek then needs to spend time fixing. One term for this is "dependency hell".

Most people consider computers as tools to achieve something else — e.g. to surf the web, play games, read news or balance their bank account — and they would rather not have to spend lots of time on maintaining the OS or the computer if they can avoid it.

Here, however, Randall finds he's spending most of the time using his computer just for the sake of maintaining the OS or the hardware on said computer. It's tools for the sake of tooling, rather than tools as helpers to build something else.

A hardware equivalent would be the RepRap Project: get a 3D printer and end up spending all the time printing 3D parts for itself instead of creating something else like toys or art.

An alternative interpretation is how a simple task can get maddeningly tricky because of the inherent complexity of the system. An example of this appears in 949: File Transfer, where the simple task of sending a file from one computer to another gets practically impossible despite having all kinds of cloud tools available, many of them designed to perform much more complex tasks with one simple click. In this view, the box labeled "things I actually want to use my computer for" could refer to simple actions like transferring a file and all the rest of the graph are unsuccessful tiring attempts to solve the problem by installing increasingly complex tools which end up not solving the simple problem properly. This is similar to this traditional programming joke.

In the title text Randall realizes that what he really wishes to do it often only to learn about and discussing new tools to improve the chain. So in this way it is for sure only a system to support itself. But on the other hand, then the box with things he actually wishes to use the computer for, is then not disconnected from the rest, but an integral part of it all.

Other comics about the same concept are 349: Success and 763: Workaround.

Description of the boxes

There are 18 boxes in the chart, but only 12 different texts. 16 of the boxes are interconnected. Two are not connected to any other boxes.

Here is a list of all the items explained individually:

  • Tool: In this context, a tool is mostly any general purpose computer program. Typical tools are text editors and calendar applications. Randall is presumably spending all his time installing and maintaining tools but never using them for their intended purpose.
    • There are two tools which both are related to the updater and both have one entry and one exit. The first tool has an entry from the most active library (most arrows) and the second has an exit to the VM.
  • Updater: An application designed to automatically download and install new versions of an already installed program. Referenced in 1197: All Adobe Updates. The time spent in updating an application can't be used to get productive work from the application.
    • The updater has one entry from a tool, but also exits to another tool. Two other exits goes to the most active library (most arrows) and to the repository which is the only box without exits.
  • Repository: For programmers a repository is a database where programs are stored. All modifications of the programs are preserved for posterity, in the same way as the Wikipedia View history tab.
    • There are three entries, but this box has no exits. Thus the information stored here never leaves; this means the programs stored in the repository are not used.
  • Library: In this context, a library is a part of a computer program which is developed separately, with the idea that the library will be used for more than one program and therefore saving effort, as the library has to be developed only once. Often, programs require specific versions of specific libraries that can or can not be available. A typical example of a library often required and not always available is Microsoft's Framework Class Library, more known as .NET Framework.
    • There are six libraries. Four of them has one entry and one exit arrow and twice one library exits only to another library. The top left is the most active with two entries and three exits making it the second busiest box in the chart. But most important is the bottom right library that starts everything since this is the only of the interconnected boxes that does not itself have any entry. From this library you can reach all the other connected boxes starting from its only connection: Awful hack from 2009.
  • VM: A Virtual machine is a computer program designed to emulate a complete computer. Probably a reference to 1305: Undocumented Feature, combined with the next item "Chat client".
    • It has two entries as it obviously both need a tool and a hardware workaround to function. It exits to the chat client already mentioned.
  • Chat client: an Online chat program, probably a reference to 1305: Undocumented Feature, combined with the previous item "VM".
    • It has two entries, one from the most active library (most arrows) and one from the already mentioned VM. It exits to the repository which is the only box without exits.
  • IRC for some reason: Internet Relay Chat.
    • It is connected in a loop (entry and exit) only with Awful hack from 2009.
  • Custom settings: Some programs (and especially web sites) assume a fixed setup in the user's computer. Many web pages even state plainly that they are only intended to work in one single browser with some settings enabled. This is a nuisance for users, and it becomes helplessly burdensome when the user must install several programs requiring different settings.
    • Is connecting two libraries, exiting to the most active library (most arrows).
  • Hardware workaround: Sometimes a problem can be solved by hardware changes. Removing TV tuner or telephone modem cards, changing an USB device from one port to another, opening and closing the CD tray, etc. are operations that, in many cases, have led to solving a problem; most of the time with no one knowing exactly why such an operation should or could have any effect in the computer's behavior.
    • Has one entry from the most active library (most arrows) and two exits to VM and Awful hack from 2009
  • Awful hack from 2009: An example of an awful hack can be found in 1479: Troubleshooting. When an awful hack is necessary, it is often because less awful alternatives do not exist; so awful hacks tend to remain useful for many years. An example can be the 256-character limit in the Windows path for a file, which has been inherited from MS-DOS (way, way before 2009) and is still there up to Windows 10.[actual citation needed]
    • This is the most busy box with three entries and three exits. It has an entry from the only box that does not it self have any entries, the bottom right library. Another entry is from the Hardware workaround. It also form a simple entry exit loop with IRC for some reason, that box is not connected to any other boxes. And finally it exits to two libraries. One of these leads to the most active library (most arrows). From this hack all connected boxes can be reached, except the library that only has entry into the hack.
  • DLL needed by something: Although "DLL" is a term used by Microsoft Windows, all modern operating systems use dynamic libraries, each with its own name. A dynamic library is a part of a program which is not loaded when the program starts, but rather it's attached "dynamically" to the running process when it is needed. This has the advantage that the dynamic library is not loaded at all if it's not needed, and also several processes which need the same dynamic library can share the same copy in memory.
    • This box only leads to two question marks, and not to any of the other items. Modern computers have thousands of DLL files, the actual use of which is not often obvious even to tech-savvy people.
  • Things I actually want to use my computer for: All the other stuff is thus only there to make it possible to use the computer for these purposes.
    • But this box is not in any way related to all the tools libraries etc. mentioned here above. Which are thus in reality not needed at all.

The tech loops

The flow chart described:
→ means supports (key)

Things I actually want to use my computer for [isolated box with no links into or out of, by any of the following]
DLL needed by something → ? [two exits to unknowns]
Library (1) → Awful hack from 2009 →
Awful hack from 2009 → IRC for some reason → Awful hack from 2009 → (Loop)
Awful hack from 2009 → Library (2) → Library (3) → Repository
Awful hack from 2009 → Library (4) → Library (5) → Custom Settings → Library (6) →
Library (6) → Chat Client → Repository
Library (6) → Hardware Workaround →
Hardware Workaround → VM → Chat Client → Repository
Hardware Workaround → Awful hack from 2009 → (Loop)
Library (6) → Tool (1) → Updater →
Updater → Repository
Updater → Library (6) → (Loop)
Updater → Tool (2) → VM → Chat Client → Repository
(Note the Repository node leads to nowhere)


[A flow chart 18 boxes linked (or not) with arrows going in several different directions. At the top is an arrow pointing to the right with text under. The rest of the text in the chart is written inside the boxes.]
[Under arrow:]
[Going from the top below the tip of the arrow and reading left to right and top to bottom the following text is written in the boxes that all are in some way connected with each other. The number of arrows going in and out of each box is noted behind the text in square brackets as [in, out]:]
Updater [1, 3]
Tool [1, 1]
Tool [1, 1]
Repository [3, 0]
Library [1, 1]
Library [2, 3]
Library [1, 1]
Chat Client [2, 1]
VM [2, 1]
IRC for some reason [1, 1]
Custom Settings [1, 1]
Hardware Workaround [1, 2]
Library [1, 1]
Awful hack from 2009 [3, 3]
Library [1, 1]
Library [0, 1]
[The last box in the lower middle is not connected to any other boxes but has two exit arrows pointing to two questionmarks.]
DLL needed by something [0, 2]
[Box alone at the top right corner, with no connections:]
Things I actually want to use my computer for [0, 0]
[Caption below the panel:]
Every now and then I realize I'm maintaining a huge chain of technology solely to support itself.


  • In the first version of this comic is said "soley" instead of "solely" in the caption. This was corrected later on the release day.

comment.png add a comment! ⋅ comment.png add a topic (use sparingly)! ⋅ Icons-mini-action refresh blue.gif refresh comments!



There are only three loops; "Awful hack from 2009" and "IRC for some reason" forms one, "Tool" → "Updater" → "Library" → "Tool" is the second, and there's a long one from "Awful hack from 2009" → "Library" → "Library" → "Custom settings" → "Library" → "Hardware workaround" → "Awful hack from 2009". Any other path not from "DLL needed by something" ends at "Repository". 04:35, 18 September 2015 (UTC)

I think the fact that "Repository" ends to be a sink (only entering connections) is a mistake - all other have at least one entry and at least one exit --JakubNarebski (talk) 07:24, 18 September 2015 (UTC)
No, I think that makes sense. A repository is where something is stored. If it's in use by something, it's not a repository. Of course, I'm thinking that repository means something like "USB Hard Drive", so I might be wrong. 09:12, 18 September 2015 (UTC)
I agree to this. A repository is a perfect location for "dumping" things where they never come back Elektrizikekswerk (talk) 09:31, 18 September 2015 (UTC)
I interpreted it to mean that the repository hosts the things it is dependent on, using the things it is dependent on, making the loop conceptual. The code that is hosted in the repository is only ultimately required because of the need for the repository to host thing code that the repository runs on. 11:19, 18 September 2015 (UTC)
The library at the bottom right does not have any entry, so there is also a start! So one that only has exits and one that only has entries! No error there I also think!--Kynde (talk) 14:33, 21 September 2015 (UTC)

Doesn't Buddha sais "The Path is the Goal"? Just because what you are doing is on path which seems to go nowhere doesn't mean the path is not worth it. Did you saw any tourist complaining that the trek he's on is supposed to end on the same place it started? -- Hkmaly (talk) 12:07, 18 September 2015 (UTC)

Does it bother anyone else that he wrote "soley" or am I missing something? (talk) (please sign your comments with ~~~~)

It also bothers John and Nancy, but it doesn't bother me because he was obviously talking about doing it by means of a fish.-boB (talk)
The image is corrected [1]. 13:40, 21 September 2015 (UTC)

When I see this comic I think its less about "how tech people find complicated solutions to things" and more about how as time goes on they end up with increasingly complex workarounds to get old stuff to work. Like in https://xkcd.com/1305/ they wanted to use the chat group, but for that they needed the VM, but according to this comic they need hardware workaround for that, which needs a library to work, which needs custom settings, which needs a library, etc.... Thoughts? -- Pyrolo (talk) (please sign your comments with ~~~~)

I don't get the current "explanation" at all which goes off on a seemingly off-topic tangent on Android programming (not to mention that I don't agree that gps-based apps to find nearby gas stations are the typical introductory apps source code one might find.) From the design of the xkcd panel, it's obviously targeted at a Windows desktop computer rather than Android, given the mention of DLLs. You could trivially substitute DLL by "shared library" (aka ".so") and make it a Linux or other Unix-compatible system, which combined with Windows would cover 99.99% of existing desktop systems. And of course a reference to 349 shall be made when it comes to hardware workarounds. Given this context, the comic is more about how much of the time one might spend on a computer as a geek tends to be in maintaining the system itself rather using it, up to the point where maintaining the system becomes the main goal. Most people consider computers as tools to achieve something else -- e.g. to write a book or balance their bank account; however here Randall is using his computer just for the sake of maintaining the OS or the hardware on said computer. It's tools for the sake of tooling, rather than tools as helpers to build something else. If somebody knows how to express that more fluently, please do so.

A hardware equivalent would be reprap: get a 3d printer and end up spending all the time printing 3d parts for the printer instead of creating something else like toys or art.
I've modified the explanation with a variation of this; I've left the original explanation in place since maybe there's some value in it. Please edit as you see fit. Ralfoide (talk) 14:53, 18 September 2015 (UTC)
Actually, for many MIT students it is tools for the sake of tooling. Okay, that was a terrible pun that most people won't get. -- 05:56, 9 November 2015 (UTC)

A great deal of all that we do, as individuals, and as a society, directly or indirectly maintains our ability to do so. Such a tiny sliver of our lives is "unproductive", but that's literally the only reason we do any of the "productive" parts of life. The only things really worth doing are the things there is no real reason for doing. Does that make sense? Benjaminikuta (talk) 18:07, 18 September 2015 (UTC)

Yes, it's called overhead. 13:59, 26 January 2016 (UTC)

In a broader sense, one might even say that the basic human desire to socialise is evolutionarily advantageous, serving the purpose of continuing the species. In that broad sense, everything that we do is merely "maintaining a huge chain of technology solely to support itself". Reminds me of https://xkcd.com/59/. It's easy to forget why we do things in life. Benjaminikuta (talk) 18:14, 18 September 2015 (UTC)

Forget about official "tech people," even godforsaken ordinary users spend way too much time wrestling with this stuff. I myself always quail when I see a .dll in the distance. It has never ended well for me.NoniMausa (talk) 01:08, 19 September 2015 (UTC)

Sometimes you eat too much dogfood. If you write a toolkit, and then find you need to write a buildsystem (or other infrastructure) and at some point find your buildsystem using the toolkit, you are probably doing something wrong. Note the exception of writing an IDE in your toolkit, for your toolkit, is not only okay, it is doing it wring. 10:45, 19 September 2015 (UTC)

I'm the author of the original explanation (that about Android things). It looked good to me at that time (mostly justified by the "things I actually want to do with my computer" bit), however the "new" explanation by Ralfoide looks much better now, so probably mine should be just deleted (I'm not doing just that right now because I lack the time to search for useful bits to keep, if any). By the way, the Android story actually happened to a friend of mine just as told. :) 21:54, 19 September 2015 (UTC)

This is me again from another IP. I changed the wording of my original explanation and changed the Android stuff to a reference to comic 949. Now I feel like the first explanation was awfully worded and this one says about the same thing but fits much better. Or something 10:21, 21 September 2015 (UTC)

The current explanation is wrong. The joke is that there are a lot of running components in Randall's computer (services, daemons, applications...) whose only purpose is to enable the execution of the other components in the loop. In other words, performing busywork, which is a waste of computer resources. The chain probably started when Randall wanted to test a new software in Linux, that is known to have a nightmarish package system based on dependencies, so he had to install a lot of libraries and perform some ugly hacks to get the software working, which in turn required other packages to be installed and tweaked. At one point, one of the packages or hacks had a circular dependency with the original software and created a loop. By then, Randall had already forgotten why he wanted to use that software in the first place, and now he only uses it to keep the rest of the loop running. 10:41, 21 September 2015 (UTC)

The footer begins "Every now and then", so this is not about a single event. Also, the "DLL" part does not match this being Linux-specific. 11:23, 21 September 2015 (UTC)
Yeah, this is not the first time he accidentally created a self-sustained loop, but it probably always happen for the same reason. It's pretty clear to me that the strip refers to a linux system because its software distribution philosophy is literally a mess, unlike every other system whose applications are self-contained in one neat file with no other dependencies. To support my point, note how the DLL files are conveniently NOT part of the loop; this is what makes them hilarious and what's baffling Randall: he has no idea about which component is relying on them because they do not belong in a Linux system. In any case, the fact that there is a (probably windows) VM running in the mix, plus an Irc client, points to the loop being multi-system wide, so that is a botch of epic proportions. 14:47, 21 September 2015 (UTC)

The isolated 'mystery DLL dependency' reminds me of the Programmable Gate Array evolution experiment where an interesting solution to a problem created an efficient but highly unintuitive circuit 'design' within it that contained a segment that was not actually connected to anything else but performed a vital function (removing the isolated elements from the 'design' produced a non-working circuit, as would 'attaching' it, even neutrally, to the surroundings), though not by any method that the design and specification would make obvious. Here is one possible telling of the tale, although it doesn't exactly match the one that I recall. Look at the paragraph immediately under the "Evolving Complexity" heading for this version, however. (Or in the paragraph immediately under the "Tron kiss" picture in this other article, that I also found.) 22:12, 21 September 2015 (UTC)

I want that hour of my time back from following the ridiculous link to the RepRap Project! Do we really need to waste every one else's time too? --Ianrbibtitlht (talk) 05:29, 4 June 2017 (UTC)

"dll in use by something"... my life in a nutshell An user who has no account yet (talk) 18:47, 5 September 2023 (UTC)