Dev Glossary


An algorithm is a repeatable process for determining the solution to a problem.


The Apache HTTP Server is an open source software web server. Apache is run on Unix-like operating systems and was developed for use on Linux.


Application Programming Interface
Defines how different software applications can communicate with each other. A software-to-software interface, not a user interface. A software company releases its API to the public so that other software developers can design products that are powered by its service.


Binaries is the plural of binary and refers to :

  • Binary file, composed of something other than human-readable text. A binary file is a file whose content must be interpreted by a program or a hardware processor that understands in advance exactly how it is formatted. A program (or hardware processor) has to know exactly how the data inside the file is laid out to make use of the file.
  • Executable, (ready-to-run program) a type of binary file that contains machine code for a computer to execute, often compiled from source code.
  • Binary code, a digital representation of text and data.


A bootloader is a piece of code that runs before any operating system is running and are used to boot operating systems. Each operating system has a set of bootloaders specific for it. Bootloaders usually contain several ways to boot the OS kernel and also contain commands for debugging and/or modifying the kernel environment. Since it is usually the first software to run after power-up or reset, it is highly processor and board specific. Most mobile or embedded devices encrypt access to the boatloader, thereby controlling drive partition access and “locking” the system. Jailbreaking a phone is a way of enabling access to a restricted bootloader.

Camel Case

Camel case (camelCase), also known as Camel Caps or more formally as Medial Capitals is the practice of writing compound words or phrases such that each word or abbreviation in the middle of the phrase begins with a capital letter, with no intervening spaces or punctuation. Examples include firstName, lastName, eyeColor.


Command Line Interface
A CLI is a type of human-computer interface that relies solely on textual input and output. A command-line interpreter or command language interpreter is a class of programs designed to read lines of text entered by a user, thus allowing the implementation of a command-line interface.


A computer or service that acts as part of an identified system.


A system component that is an individual compute platform. Types of computers include compute or processing hosts, servers, workstations and desktops, and portable devices and laptops. See also “host”.

Dependency inversion

One should depend upon abstractions, not concretions.


Domain Name System
The Domain Name System (DNS) is the Internet’s equivalent of a phone book. The directory matches human-readable domain names like to their machine-readable IP addresses like The full DNS system is composed of many networks around the world run on servers owned by a number of public and private organizations who maintain the top-level DNS service for free. Top-level domain names point to private servers called Name Servers which host the actual websites.


Document Object Model
The Document Object Model (DOM) is an API which represents the HTML page currently loaded in the browser. Programming languages can use the DOM API to change the document structure, style, and content. The DOM treats the HTML tag hierarchy as a logical tree structure where each tag in the HTML document is a node that can be accessed and manipulated. Although born from JavaScript (and used primarily by it) the DOM evolved into a separate entity which can be implemented in any language.


Don’t Repeat Yourself
In software engineering DRY is a principle of software development aimed at reducing repetition of software patterns, replacing it with abstractions, or repetition of the same data, using data normalization to avoid redundancy.


A text editor.


An “extensible” design can easily be extended by others. Most well designed programs have extensibility. Failing to design for extensibility limits the amount of flexibility of the program, and ultimately its usefulness.

Unfortunately the word “extendable” is sometimes used in place of extensible, but in development, code can only be extensible. Extensible systems can be extended by adding extensions, modules, add-ons, and plugins. If a program is expanded from its initial state, one can say the code has been extended. Some examples of extensible languages are XML, which can be “extended” with user-defined elements, or in a PHP application one can extend a class (object inheritance) to create a new feature.


In computer science falsy (also be spelled falsey) can mean “something that is equivalent to false”. A falsy value is a value that translates to false when evaluated in a boolean context by a loosely-typed programming language. JavaScript and PHP both use type conversion to coerce any value into a boolean in contexts that require it, such as conditionals and loops. The opposite of falsy is truthy.


Fortran (formerly FORTRAN), short for “Formula Translation” was the world’s first high-level programming language still in use today; developed at IBM by John Backus in 1957 as a programming tool for the IBM 704. Fortran was adopted by the scientific and military communities and used extensively in the Space Program, military projects and civil engineering. Today it is still a popular language for high-performance computing and is used for programs that benchmark and rank the world’s fastest supercomputers.


See “computer”.


Hostnames are human-readable labels that correspond to the network address of a computer connected to a network.


