Glossary

What a word means, in two sentences. This page is a reference, not a lesson: no steps, no choices, just the definition and where the site uses it.

277 terms, in 12 groups.

Thinking and problem solving

The words for how a solution is planned before any code exists.

Step count(operation count)
Counting the work an algorithm does by counting the operations it runs. A loop over n items costs n steps, and a loop inside a loop costs n times n. The count is what predicts slowness before any timer runs.
Growth rate(how the cost grows)
The shape a step count takes as the input gets bigger, ignoring the constant in front. One pass is linear, a pass inside a pass is quadratic, halving each step is logarithmic. The shape is what tells you which algorithm to pick.
Best case
The cheapest an algorithm can be on the easiest input. A search that finds the item on the first try has a best case of one step. Best case alone says little, so it is always reported with the others.
Worst case
The most work an algorithm can take on the hardest input of a given size. This is the number to plan with, since a real user can hit the hard input. A guarantee on the worst case is stronger than an average.
Average case(expected cost)
The work an algorithm takes over typical inputs rather than the hardest one. It needs an assumption about what typical means, so it is a weaker claim than a worst case bound. Quicksort is a common example.
Space complexity(memory cost)
How much memory an algorithm holds at its peak as the input grows. A running total is constant, a copy of the input is linear, a grid is quadratic. Peak matters, not the total ever allocated.
Lower bound(floor)
A proven minimum cost that no algorithm can beat for a problem. Finding the largest item needs a look at every item, so n is its floor. When your cost matches the floor, the algorithm is optimal and tuning further is wasted effort.
Amortized cost(amortized analysis)
The cost of an operation averaged over a long run, where an occasional expensive step is spread across many cheap ones. Growing a list is cheap most times and costly when it copies, and the average per add stays constant.
Logarithm(log n)
How many times a number can be halved before it reaches one. A million halves about twenty times, so a search that halves the range each step costs about twenty steps at any large size. Halving is where logarithmic cost comes from.
Optimal algorithm(optimal)
An algorithm whose cost matches a proven floor for the problem. A linear scan that must read every item cannot be improved in class. Recognising optimal stops you from wasting effort on tuning the wrong thing.
Algorithm
A finished recipe of steps that solves a problem. Pseudocode, a flowchart, and a working program are all the same algorithm written in different notations.
Decomposition
Splitting one big problem into smaller problems that can be solved and tested on their own. Each piece gets its own function, and the pieces are joined by a small amount of glue code.
Abstraction
Naming what a solution does and hiding how it does it, so a reader can reason about the parts instead of the details. A function name is an abstraction over its body.
Pseudocode
Plan-shaped English that uses programming words like `if`, `while`, and `return` but no real syntax. It is written to be read once and then replaced by code.
Flowchart
A diagram of a plan: boxes for steps, diamonds for decisions, arrows for what comes next. It carries the same meaning as pseudocode, in a shape a reader can follow with a finger.
Edge case
An input at the boundary where a solution can behave differently: an empty list, a single item, a zero, a negative, the last index. Testing these finds bugs that middle-of-the-road inputs hide.
Invariant
A statement about a program that stays true the whole way through, even inside a loop. Naming it makes a loop provably correct: "everything before `i` is sorted" tells you when the loop may stop.
Off-by-one error(fencepost error)
A count that is one too many or one too few, usually at the first or last item. The classic cause is mixing a length with a last index: an array of 5 items has indexes 0 to 4.
Debugging
Finding why a program gives the wrong answer by testing small parts and reading what actually happened, rather than by rereading the whole file. Print the value you expected and the value you got, at the point where they disagree.
Regression(regression test)
A change that broke something that used to work. A test that used to pass and now fails is a regression, and it is fixed before any new feature is added on top.
Computational complexity(Big-O)
How the work a program does grows as the input grows. O(n) means one pass, O(n squared) means a pass inside a pass, O(log n) means halving the search each step. It predicts slowness before a timer is needed.

Data and structures

The shapes information is put into, and what each one is good at.

