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

Okeedoky its a dual-book project now.

Officially decided to take the plunge and memorize Data Structures the Fun Way by Jeremy Kubica.

I’ll be following a similar process to Concepts of Programming Languages, so we’ll see what similarities and differences in scenery and organizational choices I make between the two books.

For Data Structures the Fun Way I’ll start by memorizing the Table of Contents.

I did this with Sebesta’s Concepts of Programming Languages as well.

I like to memorize the Primary Index (in both cases here it’s the Table of Contents) as a separate entity. It gets its own special little reference palace.

Essentially a form of “abstracting”, I suppose.

By keeping a reference index, I “decouple” the palace requirements of the index from the content’s palace requirements.

Or, in other words, if I memorize the Table of Contents, I don’t have to worry about putting together a giant memory palace and then changing it up later when I realize I need more space in some places and less in others.

I just have my Index, and piece by piece I can add additional memory palaces as needed for each section, and I can get very specific about my palace requirements when it matters most: when its time to actually memorize.

For Sebesta’s Concepts book, I memorized the ToC on my fingers and thumbs (not the first palace to use my hands with, I also do binary and subnetting using palaces on my hands).

For Kubica’s Data Structures ToC, I decided to heck with it I’ll use my toes. :foot::face_with_monocle:
-I havent memorized it yet, I’ll probably start when I’m done with this post.

The other decision I made for Sebesta’s Concepts is to aggregate the palaces more-or-less in Denton, Texas. A town I know well enough, have plenty of memories in, and still visit on a fairly regular basis.

So, just to get started I memorized all the sections (and subsections and subsubsections) of Chapter 6: Data Structures (in Sebesta’s Concepts of Programming Languages) in a semi-loosey-goosey palace around the courthouse. If you’ve been to Denton, you know the square.

Again, one of the perks of abstracting the Primary Index (the Table of Contents in the case of both of these books) is I can pick and choose any order I want to memorize chapters, as I did here, without worrying about space requirements for all the palaces.

I haven’t selected a primary theme/location to aggregate Kubica’s DStFW yet (like I chose Denton for Sebesta’s Concepts), but golly there’s no need to put the cart before the horse. First I knock out the ToC. The rest will follow.

There are some cool constructs I used for sections and subsections, but I’m sleepy so I’ll cover them later. I’m using one of my favorite techniques, though, which is using shapes as mini-indexes.

How many sides does a shape have? That’s how many items (aka sections) are nested under a given topic. At least that’s one way I like to do it.

For instance, sometimes there’s a nice hexing pentagram/pentagon happening to summon some awful hellspawn like the devil or <insert your favorite politician to despise here>. I instantly know there are 5 items (or sections) contained within whatever imagery is doing the conjuring.

1 item for each side of the pentagram/pentagon.

Triangular shapes represent 3 items, as another example.

Chapter 6’s section titled: Associative Arrays, has 2 subsections.
Each subsection is an opposing team on a Volleyball court (set up impromptu at the Denton Square, at that! Party on!).

To be clear, the fact that there are only 2 “sides” (1 side per team) on a volleyball court is what clarifies how many sections there are. A quickNeasy “checksum” of sorts.

More later,
Beau

2 Likes

How many places have you been with just one (or both) of your parents?

What about a best friend?

Were they all similar places? How different were all those places?

This is the glue in mnemonic indexing.

People in different places/contexts allowing you to remember entirely different “datasets.”

How many different plot lines can you recall that had Tom Hanks in them? What about Arnold Schwarzenegger? Meryl Streep? Jeff Bridges? Ed Norton? Brad Pitt?

Each movie a different cast of characters, motivations, plot points, visuals, scenes and settings, etc.

Think of just one of these people and you’re running through a mental index.

1 Like

How to celebrate… umm… mnemonic milestones?

Because I feel like I’m about to hit one. Hmm.

I’ve been thinking a lot about the fact that December will mark the anniversary of when I memorized huge chunks of Python’s documentation, largely by taking walks around my town and encoding the documentation along the various routes.

In fact, it’s pretty much all laid out on one really long winding and weaving walk that starts nearby my house and goes into and all around downtown.

I only coded my first “Hello World” last year in June, in Python.

