Roman Rooms

Screen Shot 2014-03-07 at 09.44.44

Apologies for going somewhat off-topic. I do occasional posts about  memory palaces, not the flashy type beloved of fiction, but doing it properly. They are not posts about speed memorising digits for memory competitions (although they may help) they are posts about holding a massive amount of information in your head and making sure it is useful. They are  aimed at the people who’ve already had an introduction to the field, who’ve found memory techniques useful and want to take them a little further. 

Building on my last memory post, which talked about how we could improve mnemonic training by using lessons learned from computer science, today I’m going to talk about the popular ‘roman room’ technique and show first how it’s equivalent to the one of the older (and now somewhat out of date) structure of a ‘record’ in algorithmic terms.

This is a fairly structured post, and I’m going to the effort using such things as subheadings! Yes, I bet you thought you would never see the day.

The Problem

Let us assume that you are having a meeting with a UK Cabinet Minister.  For the sake of the argument, it is Patrick McLoughlin (chosen using the random number generator at and counting down

You would like to be prepared for the meeting, so in addition to being on top of your notes have a look at his Wikipedia page. You’d like to be able to recall his original constituency, when he entered parliament, the cabinet position, and the name of his spouse.

Using a ‘normal’ method and where it goes wrong

So how are we going to remember those four facts?
We could imagine his lower half as an old steam locomotive (he’s minister for transport), while being ridden by a jockey who keeps smacking him with his whip (because his seat is the ‘Derby’ shire dales).

This is a good example of how imagery (although vital) can be taken too far.  I think that’s a little too easy to misplace stuff, to find yourself only remembering the strangest bit of the image. It’s also breaking a cardinal rule that a link should only go to one place.

How about chaining the links together? Just four items in a row? That’s a lot more resilient and much better in this case, but you have to be careful about the order or you might get confused (in this case, you might be forgiven for remembering that he was Chief Whip with his constituency being in Crewe).

So we might want a more sophisticated structure here. In fact, we’re going to use a Roman Room.

The Roman Room

I’m going to give a brief overview of the roman room process and then I’m going to explain it again in terms of computer science. Then I’m going to show how it generalizes to become much more extensive than normally used by memory people. I should say at this point that the Roman Room version that I learned from an old book some years ago is mildly different from that generally accepted today – Wikipedia, for example, considers it utterly synonymous with the method of loci, which is a touch disappointing.

Setting up a Roman Room

Let’s make some assumptions. First of all I’m going to assume that you have a living room in your house. I’m also going to assume that room has a couch, door, window, and light fitting.

We are going form some quick links between those objects and the categories of  things we are going remember.  So that we think of the coach as being a constituency (because it’s the MP’s seat) the light fitting as being a year (because ‘let there be light’ came first), the TV being the cabinet role (because only cabinet members ever get on telly) and the spouse as linked to the door (because you would *adore* them).

This appears to be unnecessary extra work, but stick with me (to save space my links are very vague – feel free to replace with your own).

Mapping our Roman Room to our Politician

Now we do our real links…

Sitting on the coach in your front room with Chip and Dale, those lovable rescue rangers. If you would like to seal the memory in with the classic theme tune, then be my guest.

What’s unusual about them today is that they are arguing about which one of them is Chip and which one is Dale, and the only way you can tell them apart is because one of them is wearing an Everton football strip, and one is wearing a Liverpool football strip. Which gives us, Derbyshire Dales as the constituency.

Let’s move on to year of entry. Patrick entered parliament in 1986, which makes life easy for us because “86’d” is, of course, an American slang term for throwing something out. I’m happy to pitch the light fitting in the room moving like a snake on a long cable, grabbing random items from around the room and hurling them out in any direction it can. It’s a powerful image and doesn’t need much more work.

Cabinet position: imagine watching footage of an oncoming train, the train gets closer and closer, and suddenly the TV flies apart as a real (but small) train flies into the room.

Patrick’s wife is called Lynn, which makes life very easy for me because my friend Lynn once got trapped in a bathroom for 12 hours because the handle fell of.

That has made life easier. You can retrieve the information pretty quickly and can keep the categories separate in your head. (It would be easy to describe the light fitting as ‘Whip-ing around’ but you aren’t going to think his post is Whip, because you know that light fittings are the entry year).

That’s the Roman Room method as traditionally described.

Generalizing your Roman Room

Your front room isn’t the only one you’ve been in. Your mum and dad have one – also with a door, window, TV and light. So do all of your friends…

This lets us generalize.   We think of Vince Cable in your best friend’ living room, sitting on their sofa which has turned into a giant rugby ball (his constituency is Twickenham) and suddenly what we have is a template that lets us keep going until we run out of rooms or the UK government.

Here comes the [Computer] Science bit – concentrate…

So we’re now looking at a record, in fact I like to think of Roman Room as a template, in fact let’s compare with what Wikipedia says about a Computer Science Record:

In computer sciencerecords (also called tuplesstructs, or compound data)[1][page needed] are among the simplest data structures. A record is a value that contains other values, typically in fixed number and sequence and typically indexed by names. The elements of records are usually called fields or members.

Records are distinguished from arrays by the fact that their number of fields is typically fixed, each field has a name, and that each field may have a different type.

…and in future we can talk about how we can use exactly this technique to also manage to accurately replicate complex structures like trees in our memory structures.

So now should you be able to see why I make a distinction between Roman Room and the method of Loci. The method of loci takes a particular location, or sequence, or journey, and maps it to a set of things. Roman Room is a template that can be applied in many places and lets you link in a more general way.


Johnny Mnemonic walks again: designing your memory properly

Apologies for going somewhat off-topic. I do occasional posts about  memory palaces, not the flashy type beloved of fiction, but doing it properly. They are not posts about speed memorising digits for memory competitions (although they may help) they are posts about holding a massive amount of information in your head and making sure it is useful. They are  aimed at the people who’ve already had an introduction to the field, who’ve found memory techniques useful and want to take them a little further. 

Memory techniques may have been used for hundreds of years, but they have been used by the very few and in comparative isolation. By comparison, the last fifty years of algorithm design have employed millions of programmers and mathematicians, developing the theory, testing the results and proving the pragmatics with incredible intensity.

The purpose of this post was to show the correspondence between the designing data structures for algorithms and memory structures for humans. It’s my ambition over the next few months to produce a series of articles looking at each individual correspondence in detail. In the meantime I highly recommend to anyone interested in mnemonics that they pick up a book on algorithms and data-structures.

Making this ‘information is information’ correspondence has moved my memory practice on in leaps and bounds – there is so much in terms of techniques and approaches that can be transferred practically straight across, and that’s just scratching the surface of the total value of the resource.

Let us consider three fundamental memory structures. (Using the terminology from x because it’s the most accessible, not because it’s the best.

  1. chain
  2. peg
  3. roman room (you probably recognise this as method of loci, I’m using this terminology to make it easy to make a particular distinction later on)

I’ve added in the Wikipedia description to make sure everyone is talking about the same thing.

Now let’s look at the set of operations that you might want to perform.

  1. work though all elements in a set(forwards/backwards)
  2. lookup the, say, 7th element
  3. add an element in the start of the list
  4. delete an element in the middle

Each of the memory structures performs differently with this operations. For example, a chain structure isn’t very good at returning the 17th element on the list, but on the other hand adding elements to the start of either a listing or a roman room is pretty hard.


iterate through all elements Lookup 7th element Add element at start Add element at end add element in middle
chain easy hard easy easy medium
peg easy easy hard easy hard
Roman Room easy medium hard medium hard

In fact, we have a table showing hard/easy for each structures/operation pairing. When you commit anything to memory you are, consciously or not, thinking about the operations you will use on the data and selecting a sensible structure. This is why you may remember stations on a railway line using a chain, but sports championship results using an index of years.

Now let’s look at three genuine algorithmic data structures:

  1. linked list
  2. array
  3. record

(For the uninitiated, a linked list is a set of objects were each one links to the next one in the list – exactly analogous to the chain technique. An array is a structure where integers are mapped to objects – exactly analogous to mapping numbers to objects using the peg method, and a record is a structured collection of labeled pointers to objects – and we’ll discuss the very interesting links between that and the roman room method in a future post)

It turns out that within programming algorithm, data structures are required to do the same operations and their memory counterparts. So let’s look at the hard/easy pairings:

iterate through all elements Lookup 7th element Add element at start Add element at end add element in middle
Linked List easy hard easy easy medium
Array easy easy hard easy hard
Record/Hashmap easy medium hard medium hard

That looks pretty familiar right? It turns out that information is information regardless of medium so there is a very genuine correspondence between the structures. The correspondence goes quite deeply as well: sorting the information in a linked list requires much less hard drive space than an array of the same information (I’m thinking of arrays of big dynamically sized objects in something like java here – c programmers and their arrays of unsigned ints can just let this pass) in the same way that a chaining memory items requires fewer connections than putting the same information in an peg structure.

I’m going to hammer this point home with a passage from Wikipedia about the disadvantages of the chain method

“There are three limitations to the [chain] system. The first is that there is no numerical order imposed when memorizing, hence the practitioner cannot immediately determine the numerical position of an item; this can be solved by bundling numerical markers at set points in the chain or using the peg system instead. The second is that if any of the items is forgotten, the entire list may be in jeopardy. The third is the potential for confusing repeated segments of the list”.

I don’t think many programmers would challenge these as being any different from the disadvantages of a linked list 🙂


Reinventing the memory palace. Everything must stay!

Apologies to regular readers, this post is going to stray a little bit from my normal material, but the recent series of Sherlock reminded me that I wanted to do a blog post on memory palaces, normal service will be resumed shortly, unless, of course, it turns out I like writing about this stuff.

Let’s talk about memory palaces.

First of all – I actively dislike the name, it sounds really quite pretentious – I think ‘memory index’ makes you sound a lot less of an arse if you say it aloud.

Nevertherless, they are incredibly useful structures: not just for making sure that things that are important don’t leak out of your head, but also for things like meditation, insomnia, and, if I’m honest, the pure pleasure of construction.

This post, starts with an illustrative anecdote, then gives a list of arguments for putting together an indexing structure, then it’s going to give an overview of my own approach.

This post is only likely to be interesting to people who already have some experience with memory techniques and who have some experience in storing reasonable amounts of information. I’d encourage everybody else to read the very accessible book by Derren Brown, which, for all it’s flippancy, remains the more engaging introduction to the topic and it’s uses for the casual reader.

I’ve been interested in mnemonics for a long time and about five years ago I took 60 seconds to memorise my shopping list for the day. It went in perfectly, and even years later (I’ve been telling this story for a while) I could, after a mere moment’s hesitation, recite the list.

Having memorised the list of items I went off to town, had a wander around , picked up a few items, and came home. I didn’t pick up anything on my memorised list because I’d forgotten I had one. *sigh*

This wasn’t an isolated incident. More than once I’ve though ‘that would be a useful thing to memorise’ only to twig that I already had – I’d just not noticed at a time it would have been useful.

Clearly, this is not optimal. So I sat down and wrote down the list of the things that I’d memorised over the years – and found the list surprisingly long and full of things that would have been useful at some point.

After a little while of looking at the list, it occurred to me – I was pretty good at memorising lists. I could memorise this list. An index of memory…

It turns out that there are a bunch of sensible reasons for doing this:

  • No wasted effort: nothing gets put into your brain that is already there, and nothing gets added and left unused.
  • Confidence: if you’ve been doing this for a while you find that there is a lot more in your head than you ever thought, being able to rattle off the contents of the list becomes a bit annoying because it takes so long.
  • Maintenance: anyone who has played with mnemonics knows that they need to be run though occasionally because over time links do break and need to be refreshed.
  • Sleeping: tried counting sheep? Turns out that peacefully working your way though your whole index is a really good mix of mediation and visualisation. I very rarely get more than 30 or so links in.

My memory index has 25-30 entries in it, of varying lengths. I’m going to take you though the first few as an example of a structure.

First of all, you’ll need something to map to for your index. If you want to be traditional and have a true ‘memory palace’ then you can use a physical location, or you can use any sequence you know well enough. In my case I used the periodic table as my base sequence. It has everything I need: I know it well (it was one of the first things I memorised) and it has an implicit order. So my first few items are:

  1. Hydrogen. The poem If, by Kipling.
  2. Helium. The set of 53 reserved words in the Java Programming Language.
  3. Lithium. A list of friends a the gifts they gave me in order. This grows a lot.
  4. Beryllium. A list of quotations and references to things like Shakespeare and the odd holy book.
  5. Boron. A list of algorithms related to solving the rubiks cube (I’ll be honest, this hasn’t been used in years, and I suspect is full of holes…)
  6. Carbon – My National Insurance Number.
  7. Nitrogen
  8. Oxygen – I bound these two together (because laughing gas was too good an image to miss) and it matches the list of 15 Rugby Union positions.
  9. Fluoride – My bank details – sort codes account numbers, expiry dates and the long number on the front of the cards. Very useful, particularly if you lose your wallet occasionally.

That’s the first nine, the rest of the index contains such things as star signs, lists of the first 11 US presidents, stations on three or four of the London Underground lines, and so on and so forth. I doubt many of them will ever be useful again (and things like the list of gifts isn’t meant to be useful, it’s meant to be enjoyable to work though when you are sitting the back of a Taxi or stuck in a accounting presentation), but I think it’s worth having an index to make sure that you don’t forget the things that you went to some effort to remember.

Something that may seem odd, is that I also have the information printed out. It’s more a motivational thing than anything else – one day I sat down and typed out every bit of information that was reachable from the index. It’s astonishing to see it all written out. Even with small fonts, many columns and the more dense text I could barely fit it on a half dozen pages. And looking at it all laid out it really quite motivating.


(Page image from wikicommons)

Book recommendation: Tricks of the mind

One year after I wrote this post,  I updated it significantly here.

Trick of the mind is getting on for six years old now, and despite it’s somewhat disconnected themes, I’d like to recommend it on the strenght of the memory section alone. It really is an excellent introduction to the power, and the methods, of using one’s memory properly.

Mr Brown spends some time on the major method of remembering numbers and, mildly unhelpfully doesn’t use the ‘standard’ set of translations. A little while ago I wrote a python script to translate numbers to words using the Derren Brown encoding and I thought I’d put it on the internet in case anyone else would like a go.

Numbers to letters using Derren Brown’s encoding.

The amazon link is below – feel free to follow 🙂