Stream(streaming)
Data that is processed a piece at a time as it arrives, so the whole thing never has to be held in memory at once.
Buffer(chunk)
A block of bytes read or written at one time, sized to what the device handles fastest rather than to the whole file.
Delimiter(separator)
The character that marks where one field ends and the next begins in a line of text.
Newline(line ending)
The one or two characters that end a line of text, stored in the file rather than added by the reader.
File extension(suffix)
The characters after the last dot in a name, used by tools to guess what kind of file it is.
Directory(folder)
A file whose contents are a list of other names, which is how a tree of files is stored.
UTF-8(utf8)
The encoding that maps every symbol to one to four bytes, and the safe default to name on every file.
Truncation(truncated)
A file left shorter than it should be because a write stopped partway, which a reader sees as a partial record.
Atomic write(atomic replace)
Saving a new version to a temporary name and renaming it into place, so a reader never sees half a file.
Sort
Put a row of items into order by a chosen rule, so that every item is no greater than the one after it. Ordering is what makes fast searching and grouping possible.
Look for an item in a row. On an unsorted row you check one by one; on a sorted row you can cut the row in half each look.
Find a value in a sorted row by checking the middle and keeping only the half that can hold it. Each look halves the row, so a million items take about twenty looks.
Merge sort
A fast sort that splits the row in half, sorts each half, then merges the two ordered halves. It keeps ties in order and costs about n log n.
Quicksort
A fast sort that picks a pivot, puts smaller items left and bigger right, then sorts each side. Usually quick, but a bad pivot makes it slow.
Stable sort
A sort that keeps equal items in the order they started. Stability is what lets you sort by several fields one at a time.
Bit
The smallest unit of information: one switch with two positions, read as 0 or 1. A machine is built from bits, and every value it stores is a row of them.
Byte
A row of eight bits, the smallest piece of memory a machine can point at on its own. A byte holds 256 values, and file and memory sizes are counted in bytes.
Binary number
A value written in base two, where each position is worth double the one to its right. A number is the sum of the powers of two that are switched on.
Hexadecimal
A sixteen-digit shorthand for bits where each digit is exactly four bits, so a byte is always two hex digits. Colors, byte dumps, and hashes are written this way.
Twos complement
The standard way to store negative numbers in a fixed row of bits, where the top bit marks the sign and flipping the bits then adding one gives the negative. It lets a number and its negative add to zero with no special case.
Signed number
A fixed-width integer read as able to go negative, using twos complement. The same bytes read unsigned give a different number, so the signed flag is a reading choice.
Overflow
What happens when a value is too big for its fixed width: the count wraps to the bottom with no error. A byte counter at 255 plus one reads as zero, which is a silent wrong number.
Endianness
The order a multi-byte number is written in, big end first or little end first. The same bytes read in the other order give a wrong number, which is why formats state their byte order.
Integer(whole number, int)
A value with no fractional part. Whole numbers are stored exactly and their arithmetic is exact, which is why counts and money in cents are kept as integers rather than decimals.
Float(decimal, floating point)
A value that can hold a fractional part, stored as a binary fraction with a fixed number of bits. That fixed width means some decimals, like a tenth, are rounded to the nearest value the bits can hold.
Rounding error
The small gap between a decimal value and the nearest one the machine can actually store. It is why a sum of decimals can print 0.30000000000000004, and why decimals are compared by closeness rather than exact equality.
Code point
The number a single character is given in a character set. Text is a list of code points, which is why a character can be measured, indexed, and compared at all.
Encoding
The rule that maps bytes to code points and back. Two tools that disagree about the rule turn the same bytes into different text, which is the cause of garbled characters.
Array(list)
An ordered row of values with fixed positions, read by number. Reading any position is fast; inserting in the middle moves everything after it.
Linked list
A chain of nodes that each point at the next. Adding at the front is instant, but reaching the middle means walking from the front one node at a time.
Stack
A last-in, first-out pile: you push an item and pop the one on top. Function calls use one implicitly, which is why recursion has a depth limit.
Queue
A first-in, first-out line: items join at the back and leave from the front. Breadth-first search and fair scheduling both need this order rather than a stack's.
Hash map(dictionary, map)
A set of key and value pairs where the key is turned into a number, so looking one up costs about the same work no matter how many pairs are stored. The go-to answer for "have I seen this before".
Set
A collection of distinct values with no order, used for membership tests: is this already in? Adding a duplicate changes nothing, which makes it a natural way to remove duplicates.
Tree
A structure where each node has children and no cycles, so there is exactly one path from the root to any node. A folder layout, a DOM, and a decision tree are all trees.
Graph
Nodes joined by edges, where a node may have many paths to another and cycles are allowed. Anything with "can you get from A to B" is a graph question.
Index
The position number of an item in an ordered collection. The first item is index 0, so the last is length minus one.
Mutation
Changing a value that is already stored, rather than making a new one. A function that mutates its input surprises every other caller that holds the same value.
Reference
A name that points at a value stored elsewhere instead of holding a copy. Two references to the same list mean one list, so changing it through either name changes it through both.
Pointer
A raw memory address held in a variable, as Rust and C use it. Owning and borrowing rules exist to make sure a pointer never points at memory that has been freed.
Recursion
A function that calls itself on a smaller piece of the problem, with a case that stops. A tree is walked recursively because each branch is a smaller tree.

Languages and syntax

