Review: Advanced Memory Palaces by Joe Reddington

Advanced Memory Palaces by Joe Reddington (2022)

image

I found out about @joereddington’s book while on vacation and ordered it as soon as I arrived home. I’ve barely been home a day but I devoured it quickly. Joe’s background as a researcher in data structures is close to my experience in working with all sorts of computer languages and I enjoyed that we both are curious about how to leverage the enormous field of efficient data structures for mnemonics.

He’s been using mnemonics for personal use for quite some time so has had the personal experience to authoritatively talk about what can work. And I found no issue with his discussion of computer terms. In fact, if you are familiar with arrays, trees, maps, etc. and never thought about them as mnemonic tool types, you will find the discussion eye-opening and accurate.

He spends his observation time with trees, classes, skip lists, and Karnaugh maps. Very little time is spent with traditional mnemonic system discussion but uses many descriptive examples. I personally think classes have quite a bit of application for real-world design of memory systems and was happy to see them in a good light. But Karnaugh maps will take some time to digest for me.

Skip lists was a new concept for me that I plan on implementing by using a second list of associated items. It’s an abbreviated list of every nth item. A bestiary could be constructed from every fifth item such as your choice of animals for A, F, K, P, U, Z. Jumping to animal 22 is easy as counting by 5s to #21 Unicorn in the skip list and then adding one in the bestiary list.

Joe does redefine some mnemonic terms mostly for clarification. His bent is technical and leans towards using computer terminology in many descriptions. Fortunately, he removed his discussion on entropy because I doubt anyone would really need that. And it’s because of the technical design discussions that he makes it clear that this book is not a first read for anyone.

Joe is the first person in print that I know of that has made the connection between the two disciplines of computer science and mnemonics, which is a major milestone in my mind, and he deserves much credit for the hours of writing and thinking to do that. I look forward to his participation in our discussions here on the forum because he has a different point of view that will be valuable for programmer types to see that not all the world can be conquered by a PAO system.

PS Thanks to @JohnDen for the tip about the book!

37 Likes

I’m reading it too at the moment.

It’s a refreshingly different approach. I know nothing about programming so it’s taking me a while to fully grasp the approaches but it’s very interesting.

Thanks for the review

4 Likes

I tried to figure out what that might be and only came up with static keyword usage. Maybe I should find out more and see if the entropy discussion was something better than I imagined. What’s your take on it @user_7e?

I suspect “entropy” is used in the Information Theory sense, not the the more common thermodynamics meaning. It has to do with the information content of a message.

4 Likes

@zvuv, never having had the low-level instruction about such things that Java took care of for me in the libraries, I didn’t think entropy was appropriate for mnemonics. But after reading about it, it seemed like it basically was a measure of noise introduced between storage and retrieval, maybe like how our brains will forget, provide ghost images, or create a different meaning for a memory image. In that sense, it would be appropriate to discuss what systems have better records for accurate and effective recall with the same amount of review.

Can you draw some relevant comparisons to mnemonic language terms? @user_7e too?

1 Like

This is a good discussion.

1 Like

I don’t know how the author applied the concept and what little I knew is very rusty but perhaps this is useful. It’s a bit glib and I will probably get a spanking from someone who knows what he’s talking about - so a pinch of salt.

In Information Theory, Entropy is a measure of the essential information in a message were you to strip away all redundancy. It’s a measure of the amount of uncertainty dispelled by the message. For example, if I tell you the sun will rise to tomorrow, that’s no news. But if I tell you China will invade Taiwan tomorrow, that’s news. More specifically, imagine I flip a coin and it lands on the table between us. If I announce “heads”, this is no information, you knew that. Suppose instead I cover it as it lands and then peek. Then if I announce heads this removes a 50/50 uncertainty transmits 1 bit of information.

This idea is used to analyze codes = how much information is transmitted vs how many characters were needed to send it.

Were I to record the result “heads” as such, that would be 5bytes - 40 bits to record 1 bit of information.

von Neuman noticed that his mathematical formulation of this metric was identical to the Thermodynamic Concept of Entropy with the same mathematical properties and decided to use that name. While there is a deep connection, at our level this mostly serves as a source of confusion and distraction.

