Explain WTF

Nov 9, 2023 archived-projects

A couple years ago I was working with a group of great hearted well meaning people who just didn’t know anything about tech. So I decided to create a website where I explained terms to them - but in my typical manner. That was explain.wtf.

The idea was that I could create a profane website at the .wtf domain. I was super surprised when explain.wtf was available. Even though I’m archiving the project, I’m really reluctant to let that domain go! Heh.

There wasn’t really an effort at design. It was more about content. So, the landing page looked like this.

You could click any topic and learn a bit more about them. I’ll be pasting those pieces of content below.

The individual pages looked like this:

And then you could also send in a request for more terms to be defined. I only got two requests over the years that this ran - but I never was motivated to write them up. (Sorry those who sent me things!)

It was fun - but I don’t think it really adds anything to the internet to still have these up :) And I can save a few bucks on that domain - if I actually do let it go.

Content from Explain.wtf

Let’s go.


Remember when cars changed from leaded gas to unleaded? Yeah, me neither. While they had completely different (and certainly not interchangeable) fuel, they were still cars. That type of difference is similar to the difference between Angular and AngularJS.

Google invented AngularJS as a reactive Javascript framework. When a major upgrade came around, they completely changed the way you used their framework and changed the name to Angular. So, programmers might know AngularJS, or they might know Angular. But they’re not the same thing. But they’re related. Shit.

Angular is classified as a reactive framework. Most other tools and libraries require you to proactively change the user interface when data changes. Angular, and other reactive libraries/frameworks, “react” to data changes and update the interface automatically.

Angular is called a framework (and not a library), because it requires you to build your complete Javascript application according to its rules. Whereas libraries can be hooked together to create a full application, a framework pretty much dictates everything and removes your choice. When you compare the top three reactive libraries/frameworks, React) is the most flexible but has the largest amount of developer and skill fragmentation. Vue is in the middle (some choice, some forced configuration), and then there is Angular which basically says “my way or the highway.” The nice thing, though, is that when someone “knows Angular” they’re a lot likely to know the same things as other Angular programmers.

Angular is equally used between open source and proprietary projects.

Because Angular is a framework on top of Javascript, it’s likely that a programmer who knows Angular knows Javascript. But, that shit isn’t guaranteed. There are some Angular programmers who just royally fuck up plain Javascript. I guess the lack of rules and ceremony just isn’t their bag.


Apache is short for the Apache Server. This shit has nothing to do with helicopters. Oh, and it’s confusing because in nerd-land, the term server means two things: the physical hardware that computer software runs on, and also a specific program on the computer that serves, or responds, to requests for information. Cool.

Apache is software that runs on the computer to respond to requests from the internet. When your computer asks for a specific web page, and that request arrives at the host computer, Apache then decides what the fuck to send back to your computer. It determines if it should even respond to your shitty request (knock knock? Is Shaniqua.html there? “Naw”, Apache responds. “Shaniqua Don’t Live Here No More”), what file it might send (cat dot gif, pronounced like the peanut butter), or what page of data to send back (like a list of all the Pokemon).

Generally, people who specialize in Apache are Systems Engineers. They might specialize in optimizing for large traffic spikes or creating bridges between the public internet and private computer resources. Otherwise apache can be sort of a set-it-and-forget-it piece of software. When people say they know Apache, you gotta figure out if they actually know it (like how I know ALL the lyrics to Fresh Prince of Bel-Air) or if they’re just familiar with it (like I am with my belly button).

Apache is part of the LAMP Stack.

Full Stack

When people say full stack, they usually mean “full stack developer” where “full stack” defines, broadly, the skillset that this developer or programmer has. If you were hoping for a little bullshit, a bit more details, and then some nuance discussion, you’ve come to the right place.

The term “stack” refers to the languages and/or servers and programs that make up the entire offering or service. You might refer to the LAMP Stack when talking about the languages and servers that support a specific back-end program. So, stack is just a fancy fucking programmer term for a container or grouping.

Most of the time, the “full stack” term is used in web-based programming environments. It describes what programming language on the back end, what database things might be stored in, what server will service the request and response, and what the user display is programmed in.

Where’s that nuance you were talking about? Yeah, I got you:

When someone says they’re a “full stack” developer, that doesn’t necessarily mean they’re a pro in all of the things they claim to know. A purely front-end (user interface) or back-end (processing and data) programmer usually seems to almost brag about how they don’t know the other discipline. Full-stack developers are saying they can take the place of both of these programmers. This usually isn’t the case. Instead, they usually focus on one discipline and then are sorta shitty at all the rest. It’s really rare to find a pro full-stack developer.


Javascript is a programming language that helps make interactive web pages. Actually it’s not so much a programming language as it’s a scripting language. Actually its not confined to the browser anymore and does a lot of things. Ugh, it’s gonna be one of those definitions, isn’t it? Where shit goes all over the place… YUP!

Javascript first started out as a way to script interactive actions on a web page. Want some form fields to appear without reloading the page? Move an item from one side to another? Or create a complex application in a web page? These are all things that Javascript was created to achieve. It allowed programmers to script interactions that ran solely on your computer, not on their server. It’s sometimes referred to as a scripting language, and not a programming language, because the way it’s used. Honestly, that’s not that important, and if someone starts arguing with you about this, this is just the start of a boring, dull, monotonous conversation. Run away.

Later, a specific way to use Javascript on the server was introduced. This was called Node or NodeJS.

This allowed programmers who knew Javascript to now apply their craft to both the front and back end of websites (they could program in the browser and on the server, using the same language. Before NodeJS, this was not very common.)

Because browsers like Internet Explorer or Mozilla Firefox have their own unique way of processing Javascript, sometimes you can write some Javascript that works in one browser but not another. To make things easier and more cross-browser compatible, libraries like jQuery or Prototype were introduced. They added a syntax on top of Javascript to remove the need to know the intricacies of each browser. Later, to support newer programming methodologies and make complex programming solutions simpler for the average programmer, frameworks like React and Vue were introduced. Because of the many steps that frameworks and libraries remove a programmer from the underlying Javascript, its now possible for them to know a framework but know very little about Javascript.

LAMP Stack

Good fucken question. Lot of people don’t actually know - but they throw this term around. It’s like when someone says indubitably but they don’t know what the fuck that means. You’re already smarter than 3/4ths of the people who use this term by actually looking up the definition.

The LAMP Stack is a term that means a specific set of technologies that makes a website function. LAMP is an acronym that stands for Linux, Apache, MySQL and PHP.

When someone says they know the LAMP stack, that’s a pretty big fucken claim. This means they’re professing to know how operating systems work (Linux), how the web server works (Apache), how databases work (MySQL) and how to program using PHP. Each of these are their own full discipline. Most of these people are blowing smoke up your ass. That, or they’ve been in the game long enough to be cranky, know their shit, and make a website like this fucken one.

LEMP Stack

LAMP was cool - because it was an acronym and also a word - yay! Well, for this stack, we had to make up a word… sigh.

The LEMP Stack is a term that indicates a specific set of technologies that makes a website function. LEMP is an acronym that stands for Linux, NGINX (“Engine-X”), MySQL and PHP.

When someone says they know the LEMP stack, that’s saying a fucking lot. This means they’re claiming to know how operating systems work (Linux), how the web server works (NGINX), how databases work (MySQL) and how to program using PHP. Each of these are their own full set of technologies that require years of practice, research and hands-on skill. Most of the time, these fuckers are just lying to you to make themselves sound big-time. Or when they say they “know” they mean, they know “about” but don’t challenge them. Long-time programmers, who are cranky like this website’s author, are likely to know the stack fully. The recent grad, probably not.


Linux is an operating system. Operating systems bridge the gap between the computer hardware and what the user instructs the computer to do. Operating systems you might be familiar with are MacOS or Windows.

This is another one of those things that people confuse being able to use it with fucking knowing it. Most people claim to know Linux just know how to use it. Understanding it requires a much deeper knowledge and far more nerdiosity. Ask someone “why might you use single-user mode in linux?” or “what benefits would you get from partitioning the disk by hand versus letting it happen automatically?” When you see the blank stare of death, that means they just use it, not know it.

Linux is an open source operating system. This means that anyone can see how it was made. This also means that a community of people, a mix between volunteer and paid, contribute to the programming and distribution of it. For some people, that shit is scary: an operating system where anyone can see the source and tweak it. But, there is a process for accepting updates and changes, and a robust testing system.

Linux can be smaller in size than most operating systems. That allows it to be embedded into many different smart devices. If your fridge is smart, its probably running Linux.

Linux is part of the LAMP Stack.