Words that mean different things in different languages, and why they differ.

Pattern(regular expression, regex)
A short text that describes a set of strings instead of one string. The characters that mean themselves are mixed with characters that mean rules, which is why a pattern needs its own reading.
Metacharacter(special character)
A character in a pattern that carries a rule instead of meaning itself. A dot matches any character and a bracket opens a set, so text from a stranger has to be escaped before it becomes a pattern.
Character class(character set, bracket expression)
A bracketed list of the characters allowed at one position. A dash inside the brackets means a range, and a caret first means everything except the list.
Quantifier(repetition operator)
A mark after a piece of a pattern saying how many times it may repeat. A star means none or more and a plus means one or more, so the piece can vanish or stretch.
Anchor(zero width assertion)
A mark that tests a position rather than consuming a character. A caret asks for the start of a line and a word edge asks for a boundary, so nothing is eaten and nothing moves.
Alternation(pipe, either or)
A vertical bar in a pattern offering more than one way to fit. The branches are tried in the order written, so the first one that fits wins even when a later one is longer.
Capture group(parenthesised group)
A pair of brackets in a pattern that remembers which text fit inside it, so a field can be read out of a match instead of slicing offsets by hand.
Greedy match(greedy quantifier)
A quantifier that takes as many characters as it can before checking the rest of the pattern. It gives the longest fit, and it backtracks when the rest of the rule then fails.
Lazy match(non-greedy quantifier, reluctant quantifier)
A quantifier with a question mark after it that takes as few characters as it can. It stops at the first fit, which is what a pair of tags needs to avoid swallowing the text between them.
Base case(stopping case)
The branch of a recursive function that answers without calling itself. Without one, the calls never stop and the stack runs out of room.
Memoization(caching calls)
Keep each answer a recursive function already computed in a cache, so a repeated call returns the stored value instead of recomputing the same tree.
Divide and conquer
Split a problem into smaller independent parts, solve each the same way, then combine the answers. The split sets the depth, so halving gives a shallow tree.
Backtracking
Try one choice, recurse, and undo it when the choice leads to a dead end. The undo step is what lets the search explore every option.
Tail recursion
A recursive call that is the last thing a function does, with nothing left to combine after it returns. A loop can replace it, so the stack stays constant.
Dynamic programming
Solve a problem by writing it as a recurrence over smaller states and storing each state once, either top-down with a cache or bottom-up by filling a table.
Stack overflow
Running out of room on the call stack, usually from recursion that nests deeper than the limit. The fix is a base case, a loop, or your own stack in memory.
Signature
The first line of a function: its name and the parameters it needs. Reading a signature tells a caller what to pass in and what comes back, without opening the body.
Docstring
The sentence written at the top of a function that states what it returns and how it handles the edge cases. It is the contract a caller reads instead of guessing.
Call stack
The record of which function is running inside which. Each call adds a layer, and a function that calls itself without an end fills the stack with no room left.
Default(default argument)
The value a parameter uses when the caller leaves it out. A default records the normal case, so a call only supplies what is different.
Unpacking
Splitting a returned tuple or list into separate names in one line, so low, high = pair. The number of names has to match the number of parts.
Expression
A piece of code that works out to a single value. An expression can sit wherever a value is allowed, which is what lets a calculation go inside a print or an assignment.
Precedence
The order in which the parts of an expression are worked out, so that multiply happens before add. Parentheses override it, and using them is clearer than remembering the rules.
Literal
A value written directly in the code, like 42 or "owl". A literal is a value with no name, the simplest thing a name can be assigned to.
Conversion(cast)
Turning a value from one type into another on purpose, like turning text read from input into a number. Doing it explicitly is what keeps a program from guessing the wrong kind.
String(text)
A value that is a run of characters, written in quotes. Text is measured and indexed by position, not by meaning, which is why trimming and slicing work on any input.
Concatenation
Joining two strings end to end to make a new one. Joining is different from adding numbers, and mixing the two by accident is the classic type error.
None(null, nil)
A single value that means nothing has been chosen yet. It is what a name holds before it gets a real value, and the honest way to record that a search found nothing.
Scope
The part of a program where a name can be seen. A name made inside a function belongs only to that function, so two functions can each use the same short name without colliding.
Variable
A name that holds one value at a time. The name is for the reader; the value is what the program uses. A name like `d` says nothing, a name like `secondsLeft` says the truth.
Assignment
Putting a value into a name, read right to left: the expression on the right is computed first, then stored under the name on the left. It is not a claim of equality.
Type
What kind of value a name holds: a number, a string, a boolean, a list of things. Strong typing means the computer refuses to mix kinds without an explicit conversion.
Static typing
Checking the kinds of values before the program runs, so a mistake is a build error rather than a surprise at three in the morning. TypeScript and Rust do this; Python checks at runtime instead.
Coercion
A language quietly changing one type into another, like treating a number as a string. It is the cause of many baffling bugs, which is why explicit conversion is preferred.
Function
A named block of steps that takes inputs and gives back one result. Calling it runs the block; writing its name without brackets hands the block itself to something else.
Parameter(argument)
A parameter is the name a function declares it needs; an argument is the actual value a caller passes into that name. The two words name the same slot from two sides.
Return value
The single result a function gives back. A function with no `return` still returns something in most languages, usually a null-like value, which is why a missing return is a silent bug.
Side effect
A function that changes something outside itself: writes a file, updates a global, prints, mutates a shared list. A function with no side effects is called pure, and pure functions are the ones that are easy to test.
Pure function
A function whose result depends only on its inputs and that changes nothing else. Same input always gives the same output, so it can be tested, cached, and reordered safely.
Conditional
A branch: if this is true do this, otherwise do that. The condition is an expression that must evaluate to a boolean, not a value that is merely truthy or falsy.
Boolean
A value that is one of two: true or false. Every condition must reduce to one of these, even when it is written as a longer expression.
Loop
Steps that repeat until a condition becomes false. A loop that never ends, or ends one step early, is the most common bug in a first program.
Iteration
Going over a collection one item at a time, without counting indexes yourself. `for item in items` is iteration; `for i in range(len(items))` is counting, and is usually the wrong shape.
Compiler
A program that turns source code into a form a machine runs, before the program starts. Errors are caught before anything runs, which is why typed compiled languages fail at build time.
Interpreter
A program that reads and runs source one statement at a time. Mistypes and wrong types are found while running, which is why a Python error can appear only on the branch that was taken.
Runtime
The engine that runs a program, and the time it takes while running. "Runtime error" means the program started and then failed, as opposed to a build error that stops it starting.
Standard library
The set of tools a language ships with, already installed and already tested. Reaching for it before writing your own version is the difference between a working program and a reinvented one.
Module
A file of code that other files can import by name. A module should do one thing, so its name describes the thing and its imports describe the need.
Package manager
The tool that installs and versions third-party code: npm for JavaScript, pip for Python, cargo for Rust. It also records what versions a project depends on, which is how a build is reproducible.
Class
A type with named fields and methods, used when several values always travel together. A game player, a request, and a parsed config are all worth a class; a pair of numbers is not.
Object
A value with named fields rather than numbered positions. In JavaScript it is also the shape most JSON and API responses come in.