2 Likes

@zvuv, Joe didn’t discuss entropy at all per se. He had a large section he removed from his draft so I’m grasping at straws here. I doubt if he’ll take you to the woodshed over your excellent quick overview.

So increasing entropy means to increase the uniqueness of a locus like @user_7e’s similar rooms don’t have or as Quintillian says that “some place is chosen of the largest possible extent and characterized by the utmost possible variety.”

@user_7e’s high entropy, too unique locations, created a more bizarre type of association which didn’t work well either. Perhaps that was the result of the bizarre locus sapping the recall ability from the more mundane loci as psychology studies showed (Kroll & Tu, 1988 and Lang in 1995). His overlapping loci reinforces the chain of loci and removes the high entropy bizarreness.

Another study (Blunt, 2015) showed that it wasn’t the bizarreness that aided recall but the action. The forum seems to repeat the necessity of bizarre imagery but @user_7e, you find that entropy increases with interaction as well and that is as important as object entropy in sequence, as you say. So your comment on balance seems right on as I try to apply the results of psychology studies here.

I hope that I’m getting the concept of entropy stuck in my head now. It’s been fun to try to combine computer science, information theory, mnemonics, and psychology. I seem to be pushing the concept of bizarreness from psychology into the realm of information theory as I write, @user_7e, so let me know if you think that it’s a fairly close match for how to discuss entropy.

2 Likes

Thanks for this review. I thought it was an excellent book. I don’t have in front of me, so from memory(!) some of my takeaways were:

  1. Classes. How to memorise a table of data? Have a series of similarly-structured pegs (for the table rows) where you can attach the different data points (table columns) in a consistent way. For example, use five shops in a high street for five rows of data. Attach the data in column 1 to the doors, the data in column 2 to the windows.

  2. Karnaugh maps. You can memorise something like a Venn diagram, for example by dividing a room into four quadrants.

  3. Redundancy. If you are memorising for the long term, adding extra details to your images makes the image last longer. As these details fall away over time, you will still be able to retrieve the information until the last detail (and therefore the connection) is lost.

  4. Notation. The book introduces “->” for a connection you need to invent, and “=>” for a connection you know naturally. For example, to remember your front door needs the yellow key, you might visualise custard on your door. This can be notated: door → custard => yellow. Key words, i.e. the object in front of a single arrow, must be unique.

This last point reminds me of the 15th century “A Method for Recollecting the Gospels”, which can be found in The Medieval Craft of Memory. Regrettably I don’t see how this medieval method can work because it reuses the same key words, e.g. John’s gospel is portrayed on three eagles. (Admittedly I haven’t tried it.)

8 Likes

Thanks for bringing this book to my attention. The “data structures” of memory palaces fascinates me!

2 Likes

I ordered the book. I’m sure it’s going to be at least thought provoking. Thanks for the tip.

I have thought about this subject myself. I’m sure anyone involved in programming and data structures has considered their applicability to memory work and IMO there are valuable insights to be gained. But of course the brain is not an electronic computer and there are major differences.

Certain structures, like linked list and hierarchical trees are natural to the brain. IMO the linked list is a fundamental form of knowledge in the human brain. It appears as the story, the narrative, poems and songs. It’s a private speculation that stories or chanted narratives was the original form in which humans retained and transmitted information and to this day they remain deeply compelling.

Experience with linked lists in programming can give insights. Most English speakers can recite the alphabet in order but reversing is a struggle because the links only point forwards and, typically, there are no back pointing links. Another weakness is that if a link is lost, the rest of the chain may be gone too. This problem is even more severe with trees where dropping a branch can lose a whole subtree.

There’s a lot more to discuss but perhaps I should read the book first. :slight_smile:

2 Likes

This is great. I’m excited to read it. I’m really hoping he writes about directed acyclic graphs at some point. I think that’s the best data structure for remembering the details of multi-causal historical episodes (e.g., The French Revolution).

1 Like

@JohnDen, classes have certainly been untouched, probably because so few people understand object oriented design well enough to convert the thinking into mnemonic structures. I grappled with the ideas and ended up calling them abstract pegs, because just like abstract classes, they can’t be used for a concrete object.

