Beau's Journal: Cyber Mnemonics. Syntax, Structure, and stuff

Translated into what a professional actor hears:

Memorizing the script is impressive, but I still think incredible performances rely on practice.

To which, the confused actor replies:

And how would having to constantly stop and check my script while I practice make that process easier?

A great point! And one in which I have thoughts, too!

First, I think it would have the effect of increasing comprehension and ideas for solutions. And I would never discourage anyone from doing it.

  • The trouble: It’s also likely we might end up memorizing the same solutions multiple times (if we do this for multiple libraries, or poorly designed libraries). That’s a little wasteful of our mental faculties, methinks.

Currently, though, I’m in the process of designing memory palaces to come to a similar outcome.

One palace is a palace of Object Oriented Design principles.
Like SOLID:

  • S = The Single Responsibility Principle
  • O = The Open-Closed Principle
  • L = The Liskov Substitution Principle
  • I = The Interface Segregation Principle
  • D = The Dependency Inversion Principle

There are other programming principles (and paradigms) too.

By memorizing the principles, we don’t need to repeat memorize specific code, and instead just memorize each principle and perhaps a couple examples to illustrate the concept.

Another palace I’m building is for Design Patterns.

  • These are conceptual “templates” of tried and tested solutions to commonly encountered programming design problems.

There aren’t that many of them.
Less than 30.

The same idea applies, learn the Design Pattern, then a couple illustrative examples.

A final idea that unlike the ones I just mentioned I haven’t started (yet), but I may be building up to:

  • Memorizing the same block of code (or program) in multiple languages.

Part of the reason I’m working through Robert Sebesta’s Concepts of Programming textbook is to (as usual) reduce redundancy in memorizing.

Memorizing the same thing more than once lays the groundwork for confusion.

So, the essence of my thoughts boils down to:
To increase creative problem solving PLUS comprehension (while reducing redundancy), identify and memorize principles and their examples.

At least, that’s where I’m at so far with this. :stuck_out_tongue:

Thoughts?

1 Like

By your logic does it mean if actors can master memorising scripts, they can perform incredible performance?

You’re not asking me, but the inverse is clearly true:

if an actor can’t master memorising a script, how can they perform incredible performance?

1 Like

Pattern languages are less prevalent these days, but in specific domains they can be super powerful.

When I used to be an enterprise integration specialist this pattern language was invaluable.

1 Like

That’s not my logic.

And I’m genuinely confused about your original comment.

I don’t understand the point of stating the obvious. Isn’t it obvious?

I’m in my late 30s so forgive me if I’m being a bit beligerante but:

How is that not obvious?

And my logic, since it seems to be misunderstood is: HOW would NOT memorizing your lines HELP an actor to give a great performance?

Are you recommending actors avoid memorizing lines? And if so, for what benefit?

Anyone can memorize stuff. Memorizing things does not make you good at what you memorized.

That’s obvious. How is that not obvious? Why are you in this thread?

1 Like

Please teach me how you have memorized python. I want to do it too. What are some of you images that you used?

I found this today,

1 Like

That’s a handy cheat sheet!

What’s your experience with using memory palaces and mnemonics if I may ask?

The techniques aren’t super complicated.