Web and apps

The parts of a running web application, named so a reader can find the right file.

DOM
The document object model: the browser's live tree of elements built from the HTML. It is a tree, which is why walking it uses the same shape as walking any other tree.
Route
A URL path a server answers, and the handler that answers it. Express matches routes in the order they are mounted, which is why mount order changes behaviour.
Middleware
A function that runs before every route handler: security headers, language, cache control. Order matters, and a middleware that forgets to call `next()` stops the request silently.
Endpoint
One URL and method an API offers, with a documented shape in and a documented shape out. A client and a server agree only when both describe the same endpoint.
JSON
JavaScript object notation: the text format data travels as over a wire. It has no comments and no trailing commas, which is why a config file written as JSON cannot be annotated.
HTTP status code
The number a response carries: 200 means it worked, 300s mean "go somewhere else", 400s mean the request was wrong, 500s mean the server broke. A browser console shows this number first for a reason.
Redirect
A response that sends the reader to another URL instead of a page. 301 says the old address is gone for good, 302 says it may move back, which is what a crawler uses to decide.
Cache header
Instructions a response carries about how long it may be reused: `max-age=300` means five minutes, `no-store` means never. A stale page after a change is almost always a cache header plus a version token.
Cache busting
Changing the URL of a file when its content changes, by adding a version token like `?v=20261010`. A new URL is a new file to a cache, so the new CSS is served the moment it is published.
A small value the browser keeps so the server can recognise the same visitor again. It is the only state a browser has, which is why "stay signed in" is a cookie question.
Session
One visit, seen as one identity by the server. Everything that belongs to "this person right now" (who they are, what they ticked, what they are reading) hangs off the session, and signing out or rotating a secret ends it.
Authentication
Proving who a request is from. The password is never stored, only a hash, so a leaked database cannot hand over someone password.
Authorization
Deciding what a signed-in person may do. Authentication answers "who", authorization answers "is this allowed", and a page that confuses the two has a security hole.
bcrypt
A deliberately slow hash with a random salt, made for passwords. Slow is the point: an attacker with a stolen database cannot try billions of guesses cheaply.
Salt
Random bytes mixed into a value before hashing, so two users with the same password get different hashes. Without it, one lookup table cracks every password.
Hash
A one-way fingerprint of a value: same input always gives the same output, and the input cannot be recovered from the output. Hashing is for comparing and detecting, never for reading back.
SQLite
One database file and one process, with no server to run. It is the whole reason a small app can have real storage without a server.
Database
A store of records you query instead of holding in memory. A table is a set of rows with named columns, and a query describes the rows you want.
Query
A description of the rows you want, run by the database instead of a loop in your code. A prepared query is compiled once and reused with different values.
Write-ahead log
A database journal where writes go first, so a crash cannot lose an acknowledged write. It explains sidecar files next to a database file, and why they must be deleted together.
Transaction
A group of writes that either all happen or none do. Anything that must stay consistent across two tables belongs in one transaction, not in two separate writes.
Race condition
A result that depends on which of two things finished first. Two requests writing the same counter at once is a race, and it is why a shared counter needs a transaction.
Environment variable
A value the operating system hands a process at start, used for secrets and settings that must not live in the code. A secret committed to a repository is a secret in public.
Secret
A value that must stay unknown to readers of the code, like a signing key. Rotating a secret invalidates the tokens made with the old one, which signs everyone out.
Content Security Policy
A response header that lists which sources a page may load scripts and styles from. A per-request nonce is how inline styles are allowed without opening every inline style.
Static asset
A file served as it is: CSS, JS, images, fonts. It has no handler and no session, which is why it can be cached far longer than a page.
Template
A file of markup with blanks filled in at render time. A template holds the shape of one page; the data it is given is what makes it a different page.
Partial
A small template included by others, like the page head or footer. One partial means one place to change, and every page changes with it.
Render
Drawing a frame: clearing the canvas and painting every object in order. The order is the depth, so a later draw is a thing in front.

