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

I suppose that makes sense, although in a practical context I also have a desire to anchor that to the specific functions that interact in a given program of mine to make the implications especially obvious.

2 Likes

Okay @beau2am I got to Data Persistence, and there I began to wonder how applicable all the sub categories would be for me. So I decided to just take all the top categories in sequence, so I can have that for structuring my reading of the Python documentation, and then I add subsections afterwards in keeping with the original sequencing to some extent.

Also due to my enumeration system and grouping of concepts, I sometimes have empty slots where I try to add questions related to how each of these might apply to the Python programs I am trying to build.

In general I’m finding it quite fun, and I am looking forward to get into the methods(?) of list, str, etc.

2 Likes

I’ve wanted to give a proper response but haven’t made the time.

I’m delighted by all that I’ve read.

I’m particularly excited to see how each of us differs in our approaches.

I hope to give a fuller response at some point (though I might not).

@Jmatlack
I love what you’ve done. The Dusty Philips book is fantastic.

I need to check out the linux commands.

I’ve been slowly building a collection of palaces for BASH documentation.

My main agenda lately has consisted of learning logic gates (AND, OR, NOT, XOR, NAND, etc) and formal logic. I’m expanding my understanding of electrical circuits.

I’m pretty darn psyched about creating a DIY little home electronics lab for myself, too.

I’m also memorizing other things. I may start a third journal to document the miscellaneous things I’m memorizing.

I started on the sign language alphabet recently. But instead of memorizing them in alphabetical order, I order them using my letter frequency palace.

E T A O I N S R H L etc etc

2 Likes

Related resources:

1 Like

I officially began coding on April 23, 2023.

I began doing multiple tutorials almost daily starting about June of 2023.

In December of 2023, inspired by Dr. Anthony Metivier’s interview with Anastasia Woolmer, I began memorizing Python documentation (among other things, like networking concepts).

This week I’ve begun memorizing from Data Structures the Fun Way by Jeremey Kubica.

  • This has been my favorite programming related read so far. Probably because the humor is at least as dry as the subject matter. Strong analogies for understanding explained in a way that makes a fella giggle.

The reason for learning this subject is I have it on good authority (imo) that knowing Data Structures (and by extension, algorithms) intimately allows one to pretty much solve most code related challenges/puzzles.

Well, I figure, why delay the inevitable?
I memorized about a third of the complete table of contents yesterday while I drove for some-odd hours.

I’ve also checked out the new Computer Architecture by Charles Fox from the library to go deep on low-level architectures, logic-gates and integrated circuits.

I’ve made a little DIY home electronics lab which I’ll expand but mostly consists of things scavenged from decades of holding onto electronics. It’s nice to see that excellent and healthy habit finally paying off.

Ah, I’m disappointed I can’t respond to rhetoric (come back to us!).

The Elements of Computing Systems book he shared looks incredible.

I’ve been doing some very basic coding challenges in the C programming language as well.

– Speed Bumps –

I detoured at the Concepts of Programming Languages (chapter 3) that I was working through in order to have a firmer grasp on formal logic. Abstract Syntax Trees just seem like the kinda thing that really ought to have that as a strong foundation. I was starting to get a little cross-eyed making sense of things as they grew more complex.

– Family Code Time –

In probably the most personally rewarding turn of events, my son (pre-teen) has been doing Python coding tutorials in my office with me on some weekends. I work on my projects, he codes. Over the past two weekends I’ve had him, he’s coded both Snake (using tkinter) and on Saturday he coded Pong (using turtle). And he made his own background soundtrack (which is a very chaotic and eery ostinato-vibe that really does the trick, I’d say).

So, coding has become a great bonding point as this year has progressed.

I’m feeling quite appreciative of that.

1 Like

Been meaning to do an update.

Mostly because I’ve been experimenting with purely imaginary palaces while I learn data structures.

To hold all the various content of pseudocode, I’ve been creating custom palaces.

This way architecture can be included in encoding meaning.

For regular non-nested declarative statements, I’ve been using straight walls.

For if conditionals I use curved areas, and also slides (more curves). Playing on the whole “branching” idea behind conditionals.

For a while loop in my LinkedListInsert() functionality, I use a ferris wheel (wheel=while).

I’m maybe a month into these imaginary palaces. The cons so far that I see are that they take a lot of energy to develop (ie, it’s a little slow going).

The pros are flexibility and customization.

Anyway, this isn’t a full post on the idea, just something to quickly record a bit of something I’m playing with.


edit:
I’ll add that part of the idea of utilizing architecture for encoding stems from my recently reviewing my copy of Douglas Hoff’s superbly researched “Memory Techniques”.

In particular really pondering the SEA-IT data types and where I might extend my own techniques with those explicit data types in mind.

I’ve already told you @thinkaboutthebible , but I’ll say it again: you write a good book. :pray:

2 Likes

What do you mean by purely imaginary, not existing in any other space apart from your mind?

1 Like

Yep. Totally made up. I might stick an occasional “real world” object or space into the palace, but for the most part it’s just a made up world like a child might make.

