Funny. I've used triumphant LoTR music once to overcome my terrible fear of heights. I was climbing mount Kathadin with friends (including passing along "Knife Edge "), and the humming/singing out loud this music (+imagining a chopper-camera shooting from above) has completely effaced my fear.
Possibly being called "Legolas" during middle-school and high-school helped, too.
It was to be expected--
Someone had already created a "hierarchy Tags" addon:
I haven't used it myself, but a comment there said "Simple, nice, and easy."
This is an idea I had only toyed with but have yet to try in practice, but one can create meta-cards for non-data learning. Instead of creating cards that demand an answer, create cards that demand a drill, or a drill with a specific success outcome.
I find it a bit hard to find "the best example" for this, perhaps because the spectrum of learnable-skills is so broad, but just for the sake of illustration: if you're learning to paint, you can have "draw a still object", "draw a portrait", "practice color", "practice right composition", "practice perspective" &c, cards. After you finish your card-prompted drill, you move to the next card.
Or if you're practicing going pro at a game (with existing computer program AIs), you can have "Play AI X in a game situation S and achieve A", "Practice game opening against AI until (able to reach a certain state)", "practice a disadvantaged end-game situation against AI and bring the game to a draw", and so on, cards.
Of course reviewing the cards would take longer, but they are only meant to be used as scaffolding to harness the Anki spacing algorithm. The numeric parameters of the algorithm might need an adjustment (which is easy to do in Anki) for that, but I think that qualitatively it should work, at least for specific skills. Of course, this set-up, especially if it needs a major parametric-overhauling, is an investment, but every human breakthrough required its avant-gardians.
 Which is not granted: perhaps the algorithm is only problematic at the beginning of the "learning", being too frequent, in which case you can just "cheat" carefully and "pass" every other review for a while, which is not a major disturbance. Or, on the contrary, perhaps "well learned cards" (interval > 3 months, or even 1 month, for example) should be discarded for more challenging ones (i.e, "beat the expert AI" replacing "beat beginner AI", or "juggle 5 balls while riding a unicycle on a mid-air rope" replacing "juggle 4 balls"), which is even less of a problem, as you should immediately recognize well-learned skills (i.e. "practice counting up to 20").