HyperText Transfer Protocol
The HyperText Transfer Protocol is the standard transmission protocol used on the World Wide Web. The Apache web server implements version 1.1 of the protocol, referred to as HTTP/1.1 and defined by RFC 2616.

Interface Segregation

The principal: Many client-specific interfaces are better than one general-purpose interface.

Internal Networks

Internal or “non-public” networks are networks which are not accessible from the internet.


The Internet is the name for the system by which independent networks can communicate with each other. The massive networking infrastructure operates using the Internet Protocol (IP).


A network operating like the World Wide Web but having access restricted to a limited group of authorized users (such as employees of a company).


Internet of Things
The Internet of Things is the extension of Internet connectivity into physical devices and everyday objects. Embedded with electronics, Internet connectivity, and other forms of hardware (such as sensors), these devices can communicate and interact with others over the Internet, and they can be remotely monitored and controlled.


Internet Protocol
IP is the communications protocol underlying the Internet. The Internet Protocol allows large, geographically diverse networks of computers to communicate with each other quickly and economically over a variety of physical links.

IP Address

Internet Protocol Address
An IP address is a numeric representation of a computer’s location on a network. IP addresses look something like Computers on the Internet use IP addresses to route traffic and establish connections among themselves but people generally use the human-friendly names made possible by the Domain Name System. IP addresses can be static or dynamic.


Just-In-Time compilation
Just-in-time compilation (also called dynamic translation or run-time compilations) is a way of running computer code which is compiled at run time, instead of before execution. Often human-readable source code is compiled to machine code, which is then executed immediately.


The central module of an operating system. It is the part of the operating system that loads first, and it remains in main memory. Because it stays in memory, it is important for the kernel to be as small as possible while still providing all the essential services required by other parts of the operating system and applications. Typically, the kernel is responsible for memory management, process and task management, and disk management.

KISS principle

Keep it Simple Stupid
Keep it Simple Stupid is a design principle noted by Kelly Johnson, lead engineer on the Blackbird spy planes in 1960. The KISS principle states that most systems work best if they are kept simple rather than made complicated; therefore simplicity should be a key goal in design and unnecessary complexity should be avoided.

Lady Monadgreen’s Curse

“Once you understand monads, you immediately become incapable of explaining them to anyone else.”

Lambda Functions

Lambda functions are scripts run by an event-driven, serverless computing platform provided by Amazon Web Services. AWS Lambda is a computing service that runs code in response to events and automatically manages the computing resources required by that code. Lambda functions can be written in Node, Python, Ruby, Java, Go, and .NET.


Linux, Apache, MySQL and PHP
LAMP is an open-source Web development platform, also called a Web stack, that uses Linux as the operating system, Apache as the Web server, MySQL as the RDBMS and PHP as the object-oriented scripting language. Perl or Python is often substituted for PHP.

The key to the idea behind LAMP, a term originally coined by Michael Kunze in the German magazine c’t in 1998, is the use of these items together. Although not actually designed to work together, these open source software alternatives are readily and freely available as each of the components in the LAMP stack is an example of Free or Open Source Software (FOSS).

LAMP has become a de facto development standard. Today, the products that make up the LAMP stack are included by default in nearly all Linux distributions, and together they make a powerful web application platform.

The original LAMP acronym has spawned a number of other, related acronyms that capitalize on the main focus of the original combination of technologies to provide feature rich Web sites. Some of these related Web stacks include LAPP, MAMP, and BAMP.

Lexicographical Sort Order

Lexicographical order is alphabetical order. The other type is numerical ordering. How it works: If the first digits match, then the second digits will be compared; but it compares like a String – that is 10 comes before 2 but 111 comes after 10 (but also after 1000). Because 0 is less than 1. A lexical sort compares the characters in each string as characters, not integral values.


Linting is the process of running a program called a linter that will analyze source code for potential programmatic and stylistic errors.


Open source computer operating system based on Unix. Mostly used on servers and web servers.

Pronounced lee-nucks or lih-nucks. A freely-distributable open source operating system that runs on a number of hardware platforms. The Linux kernel was developed mainly by Linus Torvalds and it is based on Unix. Because it’s free, and because it runs on many platforms, including PCs and Macintoshes, Linux has become an extremely popular alternative to proprietary operating systems.


Lisp was created at MIT in 1958 for artificial intelligence research and is the second-oldest programming language in widespread use, the first being Fortran. Popular applications written in Fortran include Emacs, G2, AutoCad, Igor Engraver, Yahoo Store.