1 Like

I really like that. Not only does a Ferris wheel sound like while, it does a good job representing it. The wheel itself loops around, and will continue to do so while it’s conditions are true (Paying customers have time remaining).

1 Like

I finally got through the documentation, and feel I have learned a huge amount already, and there is something enjoyable about doing coding exercise challenges and just having these creative breakthroughs pop into mind.

I am wondering what other applications memory techniques might have for programming, and especially Python.

I am trying to figure out what the minimum amount of systematization and memory techniques I need to be able to go through my programs line by line, or at least function by function in my mind’s eye.

I’d say the ability to obsess about your programs any time any where, is quite the superpower.

1 Like

Yes!

Finally I can die happy because one other person has experienced the bizarre joy of “OH THATS HOW THAT WORKS” but over and over and over as you code. :stuck_out_tongue:

Seriously, though. Yes.

This is a very interesting question.

So far, as with most things in coding, memorization or any conceptually dense material, I suspect there is a lot of room for detective work in the area of abstraction.

For instance (no pun intended), I have some code memorized verbatim.
But, it’s pseudocode.

I want my recipe book to be applicable to multiple programming languages since that’s how I plan to cook.

One big difference in languages is syntax (eg, what the semi-colon does, what the colon is for, how to define a function, how to signify nested block of code or how to signify the conditions for loop).

All those rules are memorizable separately. They’re grammar rules (context-free grammar for those interested in that sorta thing).

One way I’ve played around with is viewing the code via its hierarchy.

The “top-level” contains everything nested… in the very top level. So if I’m memorizing a function, I memorize the function and arguments it takes almost like a Title or reference information.

Then comes the code.

Every now and then code begets other code

  • ie, a code-block inside the first code-block
  • ie, a nested code block
  • ie, code-block-ception
def some_function(arg1, arg2):
    some_variable = some_code_being_assigned_to_some_variable
    while some_conditon:
        begin_codeBlockception()
    oh_look_un_nested_code_running_when_condition_is_FALSE

The WHILE loop, FOR loop, or IF loop :curly_loop: all branch off from the main code.

What we have here is a Choose Your Own Adventure style branching mechanism (sorta).

What happens when we go that way to Grandmother’s house?

if travel_to(grandmas_house):
    print("My what big teeth you have.")
elif pigs.count() == 3:
    for pig in pigs:
        pig.build_house()
else:
    print("No I already read you a story go to bed.")

In this way code memorization shares a lot of similarity to other hierarchical memorization strategies, e.g.:

  • books[sections/chapters/paragraphs]
  • government[states/counties/cities/districts]
  • government bureaucracy[disgruntled clerical person/disgruntled program manager/disgruntled department head/very pleased contractor with “good respectable friends”])

In this way it almost seems too familiar of a memorization process. Fun to play around with.

Thoughts?

2 Likes

Sometimes falling asleep is difficult.

I typically try to “give the dog a bone to chew on”, and by dog I mean my brain.

I think my new bedtime routine is listening to programming audiobooks.

“print, open parentheses, F, quote marks, some, space, text, space, open curly braces, variable, colon, less than sign, seven, closed curly braces, period, quote marks, end parentheses”

4 Likes

I’ve also found audiobooks to be extremely useful for falling asleep, although I have been trying to see if I can traverse my memory palaces while falling asleep, as I am convinced that would be a supremely powerful learning tool. Both in terms of priming recall and consolidation, but also in terms of traversing different brain states that allows you to arrive at interesting ideas.

I might try a TTS program that gives me certain primers for my memory journey in soft lullaby tones, or perhaps I could create a TTS script that finds some systematic way to vocalize python code.

1 Like

Finally I can die happy because one other person has experienced the bizarre joy of “OH THATS HOW THAT WORKS” but over and over and over as you code. :stuck_out_tongue:

It’s too early for you Beau, I don’t want your blood on my hands. :stuck_out_tongue_winking_eye:

But I will say again, it feels several magnitudes more exciting to have the answer emerge colorfully from your subconscious in the form of “Eureka!” rather than looking up the documentation on Google, Stackoverflow, etc.

For instance (no pun intended), I have some code memorized verbatim.
But, it’s pseudocode.

I make a lot of tweak and modulations to my code, so my thought is that I want the minimum effective scaffolding to be able to brainstorm improvements to my code whether showering, shopping, or skydiving.

Thoughts?

As for hierarchial memorization strategies, I think that is the right approach. Furthermore, if you do look for common patterns of systematization, I think it allows you to see structural connections between the information, and allows you to build bridges across different forms of hierarchial information.

1 Like

Update: In the past 3 months I’ve barely reviewed my anki flash cards, which I’ve hinted at a bit.

It started feeling like a chore and I refuse to allow an activity I love this much become anything remotely close to being a dreaded chore.

I’ve pursued other methods of review and creation, though, keeping things enjoyable.

Well, I had hoped I would eventually be inspired to pick up the cards again, and lo and behold, yesterday I began slowly and methodically working my way through them again.

