| aaaaTestDir | ||
| bin | ||
| Images | ||
| OtherStuff | ||
| Pages | ||
| Terms | ||
| .gitignore | ||
| aaaaTest.trm | ||
| aaaaTestScript | ||
| areas.data | ||
| authors.data | ||
| dads.css | ||
| dads.spell | ||
| Dockerfile | ||
| htmlWarnings | ||
| latex2html.data | ||
| LICENSE | ||
| macroReplace.pl | ||
| Makefile | ||
| mkauthors | ||
| mkcommon.pl | ||
| mksiteFastar.pl | ||
| mksiteNIST.pl | ||
| mkterms | ||
| README | ||
| README.md | ||
| template.trm | ||
| types.data | ||
| zzzzTest.trm | ||
dads
A mirror of the Dictionary of Algorithms and Data Structures (DADS), originally created and maintained by Paul E. Black at NIST. The official NIST copy went offline; this repository exists to keep it accessible and reproducible. My copy of it lives on my own domain, and as the dictionary is under the Unlicense, everyone is free to host their own copy. Any and all edits of mine are also under the Unlicense – modify and reproduce freely, as you see fit.
The content of the dictionary is unchanged from the upstream source, with one exception: JSort.trm and jsort.trm have been renamed to JSort_morrison.trm and jsort_cohen.trm to avoid a filename collision on case-insensitive filesystems (macOS, Windows), and a jsort.trm disambiguation page has been added.
Additionally, the built-in Google SafeSearch was carved out – both as it wouldn't actually work with this new mirror system, and because I don't want Google involved with this dictionary, on principle.
Host it yourself
All you need is Docker. At least, for the way I did it – technically, this should be hostable via anything capable of running a whole bunch of connected webpages.
git clone https://git.arcsnet.dev/arc/dads
cd dads
docker build -t dads .
docker run -d --name dads --restart unless-stopped -p 8080:80 dads
The site will then be available at http://localhost:8080, or whatever port you specify if you're already using 8080 for a different docker or service. Point a reverse proxy or Cloudflare tunnel at the port to expose it publicly. Or do whatever you want. I'm not your dad.
Updating
If new content is pushed to this repo:
cd dads
git pull
docker build -t dads .
docker stop dads && docker rm dads
docker run -d --name dads --restart unless-stopped -p 8080:80 dads
It likely won't be though. I'm not a data scientist.
How it works
The build is a two-stage Docker build:
- Stage 1 (
alpine:3.21): installs Perl and m4, then runs the originalmakepipeline to compile 1,100+.trmterm files into a static HTML site underTarget/. - Stage 2 (
nginx:alpine): serves the static output on port 80.
No external dependencies, no database, no runtime, no nothing. Runs as one singular docker, with me making this fully locked-down to itself it shouldn't really even eat resources, regardless of load. Contact me if it breaks, somehow, albeit I'll be baffled if it somehow does.