This is not quite a "tech-tree" dependency structure, but you can use tags to stratify your cards and always review them in sequence from basic to dependent (i.e., first clear out the "basic" cards, then "intermediate", then "expert"). Even if the grouping is arbitrary, I think you can go a long way with it. If your data is expected to be very large and/or have a predictable structure, you can always go for a "multiple-pyramid" structure, i.e, have "fruits basic" < "fruits advanced" < "fruits expert", "veggies basics" < "veggies pro" tags &c, and perhaps even have an "edibles advanced" > veggies & fruits tag for very dependent cards.
On the assumption that the Anki algorithm works, just "reviewing down" to an empty deck every tag and proceeding thus sequentially from tag to tag, I think this would work too. Even if it so happened that by one Sunday you forgot "What is an American president" (basic) fact, it might still be profitable to rehearse that day the "Washington was the first president" card, despite the "20 rules" mentioned somewhere above. Presumably, if you had forgotten what a president is, the appropriate card is probably going to appear for review in the next few days, and so with a consistent (or even a semi-consistent) use of Anki, it would probably turn alright.
This is more for the anecdotal sake, but this reminds me a time when I burst out laughing out loud while at the dictionary. I was reading at the time "Three Men in a Boat", and there was one sentence in which I didn't know 2-3 of the words; the punchline clicked as I read the definition of the last of them.
Either way, somewhere higher on this commenting thread, I have also thought about the possibility (or rather, lack of) of creating dependencies in Anki. I'm actually thinking of creating an add-on/plugin to enable that--- I'm learning Python these days (on which Anki runs), and I'm just about to start grad school (if I get admitted), so it seems like just the right time to make this (possibly major) meta-learning investment.*
* Not to mention that, since I'm learning Python, it's also a (non-meta) learning investment. Win-win.
Just to comment on the last bit:
It seems odd to me that you stress the "3 weeks BARE minimum" and the "crossing point at 3 to 6 months" as a con, while you have used SRS for three years. Given that SRS is used for retention, and assuming that 6 months is the "crossing point", one would think that after three years of consistent SRS use you'd reap a very nice yield.
I know it's a metaphoric language, but it seems additionally ironic that the "BARE minimum" you stress equals to your frequency of exams, while you disfavor the cloze deletion's tendency to teach "guessing the teacher's password".
Is the advice perhaps against using SRS to learn/cram complex knowledge under a very limited time?
Being new to this whole area, I can't say I have preference for anything, and I cannot imagine how any programming paradigm is related to its capabilities and potential.
Where I stand I rather be given a (paradigmatic, if you will) direction, rather than recommended a specific programming language given a programming paradigm of choice.
But as I understand, what you say is that if one opts for going for Haskell, he'd be better off going for F# instead?
I was thinking in a similar direction. From a biological perspective, computation seems to be a costly activity --- if you just think of the metabolic demand the brain puts on the human being.
I assumed that it is very different with computer, however. I thought that the main cost of computation for computers, nowadays, is in size, rather than energy. I might be wrong, but I assumed that even with laptops the monitor is a significant battery drainer in comparison to the actual computer.
(sorry, mainly thinking out loud. I better read this and related posts more carefully. I'm glad to see the restriction on computations per amount of time, which I thought was unbounded here).
I. Probably doesn't add much to the consideration of language of choice, but I thought I might as well as add it:
In my conceptualization of the game, the constitution of each agent is more than the "behavioral sheet" --- there are properties of several types that constitute an interface with the environment, and affect the way the agent comes into interaction with other individuals and the environment at large (mainly the former).
II. I'm speaking here of learning programming languages as if it was as easy as buying eggs at the corner store, but I wanted to mention that during my browsing Haskell did come across my attention (I actually think I've seen the name on LW before, a long time ago, which brought further attention to it), and it did seem to be a language worthwhile for me to learn, and now the existence of the Botworld seems like further evidence that it is suited to one of my current main directions of inquiry with programming --- though I wonder if at this point, where I have little existing programming proficiency, it wouldn't be better to learn another one that might be better suited to my task at hand?
Sounds very cool, promising and enticing. I do have a technical question for you (or anybody else, naturally).
I was wondering how "intentional" the choice of Haskell was? Was it chosen mainly because it seemed the best fitting programming language out of all familiar ones, or due to existing knowledge/proficiency at it at the time of formulation of the bot-world idea? How did cost/utility come into play here?
My inquiry is for purely practical, not theoretical purposes--- I’m looking for an advice. In the summer two years ago I was reading as much as I could about topics related to evolutionary psychology and behavioral ecology. During the same period, I was also working with my physics professor, modeling particle systems using Wolfram Mathematica. I think it was this concurrence that engendered in me the idea of programming a similar to yours, yet different, “game of life” program.
Back at the time programming things in AutoHotkey and in Mathematica was as far as my programming went. Later that year I took a terribly basic python course (that was concerned mainly with natural language processing), and that was about it.
However, in the last couple of weeks I returned to python, this time taking the studying of it seriously. It brought back the idea of the life game of mine, but this time I feel like I can acquire the skills to execute the plan. I’m currently experiencing a sort of honeymoon period of excitement with programming, and I expect the following few months, at least, to be rather obligation-free for me and an opportune time to learn new programming languages.
I’ve read the above post only briefly (mainly due to restrictions of time--- I plan to read it and related posts soon), but it seems to me that our motivations and intentions with our respective games (mine being the currently non-existing one) are different, though there are similarities as well. I’m mainly interested in the (partially random) evolution/emergence of signaling/meaning/language/cooperation between agents. I’ve envisioned a grid-like game with agents that are “containers” of properties. That is, unlike Conway’s game where the progression of the game is determined purely on the on-the-grid mechanics, but like yours (as I understand it), where an individual agent is linked to an “instruction sheet” that lies outside the grid.
I think what differentiates my game from yours (and excuse me for any misunderstandings), is the “place” where the Cartesian barrier is placed.  While in yours there’s the presence of a completely outside “god” (and a point that I had missed is whether the “player” writes a meta-language at t=0 that dictates how the robot-brain that issues commands is modified and then the game is let to propagate itself, or whether the player has a finer turn-by-turn control), in mine the god had simply created the primordial soup and then stands watching. Mine is more like a toy, perhaps, as there is no goal whatsoever (the existential version?). If to go with the Cartesian analogy, it’s as if every agent in my game contains an array of pineal glands of different indices, each one mapped to a certain behavior (of the agent), and to certain rules regarding how the gland interacts with other glands in the same agent. One of the “core” rules of the game is the way these glands are inherited by future agents from past agents.
What I had foreseen two years ago as the main obstacle to my programming of it remains my current concern today, after I had acquired some familiarity with python. I want the behavior-building-blocks (to which “the glands” of the agent are mapped to) to be as (conceptually) “reduced” as possible –– that is, that the complex behavior of the agents would be a phenomenon emerging from the complexity of interaction between the simple behaviors/commands –– and to be as mutable as possible. As far as I can tell, python is not the best language for that.
While browsing for languages in Wikipedia, I came across LISP, which appealed to me since it (quoth Wikipedia) “treats everything as data” – functions and statements are cut from the same cloth, and it is further suggested there that it is well suited for metaprogramming.
What do you (or anybody else in here) think?
Also, quite apart from this pursuit, I have intentions to at least begin learning R. I suspect it won’t have much relevancy for the construction of this game (but perhaps for the analysis of actual instance of the game play), but if it somehow goes into the consideration of the main language of choice--- well, here you go.
Thank you very much for your time,
 My point here is mainly to underscore what seem to be possible differences between your game and mine so that you could – if you will – advise me better about the programming language of choice.