AI and models

The vocabulary of a model that answers text, and the things built on it.

LLM
A large language model: a model that predicts the next piece of text after a prompt. It is a text predictor, not a database, which is why it can invent a plausible wrong fact.
Token
A small piece of text, often part of a word, which is the unit a model reads and charges for. "4000 tokens" is not 4000 words, and the split is why long words cost more.
Prompt
The text a model is given before it answers. A prompt states the task, the shape of the answer, and what not to do; the model follows the shape more reliably than it follows the prose.
System prompt
The standing instructions a model is given before any user text, holding role, tone, and format. It is the right place for rules that must hold for every answer.
Context window
The most text a model can consider at once, counted in tokens. Anything longer has to be cut, summarised, or retrieved, which is why a long document is not simply pasted in.
Embedding
A list of numbers that represents a piece of text, arranged so similar meanings sit close together. Similarity becomes arithmetic, which is how search over meaning works.
Vector
An ordered list of numbers. An embedding is a vector, and comparing two vectors is how "closest match" is computed.
Retrieval augmented generation
Fetching the passages that actually match a question and putting them in the prompt, so the model answers from real sources instead of memory. It is the fix for a model that invents.
Hallucination
A model producing confident text that is not true. It is the default behaviour of a text predictor, and the reason a model's answer must be checked against a source.
Temperature
A setting that widens or narrows the model's choice of next token. Zero picks the most likely continuation every time, which is what a deterministic task needs.
Fine-tuning
Continuing training on examples of one task, so the model learns that shape. It changes behaviour, not knowledge, which is why it is the wrong tool for "teach it this fact".
Agent
A model that runs a loop: decide, call a tool, read the result, decide again. The plan is the model's, the actions are real, and the loop needs a step limit.
Tool calling
A model choosing a named function and arguments from a list it was given, instead of writing the answer itself. The code runs the call, which is where the model stops being the thing that computes.
Streaming
Sending a model's answer as it is produced, token by token, instead of waiting for the whole reply. A reader starts reading sooner, and a bad answer can be stopped mid-way.
Evaluation
Running a model against a fixed set of questions with a fixed expected answer, and scoring the result. An eval is how a change to a prompt is proven to be an improvement.
Quantization
Storing a model's numbers in fewer bits, trading a little accuracy for a much smaller and faster file. It is why a model that needs 13GB can run on a laptop in 4GB.
Local model
A model that runs on the machine instead of behind an API. Nothing is sent away and there is no per-call cost, which is the trade: privacy and offline use for a smaller, weaker model.

Version control and workflow

The words for changing code with others, and shipping it safely.