Media Access Control
A MAC address is a hardware identification number that uniquely identifies each device on a network. The MAC address is manufactured into every network card, such as an Ethernet card or Wi-Fi card, and therefore cannot be changed.


Markup languages don’t do anything (calculate or run processes) but they do add semantic value to text. In other words it is a system for annotating that is syntactically distinguishable from the text. HTML is a markup language which describes text as a web page, while XML is a markup language which describes the meaningfulness of text.

Mobile Device

See “Portable Device”.


A namespace is a named collection of unique variable names (also called a symbol table). A namespace is a declarative region that provides a scope to the identifiers (the names of types, functions, variables, etc) inside it. Namespaces are used to organize code into logical groups and to prevent name collisions that can occur especially when your code base includes multiple libraries.

Naming Convention

A naming convention is a convention (generally agreed scheme) for naming things. Conventions differ in their intents, which can include useful information to be deduced from the naming structure.


Network Information Service
The Network Information Service, or NIS, is a client–server directory service protocol for distributing system configuration data such as user and host names between computers on a computer network. Sun Microsystems developed the NIS; the technology is licensed to virtually all other Unix vendors.
See the Linux NIS page.


Network File System
While “file system” makes up two-thirds of the NFS acronym, the Network File System is not an actual file system like NTFS or APFS. Instead, it is a protocol used to access files over a network. NFS can mount shared files in a local directory, allowing client systems to access remote data as a local folder.

Operating System (OS)

The operating system is the most important program that runs on a computer. Every general-purpose computer must have an operating system to run other programs. Operating systems perform basic tasks, such as recognizing input from the keyboard, sending output to the display screen, keeping track of files and directories on the disk, and controlling peripheral devices such as disk drives and printers.
For large systems, the operating system has even greater responsibilities and powers. It is like a traffic cop — it makes sure that different programs and users running at the same time do not interfere with each other. The operating system is also responsible for security, ensuring that unauthorized users do not access the system.

OSI Model

Open Systems Interconnection networking model
A 7-layer framework that describes the functions of a networking or telecommunication system. The TCP/IP protocol suite, which defines the internet, does not map cleanly to the OSI model.


A package is a collection of code which lives in its own namespace.


Personal Computer
Unless qualified, usually refers to a host running the Windows operating system.


Personal Information


Personally Identifying Information


A computing platform is the stage on which computer programs can run. A computing platform or digital platform is the environment in which a piece of software is executed.

The underlying hardware or software for a system. For example, the platform might be an Intel 80486 processor running DOS Version 6.0. The platform could also be UNIX machines on an Ethernet network.

The platform defines a standard around which a system can be developed. Once the platform has been defined, software developers can produce appropriate software and managers can purchase appropriate hardware and applications. The term is often used as a synonym of operating system.


In web development, a polyfill is code that implements a feature on web browsers that do not support the feature. Most often, it refers to a JavaScript library that implements an HTML5 web standard, either an established standard (supported by some browsers) on older browsers, or a proposed standard (not supported by any browsers) on existing browsers. Formally, “a polyfill is a shim for a browser API”.[1]

Portable Device

Components which are typically used from varying locations, including on-site and off-site. Mobile (portable) devices have a small form factor, are designed to operate without a physical connection, and possess local or removable storage. Examples include laptops, mobile phones, and tablets.

Portable Storage Device

