An algorithm is a repeatable process for determining the solution to a problem.
Apache Web Server, Apache HTTP Server
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.
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 (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
Command Line Interface
A CLI is a type of human-computer interface (i.e., a way for humans to interact with computers) that relies solely on textual input and output.
In multitasking computer operating systems, a daemon is a computer program that runs as a background process, rather than being under the direct control of an interactive user. Traditionally, the process names of a daemon end with the letter d, for clarification that the process is in fact a daemon, and for differentiation between a daemon and a normal computer program. For example, syslogd is the daemon that implements the system logging facility, and sshd is a daemon that serves incoming SSH connections.
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
wattswork.com to their machine-readable IP addresses like
22.214.171.124. 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
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 it’s 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/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 can mean “something that is equivalent to false”.
- falsy can also be spelled falsey.
- 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.
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.
IntelliJ IDEA is an integrated development environment written in Java for developing computer software. While IntelliJ IDEA is an IDE for Java, it also understands and provides intelligent coding assistance for a large variety of other languages.
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)
The Internet of Things (IoT) 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.
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.
Internet Protocol Address
An IP address is a numeric representation of a computer’s location on a network. IP addresses look something like 126.96.36.199. 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 (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.
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.
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.
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.
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.
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.
In telecommunications and computer networks, multiplexing (sometimes contracted to muxing) is a method by which multiple analog or digital signals are combined into one signal over a shared medium. The aim is to share a scarce resource. For example, in telecommunications, several telephone calls may be carried using one wire. Multiplexing originated in telegraphy in the 1870s, and is now widely applied in communications. In telephony, George Owen Squier is credited with the development of telephone carrier multiplexing in 1910.
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.
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.
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.
- Layer 7 – Application
Applications are UIs that users interact with directly. Examples include web browsers (Google Chrome, Firefox, Safari, etc.) and other apps like Skype, Outlook, and Office.
Layer 6 – Presentation
This layer is usually part of an operating system (OS) and converts incoming and outgoing data from one presentation format to another — for example, from clear text to encrypted text at one end and back to clear text at the other.
Layer 5 – Session
This layer sets up, coordinates and terminates conversations. Its services include authentication and reconnection after an interruption. On the internet, Transmission Control Protocol (TCP) and User Datagram Protocol (UDP) provide these services for most applications.
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.
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.
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 (Soc)
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 Apache to use HTTP to exchange data on a network. A server can also be called a host or a node.
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.
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”.
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:
- Single Responsibility
A class or a method should have only a single responsibility.
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.
- Interface segregation
Many client-specific interfaces are better than one general-purpose interface.
- Dependency inversion
One should depend upon abstractions, not concretions.
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.
- In computer science truthy can mean “something that is equivalent to true”.
- 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.
Serving multiple websites using a single instance of Apache. IP virtual hosting differentiates between websites based on their IP address, while name-based virtual hosting uses only the name of the host and can therefore host many sites on the same IP address.
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.
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.
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).