Repository
One folder plus its recorded history: the files, the changes, and who made each one. A repository is the record, not the folder, which is why deleting the folder deletes the record.
Commit
One saved set of changes with a message and a fingerprint. A commit is the unit of "this state works", and it is the thing a bisect walks through.
Branch
A separate line of commits you can work in without touching the main one. A branch is cheap and disposable, which is why a small fix belongs on one.
Diff
The difference between two versions, shown as added and removed lines. Reading a diff is how a change is reviewed, because it names exactly what changed.
Merge conflict
Two branches that changed the same lines, where the tool cannot choose. The markers show both sides and your job is to pick one, not to delete the block.
Rebase
Moving your commits to sit after someone else's, so the history reads as one line. It rewrites your commits, which is why a branch already shared with others is not rebased.
Pull request
A proposed set of changes opened for review before it is merged. It is the review, the discussion, and the CI run in one place.
Code review
Reading a proposed change before it is merged, looking for what breaks rather than what is styled wrong. A review that finds only style is reviewing the wrong thing.
CI/CD
Automated checks on every change: build, test, then deploy. It is the machine that catches the regression you forgot, before a person does.
Test runner
The program that runs a suite and reports pass or fail per case. A suite that passes but tests nothing is the failure mode, which is why every assertion names what it checked.
Semantic versioning
A version number of major, minor, and patch, where the first digit means a breaking change. It is how a reader knows which release a note describes.
Release
A tagged commit marked as shipped, with notes about what changed. A tag is a permanent name for one commit, which is how a regression is bisected against a known good state.
Container
A packaged set of programs and files that runs the same way on any machine. It is how "works on my machine" becomes "works here", with the toolchain inside it.
Deploy
Putting a built version somewhere it is served from, and knowing which version is live. A deploy that cannot be rolled back is not a deploy, it is a bet.

Game building

The words for the loop a game runs in, from the endless-platformer track.

Game loop
The repeating three steps of a running game: read input, update the world, draw the frame. Everything about a game is placed into those three steps.
Frame
One drawn picture in the sequence. Sixty frames a second is the target; a frame that takes longer than 16 milliseconds is the reason a game stutters.
Delta time
The real time since the last frame, used to scale movement. Speed is written as units per second, so the game runs the same on a slow machine and a fast one.
Hitbox
The simple shape used for touching, usually a rectangle smaller than the drawn art. Players feel fair when the hitbox is a little forgiving rather than exact.
Collision detection
Deciding whether two shapes overlap. Rectangles are compared with four inequalities, which is why almost every 2D game starts with boxes rather than outlines.
State machine
A set of named states and the allowed moves between them: running, jumping, falling, dead. Naming the states is what makes an impossible transition impossible.
Procedural generation
Building content from a rule and a seed instead of storing it. The same seed gives the same level, which is how a random level can still be tested.
Seed
The starting number a random generator is given. Fixing it makes a random run reproducible, which is the difference between a testable bug and an unrepeatable one.
Random number generator
A source of numbers that look unpatterned. A seeded generator is reproducible, which is what a game needs; a true random source is not, which is what a lottery needs.
Canvas
The browser element you draw pixels into with code. It holds no elements and no styles, which is why a canvas game has no DOM to inspect.
Input handling
Turning key and mouse events into game intent, and holding that intent in a set of currently-held keys rather than reacting to single presses.

Terminal, shell and data

The words for working through a terminal and reading data as text.

Working Directory
The place a shell answers from. Relative paths are read against it, so the same command means different things in different directories.
Path(file path)
The name of a file or folder. An absolute path starts at the root of the drive; a relative path starts at the working directory.
Pipe(|)
Sending the output of one command into the input of the next. Each stage transforms text, and the chain is the program.
Redirection
Sending a command to a file instead of the terminal, with > for output and < for input. The same two streams a pipe joins.
grep
Finding the lines that match a written pattern. The pattern is a rule about text, not a name of a file.
Regular Expression(regex)
A small pattern language for text: character classes, repetition, and alternation. It describes the set of strings a matcher accepts.
Glob
A path pattern with * and ? that names many files at once. The shell expands it before a command sees any arguments.
Standard Input(stdin)
The one stream a command reads text from: typed, piped, or redirected. A tool that reads stdin works on any source.
Standard Output(stdout)
The one stream a command writes its answer on. Results go here so a pipe can read them; notes and errors go elsewhere.
Exit Code
The number a command returns to say whether it succeeded: zero means yes, anything else means no. A script branches on it.
CSV
Rows of values separated by one character, with the first row naming the columns. The simplest table that a text file can hold.
Pivot
Re-arranging a table so a category runs across the columns instead of down the rows, which is the shape a chart or a summary wants.
Percentile
The value at a given position in a sorted list, so half the values sit below the median. It describes a distribution without averaging it.
SQL
The language a database reads: name the rows you want, the columns you want, and how they are joined. The database decides the steps.
Table
Named columns holding one value per row: one thing per row, one property per column. Adding a column is a design decision, not a new file.
Assertion(assert)
A written claim that a value must hold, checked by running the code. A failing assertion names the promise that broke.
Breakpoint
A line marked so the program stops there on its own, leaving the values on the screen to be read instead of guessed.
Mock
A stand-in object that answers a call with a written value, so a test measures one piece without the real thing behind it.

