Editing 1764: XKCDE

Jump to: navigation, search

Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision Your text
Line 8: Line 8:
  
 
==Explanation==
 
==Explanation==
 +
 
Randall has created a theoretical software environment named XKCDE (a portmanteau on xkcd and {{w|Collaborative development environment|CDE}} (Collaborative Development Environment)), which relies on the user creating a series of nested virtual machines inside each other (creating sort of a digital version of the {{w|Droste effect}}), which would likely cause extreme strain on the resources of the machine running it. This strain is explained in [[676: Abstraction]], at least for the normal case.
 
Randall has created a theoretical software environment named XKCDE (a portmanteau on xkcd and {{w|Collaborative development environment|CDE}} (Collaborative Development Environment)), which relies on the user creating a series of nested virtual machines inside each other (creating sort of a digital version of the {{w|Droste effect}}), which would likely cause extreme strain on the resources of the machine running it. This strain is explained in [[676: Abstraction]], at least for the normal case.
  
 
"Virtual Machines" are software which pretend to be PC hardware so that a "guest" operating system can run inside of them, under a "host" operating system. Nesting VMs is the process of making a guest also be a host to yet another guest. Generally this is considered wasteful of resources, especially beyond one or two layers deep, and is not done except in a test lab for very specific purposes.
 
"Virtual Machines" are software which pretend to be PC hardware so that a "guest" operating system can run inside of them, under a "host" operating system. Nesting VMs is the process of making a guest also be a host to yet another guest. Generally this is considered wasteful of resources, especially beyond one or two layers deep, and is not done except in a test lab for very specific purposes.
  
"Containers" are a lighter form of PC abstraction. Instead of emulating the entire physical hardware, they only emulate the software stack sitting on top of the kernel. A containerization tool will have its own standard library, software-stack and installed programs, but delegates all {{w|system calls|system calls}} to the host kernel.
+
"Containers" are a lighter form of PC abstraction. Instead of emulating the entire physical hardware, they only emulate the software stack sitting on top of the kernel. A containerisation tool will have its own standard library, software-stack and installed programs, but delegates all {{w|system calls|system calls}} to the host kernel.
 
This is more efficient because no hardware needs to be emulated, but the disadvantage is reduced isolation between host and guest. A misbehaving guest can induce kernel crashes that take the host with them.
 
This is more efficient because no hardware needs to be emulated, but the disadvantage is reduced isolation between host and guest. A misbehaving guest can induce kernel crashes that take the host with them.
 
The most well-known example of container software is {{w|Docker (software)|Docker}}.
 
The most well-known example of container software is {{w|Docker (software)|Docker}}.
  
Randall derives humor from repeating the nesting ''ad absurdum'' in a never-ending fractal of nested VMs, thus trapping the follower of the instruction forever, in a form of [[Nerd Sniping]]: Any external observer, such as your boss, who sees you doing this is likely to fire you for wasting company time (An outcome which is undesirable, though still better than being hit by a truck{{Citation needed}}).
+
Randall derives humour from repeating the nesting ''ad absurdum'' in a never-ending fractal of nested VMs, thus trapping the follower of the instruction forever, in a form of [[Nerd Sniping]]: Any external observer, such as your boss, who sees you doing this is likely to fire you for wasting company time (An outcome which is undesirable, though still better than being hit by a truck{{Citation needed}}). [https://xkcd.com/356/]
  
 
A software environment which disables both the machine it runs on and the user that runs it could be thought of as a useless machine.
 
A software environment which disables both the machine it runs on and the user that runs it could be thought of as a useless machine.
Line 27: Line 28:
  
 
=== Real Life Practice ===
 
=== Real Life Practice ===
In 'normal' software development, spinning up a (single, non-nested) VM is a practice to ensure that the development environment is identical between developers, thus minimizing hard-to-reproduce bugs due to local machine differences, such as [https://sourceforge.net/p/phpmyadmin/bugs/2343/#0e4a unmatching library versions], [http://www.moserware.com/2008/02/does-your-code-pass-turkey-test.html locale settings] or [http://askubuntu.com/questions/202857/cant-install-ati-proprietary-drivers-in-12-10 additional installed or missing software].
+
In 'normal' software development, spinning up a (single, non-nested) VM is a practice to ensure that the development environment is identical between developers, thus minimising hard-to-reproduce bugs due to local machine differences, such as [https://sourceforge.net/p/phpmyadmin/bugs/2343/#0e4a unmatching library versions], [http://www.moserware.com/2008/02/does-your-code-pass-turkey-test.html locale settings] or [http://askubuntu.com/questions/202857/cant-install-ati-proprietary-drivers-in-12-10 additional installed or missing software].
 
The single VM image is shared between all developers, who each spin up their own instance on their personal workstation.
 
The single VM image is shared between all developers, who each spin up their own instance on their personal workstation.
 
In such cases, spinning up the VM is the first step in bringing up a local development environment, after which additional steps will usually instruct which programs to open, which configuration settings to change, etc.
 
In such cases, spinning up the VM is the first step in bringing up a local development environment, after which additional steps will usually instruct which programs to open, which configuration settings to change, etc.
Line 34: Line 35:
  
 
==Transcript==
 
==Transcript==
:Installing the xkcd development environment
+
Installing the xkcd development environment
  
:[Inside a frame three instructions are shown:]
+
{| class="wikitable"
:1. Spin up a VM
+
|
:2. Spin up a VM inside that VM
+
# Spin up a VM
:3. Continue spinning up nested VMs and containers until you get fired
+
# Spin up a VM inside that VM
 +
# Continue spinning up nested VMs and containers until you get fired
 +
|}
  
 
{{comic discussion}}
 
{{comic discussion}}
  
 
[[Category:Computers]]
 
[[Category:Computers]]

Please note that all contributions to explain xkcd may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see explain xkcd:Copyrights for details). Do not submit copyrighted work without permission!

To protect the wiki against automated edit spam, we kindly ask you to solve the following CAPTCHA:

Cancel | Editing help (opens in new window)