The medieval blockbook illustrations that repeat the central image of the eagle and add minor images at consistent locations have quite a few connections to other ideas we have words for now. The eagle provides the locus… but it’s not a locus really. It could be seen as an OO class. The class of John. Here’s the first object instantiation:


I guess it’s more of an abstract data structure that has positionally puts other images as cues to the text in consistent places. You can draw relationships to pre-OO prototypes in JavaScript or abstract data types (ADTs) in that this is a loosely typed system with constraints to a maximum of images following the rule of seven (plus or minus two) for optimum recollection.

But the designated areas on the eagle, or fields/member variables have no specific typing and would just be named head, rightWing, leftWing, etc. and the datatype would be Object. The methods would end up being the actions and any introduced items, like a rapscallion, would be considered a local variable with private visibility within the method.

I could go on but I don’t think it is really profitable. I’ve tried to work out the details in some complex problems using OO thinking with a class as the container (a book structure, a directional structure, and an anatomical structure for massage), offered here on the forum. You won’t see the word ‘class’ there but the encapsulation is strong, inheritance (adding a new position/action on the eagle) and polymorphism by interface (what groups of things are flying, burning, throwing another object?) are implementable.

I much prefer a strongly typed system and use that technique in my solutions and with the SEA-IT visual data types which would be considered the primitive variable types of visual mnemonics.

I think Joe has started some great discussions and I’m very happy to see some more in-depth cross-discipline thinking on the forum for programmers. We do have to implement the designs eventually so post what you think a good example is of your data structure. Joe elaborated in his book with many great examples although they were very British and being American, not my cup of tea. :teapot:

3 Likes

@zoderfit, he does spend quite a bit of time on trees, moving from basic concepts to balancing a tree but graphs weren’t covered. I’m sure he’ll read this topic at some point. Maybe he’ll even preview some of his thinking here (hint hint).

@thinkaboutthebible, yeah, I did see he covered trees in detail. That’s great.

Simple historical episodes can just be represented as a linked list with:

event A → event B → event C.

That’s typically concretized in the mnemonic world as a memory palace, so that:

  • link node memory address → locus object
  • events → items stored in link node
  • pointer to next link node → your knowledge of how to traverse from the locus object to the next locus object

But complex historical episodes might be represented as a directed acyclic graph (DAG) with:

event A → event B → event C
event A → event A’ → event B
event X → event C

These seem to have a tree-ish nature. But they’re very unbalanced trees. Once a tree is unbalanced enough, you’re right back to the linked list. So if I had to pick one simple data structure into which I’d shoehorn my historical episode using some hacks, I’d go with the linked list. I think the hack would be to take travesal paths very seriously. So, in the last example, I’d have A, B, C, A’, X as items in a memory palace. A and X would represent starting points in the memory palace. I could get to the terminal item C via traversals A → B → C; A → A’ → B → C; or X → C. But I could not get to C via X → B → C. There’s something blocking my traversal path X → B. I’m not sure how to represent that well.

I think there could be a lot to be gained by thinking in more detail about traversal paths. They seem to be a “later-chapter” topic in the human mnemonics world right now. That’s understandable:

  • you have to get your basic array lists and linked lists working first
  • array lists and linked lists suffice for excellent performance in memory competition, and that’s where the most interest is.

Traversal paths were a theme in How to implement a mental priority queue? For me, it’s a really interesting problem:

  • we understand the abstract concept of a priority queue,
  • we know how to implement it on a computer
  • we, as humans, can maintain it naturally in our heads
  • so our brains unconsciously implement it somehow
  • so how do our brains implement it!?
  • if we could understand that, we could understand how one might have implemented theirs well or poorly
  • if we could understand that, we could make recommendations for how one might tweak theirs for better performance, reducing their problems with forgetfulness.

I think the best proposed solution for implementing a mental priority queue involved re-thinking traversal paths, making them the star of the data structure show.

I had coffee this morning.

2 Likes

@thinkaboutthebible, On object orientation, I think I see what you’re saying. I hadn’t thought about it in much detail until you wrote about it here.

