A collection of terms and definitions used by computer programmers. Focused on approachability, clarity, and precision.
Instead of memorizing these terms, look up words you run across frequently that you may have a fuzzy mental model for.
API (Application Programmable Interface)
An API is a way to expose parts of a program so other programs may use it.
APIs can be built on the Web as Web APIs or they can be programs running on your computer.
An example of an API for a program are browser plugins. Plugins such as Hey Girl and Mustachio Redux use the browsers api to change pictures as you browse the web.
Absolute Path
In the context of an OS (*nix, Windows), an absolute (or full) path is one that points to the same location on the file system regardless of the present working directory, e.g. /Users/sandra/Documents/homework.txt
.
In the context of the web, an absolute path is synonymous with the URL. At the least, it includes the protocol, domain, and a path to a file or resource, for example: http://www.sandra.me/homework/history.html
. In this example, http
is the protocol, www.sandra.me
is the host, and /homework/history.html
is the path.
Access Token
An Access Token, sometimes called a "User Token", is created when a user logs into an application using OAuth.
It is unique on a per-user-per-application basis. An Access Token can be shared publicly without risk. Think of them as the "username" for OAuth's Authentication.
Access Token Secret
An Access Token Secret, sometimes called a "User Secret", is created when a user logs into an application using OAuth.
Algorithms (Data Transformations)
Algorithms are how we transform data from one form to another. When programming, algorithms are sets of instructions stored as functions.
Attribute (HTML)
Metadata which provides more information about an element. Represented as key-value pairs
Authentication
Authentication is how an application identifies you.
At the user level, this is often by using a username/password combination. At the application level, this is often using an API Key and a shared secret.
Not to be confused with Authorization.
Authorization
Authorization is how an application decides what someone is allowed to do.
For instance; you may be allowed to deposit money into any bank account; but you can only withdraw money from your own. Authorization is usually dependent on valid Authentication.
Authorization Context
Many APIs that offer authentication via OAuth will allow your application to work in two contexts: the application context and the user context.
- The Application context identifies which application is making each request using a Consumer Key and a Consumer Secret
- The User context identifies which user is making each request using an Access Token and Access Token Secret
These 4 pieces of data are used to create the Authorization header that is part of an OAuth request.
Browser
A web browser is a tool for navigating the web.
Callback
A callback is a function which is passed as an argument to another function.
Class
A class is a definition of a data type. It tells you what methods you can call on a variables.
Client
A client is a piece of software that sends data to a server.
Client/Server Model
The client/server model is a common approach to sharing data between many programs.
The server is responsible for storing data and ensuring the client only interacts with the data it's allowed to, and the client is responsible for handling the user interactions.
Both the client and server must use the same protocol.
Column (Databases)
A column
defines the name and datatype of a piece of data in a row.
Computer Program
A computer program is a set of instructions provided to and executed by a computer. Computer programs are written in a programming-language by a computer programmer.
Consumer Key
A Consumer Key, sometimes called an API Key, is used to identify your application when sending requests to a web service that uses OAuth.
Consumer keys are generated when you register your application with the web api. Consumer Keys may be shared publicly; as they are analogous to a username when using OAuth for authentication.
Consumer Secret
A Consumer secret, sometimes called an API Secret, is used to identify your application when sending requests to a web service that uses OAuth.
Consumer secrets are generated when you register your application with the web api. You should not share consumer secrets publicly; as they are analogous to a password when using OAuth for authentication.
Data
Data is pieces of information stored in or represented by a computer. Data has different types, and is frequently used by programs to do work.
Data Formats
Data formats are how you can represent data to either a person or program. CSV's are a type of data format designed to represent spreadsheets.
JSON is another common data format for transferring data between programs over the Internet. HTML is a data format for presenting data in a human readable way in a browser.
Data Types
Data Types tell us how some data is being represented and how we can interact with it. Knowing some data's type opens up a developers options for working with it significantly.
Database
A database is a way to store structured data for retrieval.
Datatypes
Datatypes tell you what kind of data a variable holds.
The String
data type holds characters, the Array
datatype is a list of other datatypes, a Hash
datatype is a set of key value pairs. In ruby, Datatypes are determined by the class
of the variable:
puts "hi".class
puts 5.class
puts [1,2,3].class
puts { :hi => "Ya'll" }.class
Encoding and Decoding
Encoding is the process of turning data from one form to another. I've encoded an important message: "Ogrammingpray isay awesomeay." Your brain has probably "decoded" this message into "Programming is awesome." Encoding allows you to put data into a format that other programs can read.
Encryption
Encryption is a form of encoding data so it is only readable by parties who are allowed to read it. It's often used for HTTP requests that carry credit card or password data.
Event
Programs can send and receive messages to each other. One way to work with this functionality is to implement the notion of events. With events, you can write code that says "when this happens, run this function".
Form (HTML)
Web forms collect data from a user.
They may contain many input fields. A forms action
attribute states which URL the browser will request when the form is submitted. The method
attribute states which request method will be used in the request and where the input field data will be stored:
- GET - Input field data is sent in the url as query variables
- POST - Input field data is sent in the body of the request.
Framework
A framework is a collection of code used to solve a set of related use cases. Most frameworks focus on developer productivity at the expense of precise control.
Function
A function is a way to store a set of instructions for re-use in a computer program. Functions are passed arguments as input and provide a return value as output.
Gem
A gem is useful Ruby code packaged up for you to use. They allow us to be more productive by providing solutions for common use cases.
Gitignore
The .gitignore
file tells Git not to include a file in a given repository.
It's a list of files and patterns that match files to exclude when you run git add
.
HTML (HyperText Markup Language)
HTML is a hierarchical, human-friendly markup language for the Web. Plain text is "marked up" with semantic elements that provide meaning, such as <p>
for paragraph or <h1>
for the primary header on a page. HTML is frequently presented to a user in a web browsers; though some desktop and mobile applications use HTML for their user interface.
HTTP (HyperText Transfer Protocol)
A protocol used to transmit data on the Web. It is client-server based and built on top of the Internet Protocol. HTTPS is an alternative protocol used to transfer data securely using encryption.
HTTP Methods
There are four main "verbs" used in web services:
- GET - Retrieves data from the service
- POST - Adds data to the service
- PUT - Replaces data in the service
- DELETE - Removes data from the service
Every HTTP Request uses one of these verbs in conjunction with a URL to change data in the web service.
HTTP Request
HTTP requests are one half of the Request/Response Cycle.
Requests are composed of a method, a URL, headers, and sometimes a body.
HTTP Response
HTTP Responses are returned from the web service to the client who sent the request.
Headers
Every HTTP Request and Response has metadata attached to it. This week, only a few headers are likely to be important:
- Authorization - Identifies the sender of the request to the web serice
- Content-Type - States the data format of the request or response body.
Heroku
Heroku is a service to serve web applications for others to visit. It is free, but you may want to pay for upgrades once you get popular :smile:.
Hyperlink (HTML)
A clickable element that tells the browser to navigate via the GET
HTTP method to the url in its href
attribute.
IP (Internet Protocol)
The Internet Protocol is a protocol that defines how computers on the Internet send packets of information.
Information
Information is when data is put to work. The arrival and departure times at all the bus stops is data. Using them to travel across the city is information.
Input Field (HTML)
An input field is used to collect data from a user within a web form.
Insert (SQL)
INSERT
queries are used to add rows of data into a table.
Instance (OO)
An instance
is used to describe a variable or value created from a class.
Instances may use any instance methods or instance variables their class provided.
Here the variable so_many_his
is an instance of the Array
class:
so_many_his = Array.new(10, "hi!")
puts so_many_his.class
Instance Method
An instance method is a method available to any instances of a given class.
Instance Variable
An instance variable is data stored within an instance of a class. It is prefixed with an @
.
Interface
An interface is the names, inputs, and outputs of a piece of code. They are the knobs and handles we use to interact with the code.
Internet
The Internet is used to describe all of the different services like email, websites, chat, games, etc. that communicate over the Internet Protocol.
JSON (JavaScript Object Notation)
JSON is a very common data format used in web services. It is very human readable, and supported in many languages.
The following is Superman's hero information in a ruby hash and the JSON equivalent:
{
:alias => "Superman",
:name => "Clark Kent",
:years_active => 60,
:powers => ["flight", "xray_vision", "heat_vision", "invincibility"]
}
now in JSON
{
"alias": "Superman",
"name": "Clark Kent",
"years_active": 60,
"powers": ["flight", "xray_vision", "heat_vision", "invincibility"]
}
Key/Value Pair
A Key/Value pair is a way to connect data with human friendly names. Often key-value pairs are held within a container. Key value pairs are used everywhere in programming.
first_name = "Zee"
- Defines a ruby variable namedfirst_name
with the value"Zee"
. The key in this case isfirst_name
.{ :first_name => "Zee", :last_name => "Spencer" }
- Defines a ruby hash which contains two key value pairs: key:first_name
with value "Zee" and key:lastname
with value "Spencer".<a href="http://google.com">Search!</a>
- Defines an HTML link which contains a keyhref
with the value"http://google.com"
.
Library
A library is a collection of code to solve a particular use case. Most libraries provide more precise control than a framework but less precise control than writing an implementation yourself.
Metadata
A type of data which provides additional information about something.
Model (MVC)
A model is a class that represents a [database table]. Instances of the model represent rows of the table.
OAuth
OAuth is a protocol built on top of http to allow client applications to access a users data without needing to store their password.
Package Manager
A package manager is used to install applications, libraries, and frameworks onto a computer. There are two kinds of package managers: system package managers and language package managers.
Params (Sinatra)
Sinatra provides a hash of data from an HTTP request in a helper method named params
.
Programming Language
A programming language bridges the gap between machine code and human language. It's a tool for humans to provide instructions a computer can understand.
Protocol
Protocols define how computers communicate. There is a wide ecosystem of protocols, each with different purposes.
They are often specified using a Request for Comment. There are many kinds of protocols with different purposes. SMTP, POP and IMAP are all for email; HTTP is for web pages; Jabber (or XMPP) is for chat, and many many more. Don't worry about learning the protocols details at the moment.
Query (Databases)
A query
is a sql instruction sent to a relational database.
Query String
In the context of the world wide web, a query string is the part of a URL or web address containing data that does not fit into the conventional, path-like structure of a URL.
Query Variables
Query variables are used to pass data to the server in an HTTP Request.
They are part of a URL
that comes after the ?
; and follow the
key-value pair format
name=value&other_name=other_value
.
RFC (Request For Comment)
RFCs are public documents outlining a standard in the technology industry. While exhaustive and academic, they provide all the information necessary to implement a standard. They are often used for reference.
RFC 2616 exhaustively documents how to implement HTTP. Don't worry, it's only 147 pages!
A more readable one is RFC4180 which specifies how to format CSV files in a mere 7 pages.
Not all RFC's are computer focused, RFC 2119 is an RFC for people who write RFCs!
Relational Database
Relational databases are built on the premise that data is useful primarily in how it relates to other data.
Relative Path
In contrast to the absolute path of a resource, the relative path points to a resource (or a file if on a file system) relative to the current location (the URL of the page being viewed, if on the web, or the current working directory, if in a file system).
This is useful if you don't want or need to provide a full URL to link to a resource on your site.
For example, if you want to link to a CSS file from your web page, you could include a <link>
tag with an href
value pointing to the CSS file, like this: <link rel="stylesheet" href="/styles/global.css">
. This is a relative path because it assumes that the page linking to this CSS file is located in the same directory as the styles
directory, which contains the file global.css
.
Request/Response Cycle
HTTP works by connecting the client and web service for a single transaction.
The client sends a request to the server for processing. Once the server finishes it creates a response and sends it back to the client.
Resource (Web)
Given HTTP Methods are the "verbs" of the web, resources are the "nouns".
A resource is identified by a url;
Route (Sinatra)
Sinatra uses routes to define what code will be executed when an http request comes to a given path with a given HTTP verb.
Routing
In the context of web development, routing describes the process by which a web application receives a request from a browser and decides which code to run order to generate an appropriate response. This process lies at the heart of every web application.
Row (Databases)
A database row
is a single record stored in a table.
SQL (Structured Query Language)
SQL is an easy to use programming language that is designed for interacting with databases.
SQL is designed for relational databases; and is primarily used to insert, select, and update data in tables.
To learn more:
- Install SQLite3 for your operating system (Use the Googles!)
- Follow this relatively decent sql cheatsheet
Schema (Databases)
A database schema
is a term used to describe the tables, columns in tables, and relationships between tables.
Here's an example of a schema describing a task list:
Select (SQL)
A SELECT
query is used to retrieve rows of data from a database table.
Server
A server is a piece of software the manages data for it's clients.
Sinatra
Sinatra is a web application framework that makes it easy to respond to http requests in ruby.
Status Codes
Status codes are part of the response that carries quite a bit of information. Status codes start with the numbers 1 to 5, and each have specific meaning:
- 1XX - Informational
- 2XX - Success
- 3XX - Redirection
- 4XX - Client Error
- 5XX - Server Error
The most common status codes are:
- 200 OK - Everything went great
- 404 Not Found - The URL you requested doesn't exist
- 401 Unauthorized - The Authorization header you included doesn't permit you to access the url you requested
A more comprehensive list may be found on wikipedia.
Table (Databases)
A database table is used to store many rows of data.
URL (Uniform Resource Locator)
The Uniform Resource Locator, often called the web address, is a mainstay of the Internet.
It's used to identify where a resource lives on the Internet in a human-and-robot readable fashion.
Update (SQL)
An UPDATE
query is used to alter the data stored in a table rows.
Web
The Web is used to reference interconnected web sites served up over HTTP. Easily confused with the Internet
Web API
A web API is a program hosted on on a web server designed to be used by other programs.
For example, using Yelp's API you could write a lunch decider app that interacts with their search API and selects a single location based upon whatever criteria you like.
While a web API is often used interchangeably with the term "web service", use of the term "web API" usually implies that the interface follows RESTful conventions. A "web service" is a more generic term for any web-hosted software that is designed to communicate with other software (machine-to-machine communication).
Web Service
A web service is a piece of software hosted on a web server that provides an interface for exchanging data between programs.
To use a web service, a program sends requests to a url and gets data back, often encoded in a format designed to be consumed by other programs, such as JSON.