Web surface and access

The words for what a browser asks for, sends back, and lets a reader reach.

HTTP Header
A name and value sent with a request or a response, carrying the meaning around the body: what type the body is, what may be cached, what may be embedded.
curl
A command that makes one HTTP request and prints the response, so an API can be read from a terminal before any client code exists.
Rate Limit
A written ceiling on how often a caller may ask, answered with a status when the ceiling is passed. The limit is part of the contract.
HSTS
A header that tells a browser to use https for a site from now on, so an http address is corrected before a request is made.
Dependency Audit
Checking the packages a project pulls in against a list of known problems, so a fix is a version change in the lock file.
Alt Text
The words a screen reader speaks in place of an image. Text that only repeats the file name describes the file, not the picture.
Focus Ring
The outline drawn on the control a keyboard is on right now. Removing it without a replacement hides where the reader is.
Landmark
A named region of a page: navigation, main content, footer. A reader can jump to a region instead of walking through every element.
Contrast Ratio
The measured gap between text colour and its background. A number below the line is unreadable to part of the audience, not unfashionable.
DevTools
The browser panel that measures a page: requests, timings, layout, and listeners. The measurement lives there, not in a guess.
Compression
Sending a body in a smaller form and saying so in a header, so the transfer costs less and the reader unpacks it the same way.
Performance Budget
A written limit on what a page may spend: bytes, requests, milliseconds. A number nobody can name is not a budget.
Flexbox
A one-axis layout: items share a line and the rules say how they grow, shrink, and space out when the line changes width.
Grid
A two-axis layout: rows and columns are declared once and items are placed into them, so the shape is written rather than implied.
Design Token
A named value for a colour, space, or font size, written once and used everywhere, so a change is one edit instead of a hunt.
Headless Browser
A real browser run from a script with no window open, so a page can be driven and measured in a test rather than by hand.

Systems, runtimes and numbers

The words for programs that run close to a machine, serve a socket, or hold money.

Callback(continuation, handler function)
A function handed to other code so that code can call it once the work it was asked for is done. The other code decides when and how often it runs, which is why a callback body has to be safe to run more than once.
Concurrency(concurrent work)
Several streams of work open at the same time, so each one can be waiting while another runs. The streams do not have to run in the same order every time, which is what makes the order a thing to design instead of a thing to assume.
Thread(thread of execution)
A separate stream of instructions inside one process, scheduled by the runtime so several of them make progress at once. A thread has no return channel, so a value it produces has to be left in a place someone else reads.
Task(async task, scheduled job)
One piece of work the runtime can hold open, move around, and finish on its own schedule. A task is a value, so it can be started now and waited for later, which is what lets several waits overlap.
Lock(mutex, mutual exclusion)
A gate around a section of code that lets only one writer inside at a time. A lock does not stop a writer that takes a different lock, so every writer of one value has to name the same gate.
Deadlock(standstill)
Two holders each waiting for what the other holds, so neither can move and nothing raises an error. The shape needs a cycle, so one stated order for taking every lock removes the cycle for all of them.
Timeout(time limit, wait cap)
A limit on how long a wait may stay open before it reports. The limit stops the waiting, not the work, so a task that timed out still has to be cancelled to free the resource it holds.
Sentinel(stop signal, end marker)
A value put into a stream that means the stream is over rather than being work. A worker that reads one stops, which is the only way an empty queue is told apart from a finished one.
Idempotent(safe to repeat)
An action that leaves the same result when it runs twice as when it runs once. A callback that may be called more than once, or a request that may be retried, only behaves well when the action is idempotent.
await
A marker on a call that finishes later, telling the runtime to pause this function and come back with the value when it arrives.
Executor
The piece that decides which ready task runs next on a thread. An async function only works because something schedules it.
WebAssembly(WASM)
A binary instruction format a browser can run, close to machine speed, with the host deciding what it may touch.
Host Limits
The ceiling a caller sets on what a guest program may use: memory, time, and which functions it may call.
Route Table
The written set of method plus path pairs a server answers, kept in one place so the contract can be read and diffed.
Connection Pool
Reusing the same few sockets instead of opening one per request, so the cost of setting up a connection is paid once.
Graceful Shutdown
Stopping a server by finishing the requests it already accepted before closing, so no reader gets a half answer.
App Factory
Building the application object inside a function instead of at import time, so configuration and state are set before anything runs.
Fixed Step
Advancing a simulation in equal slices of time regardless of frame rate, so the same input gives the same result on any machine.
Swept Collision
Testing the whole path a fast object travelled in one step instead of only where it landed, so it cannot pass through a wall.
Difficulty Curve
The written plan for how much pressure a game adds over time, so a change is a number in a table rather than a new level.
Greeks
The names for how an option contract moves: delta for time, gamma for the curve, theta for the whole picture. They are vocabulary, not formulas.
Kelly Sizing
Sizing a stake from the edge and the odds, so a run of good bets cannot be undone by one oversized loss.
Walk Forward
Testing a rule on data it has not seen yet, one window at a time, so a result cannot come from fitting the past.
Portfolio Risk
The total a whole set of positions can lose at once, which is what a size limit is written against, not each trade alone.

