UML (Unified Modeling Language)
A standardized family of diagrams for visualizing, specifying, and documenting object-oriented software systems, unified at Rational in the mid-1990s and standardized by the Object Management Group.
Plain-language explanations of the ideas behind software - compilers, garbage collection, objects, types.
A standardized family of diagrams for visualizing, specifying, and documenting object-oriented software systems, unified at Rational in the mid-1990s and standardized by the Object Management Group.
A decision problem for which no algorithm can always return the correct yes-or-no answer; the existence of such problems was proved independently by Turing and Church in 1936.
The practice of testing the smallest pieces of code (functions, classes) in isolation and automatically, so that regressions are caught the moment they are introduced.
A short, plain-language description of a feature told from the user's point of view, used in agile development to capture a need and spark a conversation rather than write an exhaustive specification.
An extension of logical clocks in which each process keeps a vector of counters, allowing a system to tell whether two events are causally related or genuinely concurrent.
Replacing explicit Python loops with whole-array operations that run in fast compiled code - the technique that makes NumPy, and the libraries built on it, orders of magnitude faster than plain Python.
Copying a project's third-party dependencies directly into its own repository instead of fetching them at build time.
The practice of tracking and managing changes to files over time so that past versions can be recovered and many people can work on the same project together.
An in-memory representation of the user interface that a framework diffs against the previous version to compute the minimal set of real-DOM mutations, popularized by React.
A software emulation of a complete computer that runs its own operating system in isolation, sharing the underlying physical hardware with other virtual machines.
Giving each program its own address space that can be larger than, and independent of, the physical RAM, pioneered by the Atlas computer at Manchester around 1962.
Building integrated circuits with hundreds of thousands or more transistors on a single chip, and the structured design methodology that made such complex chips tractable to design.
The computer design with a processing unit, a single memory holding both instructions and data, and input/output, the template behind nearly all modern computers.
The performance limit caused by the single channel between processor and memory in the von Neumann architecture, a phrase John Backus made famous in his 1977 Turing Award lecture.
A sequential software process in which each phase - requirements, design, implementation, testing, and operation - is completed before the next begins.
The component of a web browser that parses HTML and CSS and renders a page through layout and painting.
Controlling type on the web with CSS and downloadable web fonts -- the @font-face rule plus the WOFF and WOFF2 formats -- which ended the era when designers were limited to a handful of fonts already installed on the reader's machine.
A user-defined HTTP callback that a provider fires at your endpoint when an event happens -- a reverse API where the server initiates the request.
A NoSQL model (BigTable, HBase, Cassandra) that stores data in tables whose rows can hold billions of dynamic, sparse columns grouped into families; optimized for huge scale and write throughput, not joins.
A provable upper bound on how long a task can take to run, the quantity needed to guarantee that real-time deadlines will always be met.
Recording changes to a durable log before applying them to the data files, so a crashed database can recover a consistent state by replaying the log.
An Extreme Programming principle that you should not add functionality until it is actually required, because speculative generality usually costs more than it saves.
Hacker term for the recursive chain of seemingly unrelated tasks you must complete before you can do the task you actually wanted to do; coined at the MIT AI Lab and recorded in the Jargon File.
On many systems Unix time is stored in a signed 32-bit integer counting seconds since 1970, which overflows on January 19, 2038, and wraps to a negative value read as 1901. The fix is a wider, 64-bit time_t, now standard on modern systems but still being chased through old code and data formats.
Jamie Zawinski's law that every program attempts to expand until it can read mail, and programs that cannot are replaced by ones that can.
A vulnerability unknown to the vendor and therefore unpatched, so defenders have had zero days to fix it; zero-day exploits are highly valued by attackers and governments and traded on gray and black markets.
The program that turns characters into editable text on a screen or terminal. Editors evolved from line editors that worked one line at a time, through full-screen editors, to programmable editors that users can extend without limit.
TTY is short for teletypewriter and became the Unix name for a terminal device. On Unix systems the kernel exposes terminals through tty device files governed by a line discipline (termios), and later through pseudo-terminals (ptys) that let software present a terminal interface to other programs.
A parametric curve defined by control points, developed independently by Pierre Bezier at Renault and Paul de Casteljau at Citroen, now the basis of fonts, vector graphics, CAD, and animation paths.
Henri Gouraud's 1971 method for smoothly shading polygonal surfaces by computing intensities at vertices and linearly interpolating them across each polygon, eliminating faceted appearance.
The microprocessor is a complete central processing unit on a single integrated circuit; its arrival shrank the computer from rooms of cabinets to a chip and made computing cheap enough to spread everywhere.
A model of concurrent computation in which independent actors hold private state and interact only by sending each other asynchronous messages.
The optimal fixed-priority scheme for periodic real-time tasks: assign higher priority to tasks with shorter periods. Proven optimal with a provable utilization bound by Liu and Layland in 1973.
The process of converting vector geometry, usually triangles, into pixels on a raster display. It is the dominant real-time rendering pipeline and is specified in detail by graphics APIs such as OpenGL and Direct3D.
What You See Is What You Get: editing a document on screen in its final visual form, pioneered by the Bravo editor at Xerox PARC and made mainstream by the Macintosh.
A per-pixel depth buffer used to resolve which surface is visible at each pixel. Introduced in Edwin Catmull's 1974 University of Utah PhD thesis, it is the standard hidden-surface method in real-time graphics.
The technique of wrapping a 2D image onto a 3D surface to add detail without adding geometry, introduced by Edwin Catmull in 1974 and extended by Blinn and Newell in 1976.
The general idea of arranging for work to run automatically: at a fixed future time, on a repeating calendar schedule, or when the queue and the machine are ready; realized on Unix by cron, at, and batch, and at larger scale by enterprise schedulers.
Bui Tuong Phong's 1975 reflection model and per-pixel normal interpolation, which produce realistic specular highlights and remain a default lighting model in computer graphics.
A single-board computer (SBC) is a complete, working computer built on one circuit board, with processor, memory, and input/output integrated together; the concept runs from 1970s trainer boards to the Raspberry Pi.
Carrier Sense Multiple Access with Collision Detection, the access method that let classic Ethernet share a single medium among many stations.
A 1976 method for two parties to agree on a shared secret over a public channel without ever transmitting it, underpinning HTTPS and TLS.
The first widely used government-standard block cipher, published as FIPS 46 in 1977, whose short 56-bit key was eventually rendered brute-forceable.
A linter is a tool that statically analyzes source code to flag bugs, non-portable constructs, and style or smell problems beyond what the compiler enforces. The category began with Bell Labs lint in 1978 and now spans ESLint, Pylint, clang-tidy, and many others.
A host computer running BBS software with a modem on a phone line, which callers dial into to read and post public messages, exchange files, and play games. The first one, CBBS, was built by Ward Christensen and Randy Suess and described in Byte in November 1978.
A 1978 subdivision-surface scheme by Edwin Catmull and James Clark that builds smooth B-spline-like surfaces from arbitrary polygon meshes by recursively refining the mesh.
An electronic spreadsheet is a grid of cells holding numbers, text, and formulas, where changing one value automatically recalculates every dependent formula. The model began with VisiCalc and runs through Lotus 1-2-3 to Excel.
A killer application is a program so compelling that people buy the hardware just to run it; VisiCalc on the Apple II and later Lotus 1-2-3 on the IBM PC are the classic cases that defined the idea.