MySQL is an acronym, well actually it’s not, it’s a combination of someone’s name, and an acronym. Whatever. Nevermind. Forget that. Let’s start over. We’re being too fucken fancy here with history lessons and shit.

MySQL is a database. Its job is to store information and make it searchable and retrievable. You can think about it like it’s a big spreadsheet almost. It has rows, columns, multiple data formats, etc. But, without a user interface. Programmers build shit on top of MySQL in order for you to access and manipulate the data. For example, when you’re wasting time on Facebook, that’s programming on top of a database like MySQL. MySQL stores all of your useless status updates.

MySQL also has a form of programming and automation inside of it. These are referred to as stored procedures and triggers respectively.

This is another one of those tools that you can know enough about, but just enough to be dangerous. There are whole disciplines related to using and managing MySQL in the most efficient way. It’s common, though, to find programmers who say they know this shit, but really they know just enough to fuck it up and slow down the app.

MySQL is part of the LAMP Stack.


NGINX, pronounced “engine-x,” is a web server. It’s like Apache but better, or worse. Depending on your use-case, your opinion, what direction the wind is blowing, etc. Programmers and IT folk are fickle.

NGINX is software that runs on the computer to respond to requests from the internet. When your computer requests a specific web page, NGINX is responsible for helping to figure out what the fuck to send back. Let’s be honest, just read the Apache page, and then come back to this article. It’s hard thinking of new shit to say about a very similar thing.

There are differences between versions of web servers like Apache or NGINX. NGINX is a bit newer and arguably faster than Apache. Its modular architecture allows it to change and adapt to new configurations more rapidly. In the world of webservers, you might think of Apache as the journeyman and NGINX as a recently graduated star apprentice.

NGINX is part of the LEMP stack.


NodeJS, sometimes just referred to as Node, is Javascript that is programmed and ran solely on the server or back-end. However, this is where it gets fucking confusing. If a programmer knows Javascript, they may be able to program in the browser or in NodeJS. However, they may not be able to do it in both. If a programmer knows NodeJS, that doesn’t mean they know how to program Javascript in the browser. Ok.

NodeJS is considered an Open Source language. As with most languages, it has gone through many iterations and versions. This means that programs written in one version of NodeJS may not function properly in another version.

Because of the unique architecture of the NodeJS programming language, it’s often used to handle larger groups of requests at the same time. While it can be programmed to respond directly to requests from the internet, its usually placed behind a webserver like Apache or NGINX. NodeJS is the programming language in the MEAN stack.

Open Source Software

Say you speak English but you come across some Spanish sentences. You can recognize the letters that make up that language and you know that language is used to communicate to a specific group of people, but you maybe don’t know more than that. You recognize the letters, but you can’t read the language. Programming languages are like that. They’re made up of reasonably recognizable letters, numbers and symbols that help communicate from one party to another. In this case, the second party happens to be a computer.

The collection of programming language “sentences” is called source code. Source code is the unique grouping of instructions that help create a product. Good source code makes an awesome Mercedes. Bad source code makes a piece-of-shit LeBaron convertible. Companies may protect their source code, or keep it ‘closed’, as a competitive advantage.

Open source software is software that is made where the source code is free and open for anyone to take, read and use. How the fuck do they make money, then? Well, that’s a bit more tricky. Most often, open source software itself doesn’t make money for the individuals or companies that create it. (Or maybe through donations… but probably not that likely, because people can be cheap bastards) They’ve created this as a labor of love, because programming is a passion, or they’ve been given things for free, and they want to give back.

Sometimes programmers who use primarily open source tools say they do open source programming. That can mean that they give away their software for free or that they keep it protected. The term refers to the building blocks of the program, not always the end result.

Companies can make money with open source software by offering services for a fee. You can get the software for free, but they may provide paid support or paid configuration offerings. For example, a company who programs in open source PHP can’t and won’t charge for access to PHP, but they will charge you to create a custom combination of the features of PHP that make up a unique configuration: your program.


First thing you gotta know about PHP is its amazing and shitty all at the same time. Like a gas-station burrito at 2a.m.

PHP is one of the original godfathers of web programming. Sure, there was shit before it, but this is where it kinda really kicked off. PHP is a language that programmers use to program the logic of websites on the server. It helped popularize interactivity like sessions and guest books (remember guest books? No? You don’t know what you’re missing out on…)