Pleasantly and unsurprisingly (to me), with legitimate effort I’m recalling almost everything that comes up. Both the information and the respective mnemonics.

For the first time I’m considering dividing the Anki decks up.

One for what i consider the pre-reconsolidtion phase, and a deck for the post-reconsolidation phase.

Or in other words, a deck for info I can’tplay around with” yet, and a deck for info I can play with.

Perhaps keeping the former at a 80-90% memory retention, and the latter at something akin to 60-75%.

I just believe that the memory trace (of info I can play with and has been reconsolidated) can be followed like an overgrown but well traveled trail. And when I do that—especially after enough time that I would easily fail a timed test on the material—the re-reconsolidation feels profound. Like a wave of revelations, and almost certainly coming with new contextual connections.

The material feels fresh and alive again.

I’m enjoying the anki reviews. And I keep smiling in wonderment as the Ah-ha’s keep on a-comin’.

2 Likes

It’s been a minute since I’ve really made time for documenting on this journal.

I’ve also had multiple kind comments and DMs and haven’t gotten back to many folks at all.

I’ve been a bit “down” emotionally lately.
Unavoidable life associated grieving, methinks, but gosh I avoid being a resident “Debbie Downer”. Apologies if I’ve left you hanging.

I’ve picked up the scent of logic circuits again and was excited to discover a fun relatively unknown iPhone app game specifically presenting timed logic circuit puzzles.
Schemata if anyone’s curious, and oh boy do I dig it.

Here’s a sketch I did the other day (before I even found Schemata). I woke up wondering if I could build a Full Adder circuit. Not something I have memorized, but I was somewhat comfortable with the concept of Half-Adders and have been thinking about making a DIY binary calculator from scratch for a few months now.

I get my kicks peppering life with little personal puzzles and challenges like this.

4 Likes

today is another drive across Texas day for me.

On the drive I’ve begun memorizing the second edition of The C Programming Language by Brian W Kernighan and Dennis M Ritchie.

This book is perfect for Memory palace style mnemonics.

I have another book at home, C by Discovery, Which has exercises and examples and other application related study material that should pair well.

and I’ve been really playing with using the number of sides on shapes to give myself faux checksums for the length of my palaces and using indexes that refer to other palaces and also utilize shapes.

This isn’t a very good explanation, But it’s what I’m doing and is probably worth going into more detail at a later point if anyone other than me ends up interested.

Regards, y’all!

2 Likes

When playing with alphabetic containers a while ago I found that the “domino” or “dice” number shapes are a useful check that I “got” everything that is in the container.

I.e. the crate container has objects laid out like ⚃ - so there should be 4.

Do you mean something like that?

Incidentally when playing with alphabetic PAO systems I found arranging them in a quincunx is quite useful - a ⚄ with each dot a ⚄ or a 25 set (I just put Z close to A again).

For example I know that Ariel, Fred Flintstone, Krusty the clown, Popeye and Uncle Scrooge are the centers of each ⚄.
and then around Krusty the clown for example are: Lisa Simpson, Marge Simpson, Ned Flanders and Olive Oyl.

This all happened when I noticed that I naturally remember the “arrangement” of shapes around a locus. For a mnemonic walk in a park encoding the sermon on the mount the one small tree hold three images/ideas in a

.

.

.

arrangement.

3 Likes

Yes, very much like that.

To remember a list with 12 items, I can, for instance, lay out the mnemonic objects in a space (for this example the “space“ I used is a park in Dallas)

For the 12 sub-topics in Chapter 2 I chose an arrangement of three 4-sided diamonds (ie, 3 x 4 = 12).

The final path of each 4-sided diamond ends where the first path of the next diamond begins.

It all centers around a statue in the “middle” of the park/palace.

   🔶
 🔶🗿🔶
  
Rather than using the 4 “corners” of each ‘🔶’,
I’m using each of the 4 *sides*, 
— each side contains a mnemonic “path”.

To reinforce the checksum length (12 items in total in this case), I make an association to either a clock (:mantelpiece_clock:: 12 numbers) and/or the circle of fifths (12 notes/keys).

But the idea is that I have a quick and easy reference to remind myself how many items should be in this list.

The clock, 3 diamonds, and circle of fifths are just loose isomorphisms that remind me of “how many” at a quick glance.

Precisely what I’m describing. Thank you for commenting!

The “crate container” in your example is an isomorphism that’s easy for you to decode “at a glance”. Lovely.

3 Likes

I spend so much time googling the same few things, even after 18 years of coding.

What was your method for the tmux shortcuts? I use that and vim and feel like despite over a decade of constant usage I use maybe 0.1% of their potential.

Though I really need to figure out where to start. Typescript spec, Python spec, C spec, data structures and algorithms, the chess programming wiki, CSS spec, Polars or Pandas API documentation, numpy… Or vim.

I’m kind of tempted to export my Google search history and choose whatever I have to look back up the most! Or keep a pain log.

I’m thinking Vim, Pandas, and Typescript to start.

Though part of me feels like I should be going after a cert.

Do you have suggestions?

1 Like