One of the silver linings of unemployment is that it’s given me time to make progress on a couple of book projects. I’ll share them both once I’ve made a few more revisions (hopefully by month’s end), but I hope their indexes give you an idea of what they cover:

Software Tools in JavaScriptBuilding Software Together
abstract syntax tree90-9-1 rule
Accumulator patternaccessibility
Acornaccessibility - WebAIM WAVE
actual result (in unit test)active bystander
Adapter patternactive listening
algorithm - greedyactual result (in unit test)
alias - during importADHD
Alloyagile development
anonymous functionagile development - conditions for success
API - as protocolallocating work - chaotic decomposition
Application Binary Interfaceallocating work - confirmation loop
Armstrong, Tavishallocating work - effect of social status
array - implementation ofallocating work - feature decomposition
Array.filterallocating work - functional decomposition
Array.forEachallocating work - in teams
Array.reduceallocating work - modular decomposition
ArrayBufferallocating work - rotating decomposition
assembly codeally
assertion - as runnable documentationalready invented here syndrome
assertion - in unit testanalysis & estimation
assignment - destructuringanalysis paralysis
async keywordAnt
asynchronous executionApache Software Foundation
automatic variable (in build)APT
await keywordassertion
backward compatibilityauthentication - two-factor
bare objectautomated program repair
bind method to objectautomation
bitwise operationautomation - as programming
block commentAutomattic - hiring process
Brown, AmyBaldwin, James
Brubeck, MattBaxter, T. Carter
build - automatic variablebias
build - clock synchronizationbig bang integration
build - dependencyBitbucket
build - hash codeBlack
build - pattern ruleBlackbox project
build - recipeblog - as team journal
build - ruleblog - automatically generated
build - staleBoehm Curve
build - timestampBorland
build managerbranch (in Git)
build targetbreakpoint
Cbreaks (importance of regular)
C++Brook's Law
cache - calculated valuesBrown, Neil
cache - modulesbrowser automation - for testing
cache - of loaded filesbrowser automation - record and playback
call stack - environmentBSD License
call stack - stack framebug tracker
callback functionbuild manager
callback function - conventions forbuild manager - and version control
caller modulebuild manager - Ant
chain of inheritancebuild manager - Make
Chain of Responsibility patternbuild manager - Rake
character encodingbuild manager - rules for using
character encoding - UTF-8build manager - Snakemake
circular dependencybuild number
clock synchronization (in build)Burns, Heather
code - as dataC++
code completionCarnac
code coveragecasual threat
Code of Conductcatch exception
coding style - importance of consistencyCC-BY license
coding style - linterCC0 license
cognitive loadchaotic decomposition
collision (in hashing)checklists - benefits of
column-major storage orderchecklists - use in code review
combinatorial explosionCheckstyle
command-line argumentchorus of explanation
comment - blockchunking
comment - docco-op
comment - linecode browser
compiled languagecode clones
compiled language - linkingcode comprehension
Comprehensive TeX Archive Networkcode coverage
confirmation biascode metrics - ineffectiveness of
console.logCode of Conduct
const declaration - advantages ofCode of Conduct - responding to violations
Cook, Mary Rosecode review
coordinate systemcode review - effectiveness of
couplingcode review - for security
cryptographic hash functioncode review - procedure
CSScode review - responding to
CSS - struggles withcognitive bias
DAGcognitive dimensions framework
data framecognitive load
DataForgecognitive load - extraneous
debuggercognitive load - germane
debugger - source mapcognitive load - impact of checklists
Decorator patterncognitive load - in debugging
delta debuggingcognitive load - intrinsic
dependency (in build)cognitive load theory
depth-first searchcognitive transition
design by contractcollective action
design pattern - Accumulatorcomments - as communication
design pattern - Adaptercommit (version control)
design pattern - Chain of Responsibilitycommit message (version control)
design pattern - Decoratorcommon programming errors
design pattern - Iteratorcommons
design pattern - Singletoncommunication - asynchronous
design pattern - Template Methodcommunication - blog
design pattern - Visitorcommunication - comments
destructuring assignmentcommunication - email
DiBernardo, Mikecommunication - instant messaging
directed acyclic graphcommunication - synchronous
directed acyclic graph (DAG)communication - wiki
directed graphcommunity of practice
doc commentcompetent practitioner
Document Object Modelcompetent practitioner - documentation needs
DOMComprehensive TeX Archive Network (CTAN)
dynamic loadingconceptual architecture - diagram
dynamic lookupconcrete examples
dynamic scopingconcurrent systems - difficult of debugging
eager matchingCONDUCT file
EJSconfiguration - layered
encapsulationconfiguration - parameters
entry point (of module)confirmation loop - allocating work
environment (to store variables)conflict (in Git)
error (in unit test)conflict (in Git) - repeating
Escodegenconflict (interpersonal)
ESDocconflict (interpersonal) - escalating
ESLintconflict (interpersonal) - handling
Esprima formatconfounding variable
eval - insecurity ofconsole
event handler - streaming APIcontinuous integration
event loopcontinuous integration - GitHub Actions
exception - for control flowcontinuous integration - Travis CI
exception - handlercontrarian (why not to be)
exception - in promiseCONTRIBUTING file
exception - throwcontrol group
exception - with awaitcontrolled experiments
execution - asynchronousConway's Law
execution - event loopcopyright
execution - non-blockingcoverage - code
execution - single-threadedcoverage - path
execution - streamingCreative Commons
ExpectCreative Commons - CC-BY license
expected result (in unit test)Creative Commons - CC0 license
experimentsCreative Commons - ND clause
experiments - test harnessCreative Commons - no commercial use
exploratory programmingCreative Commons - share-alike
fail (in unit test)crunch mode
filesystem operationsCSS selector - use in testing
finite state machine - correspondence with regular expressionscultural fit (as unconscious bias)
fixture (in unit test)cutting corners
fluent interfaceCVS (version control)
formal verificationdark matter developer
formal verification - Alloydata mining
formal verification - TLA+data structure diagrams
fs.statdead code
function - anonymousdebugger - breakpoint
function - innerdebugger - single-stepping
function - nesteddebugging - concurrent systems
function signaturedebugging - importance of good habits
fuzz testingdebugging - rubber duck
generator functiondebugging - symbolic debugger
Gitdebugging - why schools don't teach
GitHub Pagesdefensive programming
globbingdelta debugging
globbing - filtering resultsdemotivation
greedy algorithmdesign by contract
hash codedesign for test
hash code - in builddesign pattern - model-view-controller
hash code - SHA-1development process
hash functionDevOps
hash function - collisiondiagnostic power (of formative assessment)
hash function - cryptographicdiagrams - conceptual architecture
header file - in C and C++diagrams - data structure
header file - static site generatordiagrams - entity-relationship
helper functiondiagrams - physical architecture
heterogeneous storagediagrams - use-case map
homogeneous storagediagrams - workflow
Hoye, Mikedictionary attack
HTML5 specificationdigital signature - for activity logs
Huffine, Treydiscoverability - of issues
Human Resource Machinediscovery-based learning
immediately-invoked function expressiondiscrimination
immutable datado-ocracy
import - aliasDocker
import moduledocumentation - as communication
import vs. requiredocumentation - embedded
inner functiondocumentation - for competent practitioners
instruction pointerdocumentation - for experts
instruction setdocumentation - for novices
interpreted languagedocumentation - what to include
intrinsic complexitydocumentation generator
introspection - in unit testingdocumentation generator - JSDoc
introspection - of methodsdoi2bib
IstanbulDon't Repeat Yourself
Iterator patterndouble blind experiments
Iterator pattern - generator functiondual coding
Jakedumpster diving
JavaDunning-Kruger effect
JavaScript - hurried design ofdynamic analysis
Jekylldynamic analysis - Valgrind
Jestdynamic typing
JSDoceasy mode (as a metaphor for privilege)
Kernighan, Brianeditor - Emacs
Knuth, Donaldeditor - Notepad
label (on address)effort-importance grid
language - compiledeffort-importance grid - helping triage
language - interpretedEiffel
layout engineelaboration
lexical scopingElbakyan, Alexander
lifecycle - of file interpolationelevator pitch
lifecycle - of unit testEmacs
line commentemail (for team communication)
linking (compiled language)email - filters
linterembedded database - use in testing
Liskov Substitution Principleengineering tradition in computing
literal (in parsing)entity-relationship diagram
literate programmingerror - common
macroerror - external
Makeerror - internal
manifest (of package)error - misperception of frequency
Markdownerror - root cause analysis
Markdown - parsererror message - internationalizing
matching - eagererror message - writing helpful
method chainingESLint
MochaEvans, Julia
Mocha - afterEachExcel
Mocha - beforeEachexception
mock object - for testingexception - handling
module - entry pointexception - raise
module bundlerexception - under-used and abused
module loaderexception - when to check
mutual referencesexfiltrate
namespaceexpected result (in unit test)
nested functionexperimenter bias
Nison, Maëlexpert
non-blocking executionexpert - code comprehension
Nystrom, Bobexpert - documentation needs
OAuthexpert blind spot
op codeexternal error
Open-Closed Principleextraneous load
operator precedence - implementingextrinsic motivation
Oram, Andyfailure
package manifestfairness
parser - check-and-combinefeature boxing
parser - post-hoc compression strategyfeature creep (danger of)
parser - reasons not to writefeature decomposition
parser - shunting-yard algorithmfeedback loops
pass (in unit test)final report
patch numberfinite state machines - use in software design
pattern rule (in build)fixture (in unit test)
PHPfloating-point arithmetic - difficulty of testing
plugin architectureFlon's Axiom
polymorphism (in software design)flow
process.argvflow graph - abstract interpretation
programming style - fluent interfaceflow graph - actual
promise - as alternative to callbackflowchart
promise - automatic creation ofFord, Henry
promise - behaviorformative assessment
promise - catchfunctional decomposition
promise - rejectfuzz testing
promise - resolvegarbage collection - generational
promise - thenGender Decoder
protocol - API asGeneral Data Protection Regulation (GDPR)
protocol - for unit testinggenerational garbage collection
prune (a search tree)germane load
PythonGilliam, Terry
query selectorGit
query selector (for HTML)Git - basic commands
RGit - branch
race conditionGit - branch names
race condition - time of check/time of useGit - cloning project
recipe (in build)Git - commit
recycling dataGit - commit ID
ReduxGit - commit message
register (in computer)Git - configuring
regular expressionGit - conflict
reject promiseGit - creating project
require - caching modulesGit - difference between add and commit
require vs. importGit - graphical interface
resolve promiseGit - HEAD
row-major storage orderGit - history
rule (in build)Git - ignoring files
runnable documentation (assertions as)Git - interface (indistinguishable from hoax)
sandbox (for safe execution)Git - merge
SAT solverGit - post-commit hook
satisfiabilityGit - pre-commit hook
scope - of variable definitionsGit - pull request
scope creep - when writing lessonsGit - pull request - comments
scoping - dynamicGit - reasons for popularity
scoping - lexicalGit - rebase
search - depth-firstGit - recovering old files
search pathGit - remote
search path - shell variableGit - saving changes remotely
semantic versioningGit - showing status
semantic versioning - patch numberGit - viewing differences
setImmediateGit - workflow
setTimeoutGitHub Actions
SHA-1 hash codeGitHub Pages
shell variable (for storing search path)GitLab
shunting-yard algorithmGNU Public License (GPL)
side effect - for module registrationGoal-Question-Metric
signature - of functionGoodhart's Law
sin - using regular expressions to parse HTMLGoogle - unfair hiring practices
single-threaded executionGoogle Summer of Code
Singleton patterngovernance
slug (unique identifier)Graf, David
software design - bare objectGrand Perspective
software design - couplingGUI designer
software design - deferring problemsharassment
software design - design by contractHippocratic License
software design - driverhiring process
software design - encapsulationhiring process - Automattic
software design - generic functionhiring process - healthy
software design - Liskov Substitution Principlehiring process - mistakes
software design - Open-Closed Principlehistory of computing
software design - plugin architecturehitchhiker
software design - polymorphismHomebrew
software design - testabilityHoye, Mike
source maphuman rights
spread - function argumentshumanist tradition in computing
SQLhypercorrection effect
stack frameIDE
stale (in build)IDE - console
Standard JSIDE - in browser
static site generatorIDE - under-used and abused
static site generator - header fileIDE - VS Code
storage - heterogeneousimplicit bias
storage - homogeneousin-memory database - use in testing
storage order - column-majorinequality
storage order - row-majorinsider threat
streaming APIinstant messaging - inevitable use of
streaming API - event handlerinstitutional priorities
string interpolationintellectual property
tagged data structureintellectual property - copyright
target - buildintellectual property - patent
TDDintellectual property - trade secret
Template Method patternintellectual property - trademark
test harnessinternal error
test runnerinternship
test subject (in unit test)interruption bingo (in meetings)
test-driven developmentinterruptions
testability - as design criterionintimate threat
tidyverseintrinsic load
time of check/time of useintrinsic motivation
timestamp - in buildintrospection
token (in parsing)issue - classifying
topological orderissue - description of
transitive closureissue - fields
Turing Machineissue - good titles
two hard problems in computer scienceissue - timestamps
unit test - actual resultissue tracker
unit test - errorissue tracker - as course deliverable
unit test - expected resultissue tracker - helping triage
unit test - failissue tracker - Jira
unit test - fixtureissue tracker - milestones
unit test - interactive applicationissue-tracking system
unit test - lifecycleJava
unit test - passJava - build manager
unit test - requirements forJava - style checker
unit test - test runnerJavaScript
unit test - test subjectJavaScript - style checker
unit test - using mock objectJekyll
University of TorontoJira (issue tracker)
variable definition - scopejust-in-time compiler
version control systemKaplan-Moss, Jacob
version control system - GitKendzior, Sarah
virtual machineLaTeX
virtual machine - op codelearned helplessness
Visitor patternlearner persona
walk a treelearning strategies
WebAIM WAVElearning strategies - concrete examples
Whitehead, Alfred Northlearning strategies - dual coding
Wilson, Greglearning strategies - elaboration
Wolfram Alphalearning strategies - interleaving
learning strategies - retrieval practice
learning strategies - spaced practice
learning styles
legitimate peripheral participation
Lehrer, Tom
lending privilege
license - software
license - why not to write your own
Linux - toxic leadership
logging - during debugging
logging - for security
logging - levels
logging - output format
logging - rotating files
long-term memory
major version number
Make - pattern rule
Make - shortcomings
Markdown - for final report
Martha's Rules
mathematical tradition in computing
meetings (online)
meetings - discussion
meetings - decision
meetings - extra rules for post mortems
meetings - interruption bingo
meetings - three sticky notes
Mencken, H.L.
mental health
mental health (stigma associated with)
mental model
mental model - Git
Mercurial (version control)
merge (in Git)
Microsoft Project
Microsoft Visual Studio Code
Microsoft Word
milestone (in issue tracker)
minor version number
minutes (of meetings)
MIT License
mock object
model - of software development
model-view-controller architecture
model-view-controller architecture - testing
modeling tools - Alloy
modeling tools - TLA+
modular decomposition
motivation - extrinsic
motivation - intrinsic
motivation - self-efficacy
Myers-Briggs Type Indicator
negative results (failure to publish)
Node.js - package.json file
non-disclosure agreement
non-disclosure agreement - abuse of
not invented here syndrome
note-taking (as a learning strategy)
novice - code comprehension
novice - documentation needs
onboarding checklist
open offices (evils of)
Open Source Initiative
Open-Closed Principle
org chart - importance of
package - as course deliverable
package - building
package manager
package manager - APT
package manager - Homebrew
package manager - NPM
package manager - package ratings
package manager - pip
package manifest
pair programming
pair programming - effect of personality
paradox of tolerance
patch (software)
path coverage
peer evaluation
performance review - importance of written criteria for
performance testing - manual
Petre, Marian
Petrov, Andrey
physical architecture - diagram
plugin - for IDE
post mortem
post-commit hook
post-condition - strengthening
Pratchett, Terry
pre-commit hook
pre-condition - weakening
pre-registration of experiments
process - waterfall
Proctorio (invasive surveillance)
product manager
productivity - comparative
productivity - SPACE framework
programmers - happiness
programming - innate ability
programming in the large
programming language - compiled
programming language - dynamically typed
programming language - ease of learning
programming language - interpreted
programming language - statically typed
project course - characteristics of
project manager
project organization - standard files
pseudoscience - learning styles
pseudoscience - Myers-Briggs Type Indicator
pull request
pull request - serial number
Python - PEP8 style guide
Python - style checker
qualitative methods
R (programming language)
radical candor (as bullshit)
raise exception
reading code
reading code - effect of variable names
reading code - eye tracking studies
reading code - fMRI studies
rebasing (in version control)
refactoring - for code review
remote (in Git)
reporting - to your manager
repository (version control)
Representational State Transfer
reproducible example (reprex)
requirements error
retrieval practice
Robinson, Evan
rotating decomposition
rubber duck debugging
sanitizing data
Scalzi, John
Schneier, Bruce
scientific tradition in computing
Scottish verdict
secure deletion tool
security theater
self-confidence (lack of)
semantic versioning
sense vote
Shopify - support for alt-right sites
short-term memory
short-term memory - chunking
short-term memory - limited capacity of
significance hacking
Snowden, Edward
social engineering
sociotechnical congruence
software design - accessibility
software design - evolution
software design - influence of testability
software design - role of diagrams
software design - scriptability
software license
software license - BSD License
software license - GNU Public License (GPL)
software license - Hippocratic License
software license - MIT License
software license - open
software license - why to use the MIT License
software patch
software portal - Bitbucket
software portal - communication tools
software portal - GitHub
software portal - GitLab
SPACE framework
spaced practice
SQL injection attack
Stack Overflow
stand-up meeting
standard project files
static analysis
static site generator
static site generator - Jekyll
static typing
string I/O
style checker
style checker - Black
style checker - Checkstyle
style checker - ESLint
Subversion (version control)
symbolic debugger
Taylor & Francis
team contract
teams - allocating work
teams - benefits of diverse ability levels
teams - dissolving
teams - effect of having friends on
teams - effective size of
teams - isolating at-risk students
teams - learning benefits of
teams - selecting
teams - taking schedules into account
Tech Solidarity
technical debt
test framework
test runner
test suite
test-driven development
testability - influence on software design
threat - casual
threat - insider
threat - intimate
three sticky notes (in meetings)
throw low, catch high
ticketing system
time boxing
time management
timestamp - of Git commit
to-do list
tone policing
toxic people - misperception of
toxic people - rarity of
trade secret
Travis CI
treatment group
triage - using issue tracker
Turbo Pascal
two-factor authentication
type declaration - effect on readability
type declaration - effectiveness at catching bugs
type declaration - use in software design
typing - dynamic
typing - static
unconscious bias
Unified Modeling Language
unit test
unit test - actual result
unit test - browser automation
unit test - code coverage
unit test - expected result
unit test - fixture
unit test - floating-point arithmetic
unit test - fuzzing
unit test - influence on software design
unit test - path coverage
unit test - performance
unit test - profiling
unit test - test framework
unit test - test suite
unit test - visualization
Universal Declaration of Human Rights
University of Toronto
Up & Go
use-case map
user story - use in software design
variable naming
version control
version control - and build manager
version control - centralized
version control - collaboration
version control - collaboration - using a shared repository
version control - collaboration - using forked repositories
version control - CVS
version control - decentralized
version control - Git
version control - inability to handle office documents
version control - Mercurial
version control - reasons to use
version control - repository
version control - Subversion
version control - systems
version control - when to commit
version numbers
version numbers - build
version numbers - major
version numbers - minor
version numbers - patch
version numbers - semantic versioning
Vim editor - exiting
virtual machine
virus scanner
Visual Basic
visualization - difficulty of testing
VS Code
Wales, Jimmy
waste (in software development)
waterfall model
whiteboard coding questions
Wilson, Greg
Wilson, Robert
workflow (in Git)
workflow diagram
working memory