anki
anki copied to clipboard
Draw!
Some ideas are too complex for a simple flashcard. For example, the HTDP game code or a stonking great glob of code from a program. How can this be broken down to make reviews sane? Should only a handful of snippets from the code base be added?
- #23 (see the game, also the notes table)
- #72 (especially on when NOT to add cards)
- Meaning, context, and flow of a program
concrete->pictorial->abstractapproach to teaching
Initial thoughts on sketching out ideas
Stop! Draw it out. Test design routes. When faced with a difficult problem:
- do part of it & try again, or
- do a similar problem and try again.
When writing a function or programme, there'll be many routes. Each will have it's pros and cons, some will lead to shorter (or easier) code — having visuals of design decisions could come in handy when reviewing cards.
- Do the simplest thing possible
- Pull out the nugget of the idea
- Start with the most basic unit of data
- How much time do you have to explore?
- Could it benefit from some research first?
- Draw out potential routes
- Filter the useful one(s) (try not to satisfice)
- It might be useful to note down the answer you didn't use (wrong answer, needlessly complex idea)
- You'll have it stored for next time you tackle a similar problem
- Start writing code with confidence
See also hammock driven development for thinking about a problem, and ideally a non-maths version of "How to Solve it" if one exists. Some problems will need context, or step-by-step drawings, but where possible get to the nugget of the issue without adding a ton of code (this could be handled with simple drawings or explanations).
See the below comment, and my Head First SQL book notes as an example of where Anki might not be necessary. Here I've pulled out key ideas in a document for reference, and it only makes sense to add an Anki card on bits you routinely get stuck on.
If you come back to your notes and a section is too hard to understand, it's probably a good candidate for a simpler Anki card.
Image occlusions in Anki
Image Occlusions are another area to explore. The only downside is you must add annotations via Anki to validate the card. An example here on building your own.
Some things are hard to visualise
How to design programs function mental model is pretty good, if it could be visualised somehow. Also interesting is this article on meaning, context, and flow of a program.
- A good example of something I've forgotten how I did it and is visually complex in
racketlang.

Some concepts are really hard (or really dry) to grasp, so it's sometimes easier to draw out in a conceptual, abstract way.
- It may involve mixed media that's offsite
- Taking a snippet to make you reconnect that particular problem
- A little nudge or reminder (a lesson you took, a bug you faced)
- Or, a simplified version of a larger problem
Programming terminology can be dense
An argot: the language used by a particular type or group of people
Programming deals with precision for commanding a computer, so they can be hard to understand for the beginner. There's also the question of depth of understanding — and how to explain a thing depending on that student's knowledge reference points. A great example of this is Richard Feinman's explanation of magnets, and why they repel.
Some languages are easier to understand than others. It would be helpful to have a glossary for all the jargon out there!
Some other helpful examples
- How about AI and drawing (an example of drawing a circuit and rendering code)
- Write a musical note and convert into some function
- Drawing with code in Racket, interesting but a lot of code to animate a thing.
- Code tracing and various sketching methods on pg. 169 of this pdf
- Feels a bit too much like maths to me, but useful for loops and recursions
- I can't find many books on sketching out coding problems (yet), but this games patterns might do.
- Programming a diamond shape (with sketches)
Using the simple card, a basic example:
If the question isn't short and sweet, it may be too complicated ... but, potential issues with current fields are:
- [ ] It needs steps
- Current title doesn't allow for ease-of-reading
- Or step-by-step processes / questions
- Or requires more context
- [ ] It should probably be super simple
- Remembering "snippets" or hard to grasp concepts
- Writing a whole task or program should probably be done in book form, by hand or analogue process
- [ ] This is an aid not a replacement for proper learning, by book or classroom
- [ ] It's personal, although some concepts might be easily shared
- [ ] It should be fun!!
Any ideas or examples, please send them along!