So, the most popular data structure is the [linked list] ← → [memory palace], with native items stored in each node. We can create a [tree] ← → [hierarchical memory palace] by adding an extra link from each node to another memory palace. With this tweak, we simply enhanced the node object (i.e., it still has fields for the native item stored and the link to the next locus object but now, in addition, it also has a link to the head of a different, sub-hierarchical memory palace). I think what’s important to note is that we did not change the type of the item stored, it’s still native. But maybe there’s something to be gained by changing those storage items from native data types to bespoke object data types?

This was sort of a theme in Historical timeline memory: my proposed system. There, I considered changing the data type of the locus object (which I believe has an analog of memory address in the computing world) from a native data type to a bespoke data type. So, e.g., we might start with each locus object being a piece of playground equipment. But then we could enhance each by considering its north, south, east, west components. We might store political history stuff at the north component, scientific history stuff at the south component, etc. But that’s not exactly the same as changing the data type of the storage object

But I did speak about enhancing the data type of the storage object from native data type to a DAG, in the case of a historical episode.

So, what I’m understanding: we don’t typically bring in OO machinery because we only have a couple containing data structures and we typically only store native data types in them. But we could benefit from thinking about new containing data structures (which are just objects themselves) and non-native data-types objects for storage.

2 Likes

This is a lovely thread to read. Particularly because I’ve started to make notes for a (admittedly notional) second edition. Thank you everybody. “Refreshingly different” is a big relief for me to read when I was perhaps expecting “Needlessly combative” or “Openly disrespectful”. Thank you @thinkaboutthebible for starting it.

I’m new to the forum so I don’t know if the protocol is to answer each query with a separate post or to roll them into one. I’ll assume all-on-one-post. Do let me know if I’ve missed anything.

As @zvuv suggests (and gives a good overview of) I meant entropy in the information sense¹, and I think it’s interesting to explore from the point of view of memory techniques. It is useful to know things like “Is the way I have encoded this information efficient?”, “How does the standard approach compare to the theoretical maximum?”. The conversation would then follow into talking about the tension between high entropy and `memorability’², and bring in the actually useful topics of checksums and error-correcting codes.³ As mentioned - this whole area got cut because I wanted the book to be readable to a wider audience.

On @zoderfit’s point about directed acyclic graphs (DAGs): my PhD focused on DAGs, and I think they’d be interesting. I didn’t put them in the book for two reasons:

  1. I haven’t used one myself.
  2. Nodes in useful DAG’s inherently don’t all have the same arity. I’d spent a long and complex chapter on binary trees, and I didn’t want to generalise to variable arity trees and then to DAGs. That would have been a lot of content although it does get you the excellent example of road networks.⁰

In practice, for the application that you describe, I think you can build something relatively simple using a class. Do you have the DAG drawn out?

Several people on the thread mentioned OO design. It’s cool to think about but I should be clear that the book itself steers clear of bringing any element of classic OO-design⁵ into human mnemonics because I don’t believe that to be useful for us.⁶ I’ll admit I very much muddied the water by using the terms ‘class’ and ‘polymorphism’ in places were I strictly shouldn’t and I’m sorry about that.

⁰ For purists, those would strictly be undirected graphs (or not, feel free to have that argument :slight_smile: )
¹ Although we can have a fun talk about why Shannon called it Entropy - there is a whole Wikipedia article devoted to the difference. Entropy in thermodynamics and information theory - Wikipedia
² I need to do a bit of research on this because I suspect people interested in long term recall have a very different view on this tension than memory athletes.
³ My favourite example of a memory checksum is in the Dead Sea Scrolls… Masoretic Text - Wikipedia
⁴ or four, if you want them the other way up.
⁵ By which I mean, objects that have behaviour, or hidden internals: records-that-look-like-objects are very useful fine and have a whole chapter
⁶ I have nothing against OO-design, indeed, a major part of my day job involves running this: https://whitewaterwriters.com/, which is the application of OO-design to novel writing.

11 Likes

What is the 1st book we should read on mnemonics?

2 Likes

I immediately wondered the same thing and found the answer on the back image:

Screen Shot 2022-08-22 at 12.59.38 PM

Looking forward to reading it

3 Likes

Historical checksums are interesting - do you have other examples than the Numerical Masorah?