This is what all technical tutorials should look like. Well-composed and generally free of grammatical errors, spends just the right amount of time explaining each new topic as it is introduced, comes with full code samples, and includes visual samples of what the code does. Also, lengthy enough to treat the material in depth, while still being sufficiently self-contained that I can follow along -- without having read part 1 and without more than a few months of Common Lisp under my belt from a couple years back (tho I've done a decent amount of Clojure and Emacs Lisp.)
Thank you for sharing Mike Hoye's "Citation Needed" (which documents the strange-but-true origin of the programming-language convention of array indices starting at zero, instead of one.)
A piece of writing born of someone's realization that nobody else has investigated this,as with "Citation Needed." Part of that magicalness comes from the novelty of the discovery, which, in the hands of a good writer, will be unfolded for the reader so that it feels like they could have discovered it, too. Another part of the magicalness is the same feeling one gets when one reads about an archaelogical or historical find from the unlikeliest of places: you mean we didn't know?! As you said in your reply, so much of computing history is being lost to time every day.
The reason Lisp is special is because you can TURN OFF semantics.
(+ 1 1) is pure form. (+ 1 1) is syntax. (+ 1 1) is a syntactic expression: it has structure. But, until we evaluate it, it doesn't have meaning. [It might appear to be "add one and one," but in a programming language focused on bits and bytes, (+ 1 1) might well be the command to put together two bits, resulting in 11.]
In all the Lisp-family languages I know of, because they are programming languages, and by default the programmer expects to evaluate syntactic expressions, the default notation for an expression which will be evaluated is simpler than that for one which will not be evaluated.
Consider writing functions which generate an inventory characteristic of a given NPC which can be run to produce their inventory when they are first created. Such functions could then be re-used to describe the possible kit for allied NPC types, such as when a player is searching for hirelings.
Some inventory contents, as well as slots on the body, could be integrated into dynamic descriptions of a character.
Dynamic Description
We could use this toy function to provide a basic textual description of a character.