Portable storage devices include digital media (USB, diskettes, tapes, external/removable hard drives, flash drives, and optical media. A portable device may contain storage, in which case it would also be considered a portable storage device.

Protocol-Relative URLs

Protocol-relative links (PRL), also known as protocol-relative URLs (PRURL), are URLs that have no protocol specified. For example, // will use the protocol of the current page, typically HTTP or HTTPS.

Proxy Server

Proxy servers sit between a client program (typically a Web browser) and an external server (typically another server on the Web) to filter requests, improve performance, and share connections.

Public Network

“Public” networks are networks which are accessible from the internet.


ROTate by 13 Places
ROT13 (sometimes hyphenated ROT-13) is a simple letter substitution cipher that replaces a letter with the 13th letter after it, in the alphabet. ROT13 is a special case of the Caesar cipher which was developed in ancient Rome.


Software as a Service
Software as a service (SaaS), sometimes referred to as “on-demand software” is a software distribution model in which a third-party provider hosts applications and makes them available to customers over the Internet, with access often licensed on a subscription basis. SaaS is one of three main categories of cloud computing, alongside infrastructure as a service IaaS and platform as a service PaaS. Microsoft formerly referred to SaaS as “software plus services”.


Server Application Programming Interface
SAPI is basically the API provided by the web server software (Apache, Microsoft IIS, Oracle iPlanet, etc). It is how other services and languages communicate with the server. For example, PHP comes with a number of different SAPIs for connecting with the Common Gateway Interface (CGI) and command-line interface (CLI) on the server. Microsoft uses the term Internet Server Application Programming Interface (ISAPI), and the defunct Netscape web server used the term Netscape Server Application Programming Interface (NSAPI) for the same purpose.


Systems Development Life Cycle
The systems development life cycle (SDLC), also referred to as the application development life-cycle, is a term used in systems engineering, information systems and software engineering to describe a process for planning, creating, testing, and deploying an information system. The systems development lifecycle concept applies to a range of hardware and software configurations, as a system can be composed of hardware only, software only, or a combination of both. There are usually six stages in this cycle: analysis, design, development and testing, implementation, documentation, and evaluation.

Separation of Concerns

Separation of concerns is a development design principle for separating code in a computer program into distinct sections, so that each section addresses a separate concern, and overlap in functionality as little as possible. A concern can be considered a self-contained part or layer of the application. Examples of separated concerns could be: presentation layer, business logic layer, data access layer, persistence layer. A program that embodies SoC well is called a modular program. Separation of concerns is a form of abstraction or data hiding. As with most abstractions, to use them, interfaces must be added and there is generally more net code to be executed, so there is often an associated execution penalty.


A server is a computer that delivers (serves) data. A web server is a computer that delivers data to the web over a network. A Web server needs an IP address and software like the Apache HTTP Server to use HTTP to exchange data on a network. A server can also be called a host or a node.


A networked service provided in support of an information system.

Shadow DOM

The shadow DOM is made of HTML elements which exist on the page, but are not part of the DOM. The video tag for instance, when rendered has many buttons, a slider, volume control, etc., all made from HTML and CSS — hidden inside of a shadow DOM subtree within the video element. Events fired by elements in the shadow DOM appear to come from their parent element.


A shell is a user interface for access to an operating system’s services and converts commands into appropriate operating system functions. The interface is usually implemented with a command-line interface (CLI) but can also use a graphical user interface (GUI). It is named a shell because it is the outermost layer around the operating system “kernel”. Although shell is often used to describe CLI, strictly speaking a ‘shell’ is a swappable application and can be any program that constitutes the operating systems user-interface, including fully graphically oriented ones. Common computer users rarely, if ever, use command-line interfaces and instead rely upon GUIs and menu-driven interactions.

Single Responsibility

A class or a method should have only a single responsibility.

Snake Case

Snake case (or snake_case) is the practice of writing compound words or phrases in which the elements are separated with one underscore character (_) and no spaces, with each element’s initial letter usually lowercased within the compound and the first letter either upper- or lowercase—as in “foo_bar” and “Hello_world”.

SOLID Principles

In object-oriented computer programming, the term SOLID is a mnemonic acronym for five design principles intended to make software designs more understandable, flexible and maintainable:


Secure Socket Layer
SSL is a protocol (now-deprecated and replaced by TLS) for sending information securely over the Internet. SSL encrypts data being transmitted so third parties cannot “eavesdrop” on the transmission.


Also called an “information system”. A discrete set of information resources organized for the collection, processing, maintenance, use, sharing, dissemination, or disposition of information.


Software entities should be open for extension, but closed for modification.

Liskov substitution

Objects in a program should be replaceable with instances of their subtypes without altering the correctness of that program.

Stack (Web Stack)

A collection of software usually comprised of an operating system, web server, database server, and programming language. One of the most most popular web stacks is LAMP (Linux, Apache, MySQL, PhP).


Transmission Control Protocol and the Internet Protocol
The TCP and IP protocols work together to comprise what is called the Internet Protocol Suite. Whereas the IP protocol deals only with packets, TCP enables two hosts to establish a connection and exchange streams of data. TCP guarantees delivery of data and also guarantees that packets will be delivered in the same order in which they were sent.


Transport Layer Security
Transport Layer Security, and its now-deprecated predecessor, SSL (Secure Sockets Layer), are cryptographic protocols designed to provide communications security over a computer network. Several versions of the protocols find widespread use in applications such as web browsing, email, instant messaging, and voice over IP.


In computer science truthy can mean “something that is equivalent to true”.
A truthy value is a value that translates to true when evaluated in a Boolean context by a loosely-typed programming language. JavaScript and PHP both use Type Conversion to coerce any value into a Boolean in contexts that require it, such as conditionals and loops. The opposite of truthy is falsy.


Uniform Resource Identifier
A URI identifies, but does not necessarily locate an unique abstract or physical resource on a computer network. Examples of a URI could be as basic as a file name like my_image.jpg or as complex as a URL. URL is a subset of the URI specification formally defined by RFC 2396. URLs, URNs, and URCs are all types of URI.


Uniform Resource Locator
A URL, also called a link or a web address is the global address of a document or other resource on the World Wide Web.

All URLs are URIs. URL is a subset of the URI spec. URIs identify and URLs locate; however, locators are also identifiers, so every URL is also a URI, but there are URIs which are not URLs.

The first part of a URL is called a scheme or protocol and it indicates what protocol to use. Examples are HTTP, HTTPS, and FTP.

The second part of a URL (everything after the ‘://’) is called a hostname or a resource name and is specified by the IP address or it’s domain name where the resource is located.

The third part of a URL (everything after the hostname) is called a path and is composed of segments separated by slashes.
The Uniform Resource Locator (URL) was developed by Tim Berners-Lee in 1994 and the Internet Engineering Task Force (IETF) URI working group. The URL format is specified in RFC 1738 Uniform Resource Locators (URL), and is a subset of URI specified in RFC 2396.


The user-agent is any tool that acts on behalf of the user. This role is primarily performed by a Web browser.

Virtual Host

The term Virtual Host refers to the practice of running more than one web site (such as and on a single instance of Apache. Virtual hosts can be IP-based, meaning that you have a different IP address for every web site, or name-based, meaning that you have multiple names running on each IP address. The fact that they are running on the same physical server is not apparent to the end user.


Virtual Private Network
A virtual private network is “tunneled” through a wide area network WAN such as the Internet. This means the network does not have to be located in one physical location like a LAN. However, by using encryption and other security measures, a VPN can scramble all the data sent through the wide area network, so the network is “virtually” private.


Virtual Private Server
A virtual private server is a virtual machine sold as a service by an Internet hosting service. The virtual dedicated server also has a similar meaning.

Web Service

The term Web service (WS) is either:

(generic) a service offered by an electronic device to another electronic device, communicating with each other via the World Wide Web, or (specific) a Web service implemented in the particular technology or brand, e.g W3C Web Services.

In a Web service, the Web technology such as HTTP—originally designed for human-to-machine communication—is utilized for machine-to-machine communication, more specifically for transferring machine-readable file formats such as XML and JSON.


A “Workstation”or desktop computer is a component which typically remains in fixed office location and does not provide hosted services.

World Wide Web

The World Wide Web, or simply Web, is a way of accessing information over the medium of the Internet. It is an information-sharing model that is built on top of the Internet. The Web uses the HTTP protocol, only one of the languages spoken over the Internet, to transmit data. Web services, which use HTTP to allow applications to communicate in order to exchange business logic, use the the Web to share information. The Web also utilizes browsers, such as Internet Explorer or Firefox, to access Web documents called Web pages that are linked to each other via hyperlinks. Web documents also contain graphics, sounds, text and video.

The Web is just one of the ways that information can be disseminated over the Internet. The Internet, not the Web, is also used for e-mail, which relies on SMTP, Usenet news groups, instant messaging and FTP. So the Web is just a portion of the Internet, albeit a large portion, but the two terms are not synonymous and should not be confused.


eXtensible Markup Language
XML is a markup language and a textual data format; a set of rules for encoding text documents in a format that is both human-readable and machine-readable. XML uses “tags” wrapped around parts of text to name and hierarchically organize the text. HTML4 (XHTML) is also an XML document and if it’s correctly written it can be parsed by any XML parser.


The XML-RPC protocol is a simple, portable way to make remote procedure calls over HTTP. It can be used with Perl, Java, Python, C, C++, PHP and many other programming languages. Implementations are available for Unix, Windows and Mac. For ore info see XML-RPC Intro and What Is XML-RPC


YAML Ain’t Markup Language
YAML is a human-readable data-serialization language. It is commonly used for configuration files, but could be used in many applications where data is being stored (e.g. debugging output) or transmitted (e.g. document headers).