Tonight I’ve been falling asleep munching on crackers and reading:

  • a few chapters of Beej’s Guide to Socket Programming in C, and
  • Sebesta’s chapter on Statement-Level Control Structures.
    • I’ve been thinking a lot about how to use command-line flags as an intuitive sort of “help” documentation, (partially as a result of months of nigh-daily tweaking of a growing eco-system Bitburner automation scripts I continue to fiddle with)…
      • after this much fiddling, I’ve gotten in the habit of providing myself helpful documentation on the fly, during most sessions. And pairing functionality and documentation with flags has been a bit of a life-saver… in a lighthearted manner of speaking…
    • Spending so much time with command-line flags and such has had me mulling over switch case statements… and a growing curiosity for control statements that don’t so much branch, but allow multiple selectors.

So, that’s partially where my head is at tonight. But I’m also marveling a bit (I think this is fair and healthy to do, y’all) at the progress I’ve made in… a year and a half? A little less perhaps.

I feel like I should celebrate (come December).

But how?

I’m also, as of this past weekend, a Black Belt candidate.
No need to get too excited, an official Black Belt is probably around 2 years away. But it’s also an accomplishment of memory, as I specifically joined the martial art almost 3 years ago with the intention of integrating memory palaces and mnemonics in my learning process. And, as my instructor’s often note and chuckle about, even though I get worn out and exhausted, I “always know” my material when testing time comes around.

I memorize all forms and all techniques using mnemonics. And it’s made “remembering” all the different aspects of the martial art so very fun and (to some degree) easy.

I feel like I’m about to hit a little milestone, come December.

…anyone got ideas for celebrating a “mnemonic milestone”?

2 Likes

Also been working to establish a unified metadata system for my notes, projects, and mnemonic schemes—that I can basically “leaderKey”-automate my entire workflow with in neovim.

Started diving into Neorg some days ago.

Looks like it’s the direction I’ll take.

The metadata will, in particular, help me to clarify my thoughts on using “controlled vocabularies” in my memory palace/mnemonic systems.

Controlled vocabularies, imo, are an essential aspect of long-term mnemonic palaces that traverse topical depth.

Implementation of controlled vocabularies is key in knowledge organization systems that go deep (as opposed to wide). I know that I have rules about my own controlled “mnemonic” vocabularies, but I don’t think I’ve recorded anything about it.

2 Likes

What do you mean by controlled vocabularies?

1 Like

It’s a term used in the information sciences!

Worth a look, considering mnemonists who memorize topical material (as opposed to randomized information for competitions and such) are imo essentially mnemonic information architects.

What are taxonomies and controlled vocabularies?

Sometimes used interchangeably, taxonomies and controlled vocabularies are controlled lists of terms used to organize information. A controlled vocabulary is “an organized arrangement of words and phrases used to index content and/or to retrieve content through browsing and searching.” (Harpring).
University of Pittsburgh Library System

By a mnemonic controlled vocabulary, I’m referring to the organized arrangement of mnemonic devices used to index and/or retrieve content through browsing and searching.

1 Like

When I for a brief while switched from vim to emacs, I remember trying to port everything I did to elisp. Back to vim now, though I do check out other editors every few years.

I don’t know what you have in mind, but a suggestion based on the modularity of the Unix/Linux spirit…

You could go far with editing text files without tweaking vim shortcuts or making purpose-specefic tweaks. Fill in the blanks with shell scripts and your editor can focus on being an editor.

Have a mono repo backed with git and organize it based on files and folder hierarchy that sorts your purpose.

There are also tools for Todo list management that are great on the cli.

Let me know if you want to know more about my setup as we use similar tech stacks.

1 Like

I’m all ears. I’d appreciate you sharing more about your stack.

One aspect I’m working towards is minimizing any computer interactions outside of my editor.

The more I can stay in the cli and out of gui applications like web browsers, (and away from mice) the better.

It’s easy for me to focus when its a terminal —And even easier to get distracted when there are pictures and ads and such. :upside_down_face:

Thanks :pray:

Another routine I’ve established and continue to find beneficial:

During those long drives I must be fond of mentioning, I listen to the audio of tutorials I’ve previously watched.

Some video tutorials are worth reviewing.

Whenever that’s the case, by listening to the audio I find myself using my imagination to fill in/remember the video content. Like listening to only one side of a phone conversation, I’m naturally inclined to fill in the gaps.

I pair this with light memorization of key concepts and takeaways.

I find it very helpful with code and technical materials.

I’m really sorry if I’m talking down to you, I got lazy thinking about how to word things socially.

CLI philosophy is one where separation of concerns rules supreme and plain text is the lingua franca/common tongue. Unix like operating systems are composed of small purpose specific utilities that when weeved together create something beautiful.

I will give an example…

