90% of people will watch, 9% will speak up, and 1% will actually
do things.
benchmark
A program (or set of programs) used to measure or compare the
performance of a piece of software.
benevolent dictator
A person who has final say on all aspects of a project's operation
and direction.
uild manage
A program that keeps track of how files depend on one another and
runs commands to update any files that are out of date.
casual threat
A low-effort threat from a relatively unskilled attacker.
CC-0
A shorthand for putting something in the public domain, i.e.,
imposing no restriction of any kind on its use.
CC-BY
The Creative Commons - Attribution License, which allows
copying, derived works, and for-profit sale so long as the
original source is acknowledged.
CC-BY-NC
The Creative Commons - Attribution - NonCommercial License,
which allows everything CC-BY does except commercial use
without the license holder's permission.
chief programmer
A person responsible for most of the new code in a project,
similar to a chief surgeon in a hospital.
chunking
The act of grouping related concepts together so that they can be
stored and processed as a single unit.
ognitive loa
The amount of working memory needed to accomplish a set of
simultaneous tasks.
community of practice
A group of people working together on something who assist and
mentor each other.
competent practitioner
Someone who can do normal tasks in some domain with normal effort
under normal circumstances.
concept map
A box-and-connector diagram of the major elements in someone's
mental model of something.
continuous integration
A system that merges and tests changes automatically as soon as
they become available, typically in a temporary copy of the
project.
Creative Commons
A non-profit organization that helps overcome barriers to sharing
knowledge, principally by publishing and defending a widely-used
set of licenses.
decorator
A function that takes some other function as input and replaces it
with a modified version.
esign by contrac
A style of designing software in which functions specify the
pre-conditions that must be true in order for
them to run and the post-conditions they
guarantee will be true when they return.
esign patter
A recurring pattern in software design that is specific enough to
be worth naming, but not so specific that a single best
implementation can be provided by a library.
DevOps
A set of software development, deployment, and management
practices intended to shorten the development cycle and make it
more reliable.
Digital Object Identifier (DOI)
A multi-part string that uniquely identifies a published document.
ynamic loadin
To import a module into memory while a program is already running.
Most interpreted languages use dynamic loading, and provide tools
so that programs can find and load modules dynamically to
configure themselves.
entity-relationship diagram
A diagram showing the tables in a database, the fields in each,
and the relationships between those tables' keys.
expert
Someone who can diagnose and handle unusual situations, knows when
the usual rules do not apply, and tends to recognize solutions
rather than reasoning to them.
expert blind spot
The inability of experts to empathize with novices who are
encountering concepts or practices for the first time because they
have forgotten what it's like to not know something.
FAIR Principles
Guidelines for making data findable, accessible interoperable, and
reusable.
false beginner
Someone who doesn't yet know much about this domain in specific,
but who can transfer a lot of understanding from another domain.
ixtur
The thing on which a test is run, such as the parameters to the
function being tested or the file being processed.
lowchar
A block-and-arrow diagram showing the orders in which statements
in a function can execute.
GNU Public License (GPL)
An open software license that requires people to share the source
code of changes or extensions they make.
hero project
A project in which one person or a small number of people are
responsible for almost all interactions.
Hippocratic License
A software license that allows people to use and share software so
long as they do not violate human rights.
information hiding
Keeping the implementation details of a class or module internal
to that class or module, which allows those details to be changed
without affecting other classes or modules.
insider threat
A threat in which the attacker already has access to privileged
information or critical systems because of their job or other
role.
intimate threat
A threat in which the attacker has access to privileged
information or critical systems because of their personal
relationship with the target.
JavaScript Object Notation (JSON)
A way to represent data by combining basic values like numbers and
character strings in lists and dictionaries. The acronym stands
for "JavaScript Object Notation"; unlike better-defined standards
like XML, it is unencumbered by a syntax for comments or ways to
define a schema.
lazy evaluation
Delaying a computation until the value is actually needed.
legacy code
Software that is either no longer supported or very difficult to
support because of the accumulation of features and changes.
egitimate peripheral participatio
Doing small tasks that a community of
practice regards as valuable in order to
gradually become a member of that community.
logging
Recording information about the execution of a program in a
structured way for later analysis.
long-term memory
The part of memory that stores information for long periods of
time. Long-term memory is large, but slow, and cannot be accessed
directly.
oose couplin
Components in a software system are said to be loosely coupled if
they are relatively independent of one another, i.e., if any one
of them can be changed or replaced without others having to be
altered as well.
arkdow
A markup language with a simple syntax intended as an alternative
to HTML.
Martha's Rules
A simple set of rules for making decisions in small groups.
mental model
A simplified representation of the key elements and relationships
of some problem domain that is good enough to support problem
solving.
meritocracy
A system in which advancement is theoretically based on individual
ability. In practice, they reward those who are well-connected
enough to know what the unwritten rules are and/or affluent enough
to have free time.
MIT License
An open software license that requires people to acknowledge the
source of the software, but does not require derived work to be
open.
novice
Someone who has not yet built a usable mental model of a domain
and therefore struggles with even basic tasks.
Open Researcher and Contributor ID (ORCID)
An alphanumeric code that uniquely identifies someone publishing
research results.
passphrase
A password made up of several words. Passphrases are usually more
secure than human-generated passwords.
password manager
A program that manages passwords used by multiple sites or
applications.
paywall
A feature that prevents people from accessing content unless they
have paid to do so. Many researchers use
Sci-Hub to circumvent
paywalls.
persona
A brief description of an fictional persona that captures key
features of something's intended audience.
phishing
An attack in which someone pretends to represent a legitimate
organization, e.g., by sending an email that appears to come from
an actual bank or university.
pipe
To use the output of one computation as the input for the next, or
the connection between the two computations responsible for the
data transfer. Pipes were popularized by the Unix shell, and are
now used in many different programming languages and systems.
ost-conditio
Something that is guaranteed to be true after a function runs
successfully. Post-conditions are often expressed as assertions
that are guaranteed to be be true of a function's results.
power mapping
The process of figuring out who actually has the power to change
something.
pre-conditio
Something that must be true before a function runs in order for it
to work correctly. Pre-conditions are often expressed as as
assertions that must be true of a function's inputs in order for
it to run successfully.
Principle of Least Privilege
Restricting access rights for people and programs to the absolute
minimum required to perform a task.
product manager
The person responsible for defining what features a product should
have.
profiler
A tool that builds a performance profile showing how much time is
spent on each line (or in each function) of a program.
project manager
The person responsible for ensuring that a project moves forward.
refactoring
Reorganizing software without changing its behavior.
reproducible example (reprex)
A small, self-contained example of a problem.
Robert's Rules
A set of rules for managing large meetings and organizations.
security fatigue
A reluctance to deal effectively with security threats caused by
long periods of heightened vigilance.
security theater
Doing things that give the impression they are making a system
more secure but which don't actually have any impact.
seed
A value used to (re-)start a pseudorandom number generator (PRNG).
A PRNG will generate exactly the same sequence of values when
given the seed again.
emantic versionin
A standard for identifying software releases. In the version
identifier major.minor.patch, major changes when a new version
of software is incompatible with old versions, minor changes
when new features are added to an existing version, and patch
changes when small bugs are fixed.
sense vote
A preliminary vote used to determine whether further discussion is
needed in a meeting.
short-term memory
The part of memory that briefly stores small amounts of
information that can be directly accessed by consciousness.
situational awareness
Understanding and paying attention to what's happening in one's
immediate environment.
static site generator (SSG)
A program that compiles source files to create HTML pages for a
website rather than generating HTML on the fly.
test-driven development (TDD)
A programming practice in which tests are written before a new
feature is added or a bug is fixed in order to clarify the goal.
two-factor authentication
A means of proving identity (e.g., to log into a computer) using
something the person has and something they know.
Unified Modeling Language (UML)
A set of graphical notations for modeling object-oriented systems.
nit tes
A test that exercises one function or feature of a piece of
software and produces pass, fail, or error.
YAML
Short for "YAML Ain't Markup Language", a way to represent nested
data using indentation rather than the parentheses and commas of
JSON. YAML is often used in configuration files and to
define parameters for various flavors of Markdown
documents.