PHP stands for Personal Home Page. It started out as a way to make things easier to program, so it wasn’t really feature-filled and planned. This lead to some really shitty ways of doing things (and hence why sometimes you’ll hear programmers turn their nose up and hate on PHP.) It’s progressed since it was created in 1994, though. Many enterprises have used PHP (or flavors of it) including Yahoo and Facebook.

Also Wordpress, which is about 30% of the internet, is written in PHP. Popular PHP frameworks (pre-made shit to make shit easier/faster) include (but are not limited to) Laravel and Symfony.

PHP is also known as Open Source. This means that anyone can see how the language was created and look through the source code. It also tends to mean that programming done in PHP becomes open source itself (but not always).

PHP programmers are sometimes referred to as back-end programmers. This just means that they tend to deal with business processes and databases more on the server instead of in your browser.

PHP is part of the LAMP Stack.


You gotta hand it to Facebook for great branding - they knocked it out of the park when they created and named React. React or ReactJS is a Javascript library for the front-end or browser. Its claim to fame and uniqueness is that it’s reactive to data changes (hence the name). Whereas other tools and libraries required you to proactively change the interface elements when data changed, React was built to react to data changes and update the interface automatically.

There are a number of reactive type libraries and frameworks available (like Angular and Vue). React is unique in the flexibility and lack of configuration it requires. This means a programmer can pick any number of other libraries and tools to extend and enhance the target application. This flexibility means that there are many inventive ways to do the same thing, which of course leads to a lot of reinventing the fucking wheel. The downfall is there are so many options, it’s hard to be able to quantify what ‘experience with React’ really means. One React project can look vastly different than another.

React is pretty fucking popular with open source projects. But it’s not solely limited to open source projects. It also spawned a number of toolsets like React Native, which is mobile application programming but using React as the programming language.

While React is a library on top of Javascript, it’s likely that a programmer who knows React knows Javascript. However, as with all this shit, there are times when a React developer is so steeped in that discipline, that they just shit the bed when it comes to writing regular Javascript.


For being a bunch of smarty-pants, programmers did a piss-poor job of coming up with words to describe shit. Server is another example of a word that means a few things. But that doesn’t mean you have permission to use it wrong like you might have been doing (“my server’s down - I can’t get on the net!” no. No to all of that.)

First, a server refers to a computer that’s main job is to stay on and respond to requests. Its job is to ‘serve’ requests with responses. You may have a laptop that sometimes goes dead (for shame!) or a desktop that you turn off at night. A server is constructed in such a way that it’s more resilient and stays powered up for days, weeks, or even years at a time. When you go to lame dad jokes dot com, there’s a server somewhere that’s on the other side of your connection, supporting the software that is required to give you that webpage.

Speaking of software, this is where it gets fucken confusing…

Second, a server refers to a type of software which responds to requests. One example is the apache server which serves web pages back to eager little web surfers just like you.

Using internet-related things to help define what a server is doesn’t make a server only useful for the web. A server may be a computer that responds to telephone signals or software that responds to requests to allow you through a security system protected door.

Oh - and coming full circle: a server is not your fucking internet. You likely don’t have a server and yours isn’t down. If you can’t get to your gerbil beauty pageant website, just say “my internet connection is down” instead.


It’s not clear if programmers are silly or if they’re geniuses. Vue is a Javascript library that is used for the front-end or browser. You might say it’s used in the ‘view’ of an application. Oh, and vue means sight or vision in French. Clever.

Vue or VueJS is classified as a reactive library. Most other tools and libraries required you to proactively change the user interface when data changes. Vue, and other reactive libraries, “react” to data changes and update the interface automatically.

There are a number of reactive type libraries and frameworks available (like Angular and React). Vue is sort of a middle child between React and Angular. It has more configuration and less flexibility than React, but is not as rigid in configuration and usage as Angular. This tightened way of doing things allows programmers to spend less time reinventing the wheel and more time focusing on improving the core library. Oh, and where Angular and React are created and managed by big companies (“The Man”), Vue is a community-driven project.

Vue is often used with, but not limited to, open source projects. (That sounds like something a fucken lawyer would have wrote.) Similar to React, Vue has spawned a number of side projects that allow a programmer to program with Vue but create other products besides browser-based interfaces.

Because Vue is a library on top of Javascript, it’s likely that a programmer who knows Vue knows Javascript. However, as with all this shit, there are times when a Vue developer only knows Vue configuration, and is shit at Javascript programming.

Go to All Posts