When you start taking notes in markdown, you don’t need to add to vim any note taking extensions to get searching, sorting, and easy access. Name your directories yyyy/mm/dd/ for faster access to a specific day’s notes! Use hashtags to store categories in your markdown notes, then live grep for them in vim! Add a cron to create the next day’s notes directory. git init and suddenly there’s versioning! Want to know stats on your note taking tendencies or words written? Write a Python script that lives at the root.

In my case the above was for a book, not note taking, but was very similar to what I’m describing.

Vim is meant first and foremost for text editing. YOU are the centralized launcher.

I run i3wm for a window manager
Tmux for a terminal multiplexer
NeoVim as an editor, using the Kickstarter config as a base (wish I knew about this sooner).

I forget what I’m using for a terminal emulator - I finally landed on what I liked enough to stick with but it was recent.

Everything else is just small purpose specific tools, built by me or someone else. With the exception of my browsers, but that’s a whole other discussion. (w3m is what I use on the command line, but there’s probably something better).

1 Like

I like that. Some of that I know but there’s a few things you mentioned that I’ll look into.

I haven’t used w3m. I’ve used Lynx before.

Wezterm is my terminal emulator (written in Rust and can use on all my different operating systems).

I thought to use markdown originally, but I looked into other options too because I have ideas about organizing my memory palaces as Vectors (and some other odd ideas) so I ended up at an implementation of Org mode (emacs) but for neovim (hence Neorg) to make the note taking a little more extensible.

I need to play around more with cron, git versioning, and writing scripts for handy analytics! I like that idea!

1 Like

Yeah, you can go a long way with combining the standard set of utilities. wc for example can count words (and characters and lines), but combine that with diff (shows the difference between two files) and grep (filter text) and sed or tr (replace or eliminate characters) and git (versioning) and suddenly you can script calculating how many additional words you’ve written in a sitting when trying to reach writing goals. Add in expr and variable substitutions and you can write a shell script how many more words you should write in that sitting!

Big suggestion, learn vim and its configuration conceptually. I really wish I had done this 15 years ago. Often you can’t Google for answers to specific problems, so conceptual understanding is required to prevent lots of guess and check. I don’t think you are the audience that needs this advice though!

Same with shell scripting (e.g. bash).

2 Likes

Here’s a quick example of an odd skill unintentionally and “organically” developing from my mnemonics for binary (psst, I do them on my fingers):

I realized recently that I can approximate RGB hex color values.

Handy to not necessarily need a color picker on screen, but very much unintentional.

I won’t be putting it on my resume…

…but I suppose its a fun way to get to know the colors of the rainbow a little better. :stuck_out_tongue_winking_eye:

1 Like

I just tried setting up Wezterm, following this video. Looks good so far.

Edit: that’s a great YouTube channel. There are more videos about tmux and other things.

1 Like

Yeah thats a good video. Just watched it.

A nice bonus that the terminal emulator and IDE are both configured with Lua.

I keep about 2 dozen color schemes commented out in my config.

Since Wezterm auto reloads the config file, I’m always only a keytap away from keeping my eyes jovial. :stuck_out_tongue_winking_eye:

I havent tried Wezterms multiplexing capabilities yet, but I’m curious. It is a fast terminal emulator.

1 Like

Relevant to this journal:
Developing thoughts on “Pseudo-code Palaces” (ie Memory Palaces as Pseudo-code):

Source comment: Pseudo-code Palaces comment
Source Thread: Replacing all 2 digit images of an old system with random obstacles
—by @erikfromholland

Also relevant, imo:
Establishing a framework for studying laws: An ongoing struggle
—a very good post by @turducken

1 Like

Dan Grossman has a great 5 concept breakdown for learning programming languages.

I’m slowly working through his Coursera Programming Languages course (hat tip to @Josh for mentioning it on the forum).

His 5 concepts are:

  • Syntax
    “How to write it.”

  • Semantics
    “How are things evaluated?”

  • Idioms
    “Language specific patterns.”

  • Libraries
    “Standard additions to the language.”

  • Tools (technically not “part” of a language)
    “Formatters, REPLs, debuggers, etc.”

With all the language constructs I’ve consumed so far, I dig these 5 concepts. I think they’re spot on, and I intend to use them as a foundational model for additional programming languages moving forward.

2 Likes

Read this from start to finish. Amazing thread and discussion even though I did not understand all of it. :grinning:

2 Likes

Wow, thank you for the compliment @Rollo :pray:

That’s a lot to read! :innocent: I hope you play around and experiment (and then share on the forum too!) with some of the seemingly endless techniques!

If you log some of your experiments in a forum “journal” of your own I’ll definitely be reading it!

Regards,
Beau

1 Like

Just bumped into this gem of a post I hadn’t seen yet:

1 Like