At the end of the day, a list of commands is a list of words. When it comes to Syntax, you only need to memorize the rules (which is just memorizing a set (or sets) of instructions.

When it comes to design, you only need to memorize the basic rules and terms for object oriented programming.

If you’d like specific examples, I’d rather not do a whole cheat sheet (I’m typing with my thumbs).

Instead, if you pick a small handful of topics or terms or something you find challenging, I’ll share what I’ve done!

Regards,
Beau

I managed to memorize to memorize all 70 built ins alphabetically. I used a separate palace for each letter. How did you memorize rules? To memorize all 70 I used the sound alike method.

2 Likes

Great work!

I also memorized most functions by sound-alike.

I structured the order of my functions by “functionality”—and then quasi-alphabetically, but it took me a whole day to figure that out (i.e., categorize the functions) since I hadn’t previously programmed (before learning Python). I literally spent half of a day going back and forth between ChatGPT and the Python documentation.

Python Builtin Functions by Category.csv (5.0 KB)

Here’s what I did for rules (it was a lot of work, and I would happily do it again):

  1. I pulled up Python’s Standard Library Reference :backhand_index_pointing_left:
  2. then I made a gigantic memory palace and assigned areas for the sections:
  3. I then assigned sub-areas for each of the sections in the Built-In Types:

4 . For Exceptions I just memorized the Exception hierarchy

  • I placed the hierarchy on multiple sides of our town’s Courthouse (the outside of it, I mean). The top of the hierarchy starts at the top of the multi-storied courthouse and the subclasses of the different Exception groups run down the sides of the building. I found this pretty easy. I did it in an afternoon or two.
    • note: I’m not a particularly speedy mnemonist, just a persistent one.
  1. Once I got the structure down (not perfectly, just down), I started going through the docs and picking sections to start memorizing from based on either what i was curious about, or whatever seemed like a good next step.

  2. Rather than memorize a whole section at one time, I usually added details to multiple sections in the same day, and as the days went by and my recollection of the material strengthened, and bit by bit I continued to add details to various sections, pretty quickly the palace began filling out both in terms of breadth and depth.

Note:

I personally did a few things differently than listed above (just do whatever you think will be most useful to you):

  1. I memorized the Exceptions hierarchy somewhat later into this whole process, not near the beginning, but it’s been very handy to have memorized and didn’t take very much time. Doing it early has benefits.
  2. I memorized the entire top-level structure of the Standard Library Reference right at the start (this was all sort of an experiment in a way, you know?) see below
  3. I memorized all module (i.e., “library”) names up until the Concurrent Execution modules.
  4. I hand-picked some modules to start adding to and filling out as well somewhat early on.

For reference, that top-level hierarchy looks like this:

Final note:

My process has been trial and error since I don’t know anyone who’s memorized programming documentation (I like looked, boy did I look) plus I’m new to programming.

I haven’t even been programming a year. :downcast_face_with_sweat:

Part of the reason I’m working through Robert Sebesta’s Textbook Concepts of Programming Languages is to help me refine and clarify my process so I don’t have to unnecessarily memorize the same things for other programming languages.

  • Redundancy is good in network engineering but not so good in both programming and mnemonics because it creates clutter and a lively breeding ground for our two great nemeses: Confusion and Errors.

edit: i keep fixing typos

1 Like

wow! incredible. that books looks daunting and very historical. ill leave you to that. it reminds me of my first class on tech. my teacher was Chinese and couldn’t speak English and here we were looking at old computer components. i played Texas holdem all class long.

i really enjoyed memorizing the commands. now I’m looking to bridge the gap between having them memorized and being able to think understandingly like a programmer about there use. that way i can begin to see projects forming in my mind. in the end everything i do is to learn how to break stuff and rebuild it better. haha i really like your system. well done!

If you want a test there are python certs you can go for. PCAP PCEP. There are practice tests on Udemy. It’s really fun!

I had a thought just now. You say redundancy in mnemonics is not advisable. I think that untrue bc by nature of memory we need associations. If I come to the point where my sound alike objects are representative in many memory palace of a different categorical or functional nature it could benefit having a very deep understanding. Idk just a thought.

Ai theme for my memory palace

2 Likes

I love that you memorized the 70 functions! You’ll find it extremely helpful!

If you’re interested, :wink: go ahead and memorize:

  • The 11 methods for the list function: list()
  • The 11 methods for the dict function: dict()
  • The 47 built-in methods for the string function: str()
    • Once the str() methods are memorized, 46 of the 47 bytes function methods: bytes(), are also memorized. They’re the same. The only difference is the .encode() and .decode() methods.

Those plus the 70 built in functions are pretty much the first things I memorized, and I have never regretted it.

It’s just under 200 commands in total (under 250 if you count bytes() and str() methods separately, and encapsulates almost the entire suite of functionality of Python without using the import statement to utilize other modules.

A worthy investment if you plan to do Python programming for a while. :stuck_out_tongue:

Let me know how your studies go with Python!


p.s., I can’t argue about whether redundancy in mnemonics is advisable or not for other people, I suppose. But after doing all this memorization, I find that every time I reuse an image in the same domain to refer to something, it takes longer to find the “main” image I created to tell me about the information.

  • This is probably because each function and method also may have a variety (or several varieties) of arguments they can take. The range function takes either ‘stop’ : range(stop) or it can take start, stop, and an optional step : range(start, stop, step=1).
    The open() function takes 8 arguments in total:
    open(file, mode='r', buffer=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

The deeper I go into the mechanics of these functions and methods, the harder it is to pack all that information comfortably in one space without causing myself a little confusion. The open() function deserves its own palace almost, but I don’t want to memorize the same information more than once. A reference to it, yes, but I don’t, for instance, want to memorize all 8 arguments of the open() function in different palaces.

There may, however, be a time when I need to know the 8 arguments.
If I use the exact same image for open() that I do for the main open() function palace, that’s okay…
…But if I put the same mnemonic image of open() in 10 different palaces… because it’s very possible in programming documentation to need to reference open() a lot… then when I need to query my mind for the nitty-gritty details of open(), I have only a one in 10 chance of landing on the right image.

It’s better than that, actually, because the associations are strong, but the longer I use the palace and the more I reuse an image, even if I have excellent mnemonic skills, the more “wrong turns” I might take when I’m trying to remember where oh where did I put those 8 arguments?

In that situation I’m trying to get specific information that, either I must rememorize every time I use the my image for open() – or I have to make sure I’m recalling the correct similar image from one of N number of palaces.

Okay, that’s my post-script.

My post-script was essentially an unsolicited main-script.

:stuck_out_tongue:

Regards,
Beau

2 Likes

Thank you for this, I find it quite inspiring!

I might do something similar, and maybe build some programs related to this in Python simultaneously.

1 Like

This is beautifully put, and I think it can be extended to any field in which you need to be creative, including STEM.

Looking up documentation is relying on juggling things in working memory which typically never takes up permanent residence in your brain. Meanwhile if you have something deeply embedded in a memory palace, you awaken a rich set of connections, that get embedded deeper and more richly each time.

The potential for creativity grows each time you revisit the concept.

3 Likes

@DeliberateDopamine:

Yes.

1 Like

Alright you inspired me Beau! I’m planning to start a first miniproject of memorizing Python documentation.

Going to be reading up a bit here to get a sense of the outline, then I’ll try to set up my scaffolding. Down the line I’m also planning to get into some of the packages useful for data visualization and statistics such as matplotlib, seaborn, and pandas.

2 Likes

Well I look forward to learning about your experience, @DeliberateDopamine!

My inclination is there are innumerable ways to skin this cat, and I’m very curious to see how you end up doing it.

2 Likes

i spent the week reading network + and security + books. the weekend is when i dabble with python, particularly django. ive always wanted to create my own website. to say the least ive been holding off on retreiving my memories of python until the weekend. i only missed object() and slice() and sorted(). some corrections in the s category were needed. needed more memorable images. im so far ahead of myself. This pythonista is hoping to memorize django too. but first these 70 and there operability should be the foundation. i bought a dusty phillips oop book from 2001 unknowing that theres a newer one from 2021 with two authors, but im sure it will help me in my journey anyway. @DeliberateDopamine looking forward to hearing about your results.

@beau2am whats next on your agenda?

Edit: I just counted all the built ins for Linux and its 70 too :slight_smile:

That’s just begging to be memorized.

3 Likes

Okay, so I took a lot of inspiration from your posts, because your system seems well-thought out, and it seemed like the best way to initialize, and then I’ll look for opportunities to personalize it as I gain more experience.

I started with built-in functions, and now have them in an enumerated sequence. I also added a few items more, and plan to see how much I can get done today.

Another thing I thought about was how I might go about memorizing key parts of Python programs I am building, or whether that is too variable to be useful? Maybe some sort of ad hoc encoding by taking the functions and key sections of the program in sequence, to faciliate reflection and creative thought even when away from the computer (a point I resonate with you on, as I enjoy thinking while going for walks or running).

I thought it might be fun to incorporate concepts or themes from the programs I am looking to build (some of which relate to memory techniques), while learning the documentation. I’m going to experiment and see whether I find it fun, or whether it disrupts the flow of the documentation. I’ve often found that things that are too variable, end up becoming a hazzle to add to memory palaces, especially if they end up redundant.

I also tried some experiments with using ChatGPT + GenAI to add some fun creative twists, to make it more fun and dopaminergic!

One thing I also thought about was using the OpenAI ChatGPT / Dalle- APIs to autogenerate certain Anki flashcards related to the keywords (which I have in an excel sheet), and perhaps add some absurd images that anthropomorphize the concepts.

But I’m getting ahead of myself! Would like to get your input, as I am bristling with excitement, but lacking in experience :blush:

1 Like

Curios to hear how it goes for you too Josh! It sounds like you have more programming knowledge than I do. I’m hoping to start diving into all kinds of Python resources soon. I’m intending for these memorized concepts to serve as the scaffolding for this learning journey.