Building a tool from scratch

The words for a program that reads input, transforms it, and reports what it did.

Lexer
The first pass that turns characters into named pieces: number, name, symbol. Everything downstream reasons about pieces, not letters.
Grammar
The written rules for which arrangements of pieces are legal programs, usually one rule per kind of expression.
Parse Tree
The nested shape a grammar builds from a flat list of pieces, so order of operations comes from the shape and not from a rule.
Pass
One full walk over the tree that makes one kind of decision, repeated as a list of steps so each step can be read alone.
Bytecode
The flat stack instructions a program becomes after the tree, small enough to store and simple enough to run anywhere.
Inverted Index
A map from each word to the documents that contain it, built once so a lookup costs the same whatever the size of the text.
Postings List
The sorted list of document numbers stored under one word, so two words can be intersected by walking two lists.
Ranking
Scoring each hit by how well it matches and how often the words appear, then ordering by the score rather than by arrival.
Front Matter
The block of name and value pairs at the top of a content file, read before the prose so metadata and body never mix.
Template Hole
A marked gap in a template that one named value fills, with the value escaped so content cannot become markup.
Every link a page makes, held as pairs of source and target, so a broken address is an edge with no destination.
Manifest
The written file that names what a tool may reach and how it is loaded, read as the contract before any code runs.
User Style
A rule a tool adds to a page after it is loaded, so a change is a written instruction rather than a rewrite of the page.
Lock File
The written file that records exactly which versions of which packages a project pulls in, so the same install gives the same tree on another machine.
Keyed Storage
A tool keeping its own values under names, so state survives a page reload without touching the page again.
Arguments(argv)
The words a command receives after its name, read as a written shape: which are flags, which are values, which are names.
Dry Run
Printing the changes a command would make without making them, so a plan can be read and checked before it is applied.
Build Report
The summary a tool writes about what it did: counts, warnings, and failures, used to decide whether a run counts as done.

AI tools, in practice

The words for what an AI tool reads, changes, and reports back - and for checking it.

AI Coder
An editor that writes code beside you: it reads the file you are in and offers the next few lines. The file is its only context unless you give it more.
Inline Suggestion
The next few lines an editor offers at the cursor, which you take or reject. Accepting one without reading it is how a subtle change gets in.
Context Window Fill
The files an assistant is actually shown when it answers. Naming them is the difference between a guess and an answer about your code.
Chunking
Splitting documents into pieces small enough to be compared one at a time, with the overlap between pieces decided before the split.
Finding the stored pieces nearest a question, measured in directions rather than words, so a different phrasing still reaches the same fact.
Citation
The source a claim is traced back to. An answer without one is a sentence nobody can check.
Training Set
The written examples a model is later tuned on: input paired with the answer it should give. A few dozen good pairs beat a few hundred vague ones.
LoRA
Teaching a model a small addition instead of rewriting it, stored as its own file that can be loaded, swapped, or dropped.
Loss Curve
The score of how wrong a training run is, plotted over the steps. A curve that stops moving says the run taught nothing.
Golden Set
The questions with the answers they must give, written down once and kept, so a model is scored against the same list every time.
Rubric
The written rules a judge model scores an answer against, so a score is a claim about named criteria rather than a feeling.
Pass Rate
The share of a golden set a model answers well enough. It is the number a release decision is written against.
Eval Gate
Refusing a change when the score falls below a written line, so a model update cannot ship on a worse number than the one before it.
Fence
The written marks that separate instructions from the text being worked on, so pasted content is read as data and not as a command.
Escape
Text that closes a fence early and starts a new instruction, which is what a written rule about data has to survive.
Canary String
A value written into a prompt that no reader would ever type. If it appears in the answer, something outside the prompt was read.
Tool Scope
The named set of actions a model may ask for, with the rest refused. A model that can ask for anything cannot be limited by words alone.