Giter VIP home page Giter VIP logo

supermemoassistant.wiki's Introduction

SuperMemo Community Documentation

This repository is an effort by the SuperMemo community to document SuperMemo. Any contribution welcome.

supermemoassistant.wiki's People

Contributors

aru avatar bjsi avatar candywal avatar nikedinikedi avatar rajlego avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

supermemoassistant.wiki's Issues

SuperMemo user's quotes

Most people don't know this, but Hell is just doing final drill....forever -- Luke Avedon

SuperMemo Intro Guide

Create an intro guide for SM

Objective:

  • Create an easy path for new users to get grasp on SM (they should grasp the idea of SM with just 1 link e.g. video)
  • Make SM look more attractive for more wide audience
  • Spread the word of SM more widely
  • Spotlight the benefits of SM

.... comment on this for better details what you think this intro guide should hold

Supermemo User Stories

Recently, I spoke to someone from a prominent blog about SuperMemo and he basically asked for proof that SuperMemo is worthwhile in terms of people who had highly significant provable success from using it. Since sample size of IR users (amongst people I know) is small, it's hard to find anyone too far out there so I couldn't really give him anything (though he was still interested because I explained exactly this).

It could be of merit to collect the experiences and successes of people like Aria from the SM discord. If I entice a newcomer into beginning with SuperMemo, he has to go ahead and persevere based on my promises that the software works. If we instead have stories from users showing that there is some real, tangible outcome to sticking with it maybe it would help people realize that it's a worthwhile software before they get to the point where they can realize it for themselves.

Beyond that, we could also add in stories from people in various fields for people to see how SuperMemo contributed to their success. In particular, I was thinking earlier about how I would convince a researcher to start using SuperMemo. I know various programmers and medical students that use SuperMemo but I can't think of a single researcher. I can make lots and lots of promises about how it can benefit their research but them learning it on that alone is hard. Having a real user story from a real researcher could make it much easier to display the merit of SuperMemo.

Could possibly be integrated with SuperMemo Guides mentioned in issue #2, maybe have people write guides as well as their own experience story.

Why another SM wiki ?

MediaWiki is a great platform for creating knowledge database, such as Wikipedia. While a documentation and a knowledge database might appear to be similar in nature, they are indeed distinct applications of human learning and human knowledge.

A software documentation has several objectives, the main one being to help users achieve a clear, synthetic understanding of said software's usage and capabilities. For this to happen, there needs to be a clear point of entry (or a few of them) for the user, as well as a structure that is simple to assimilate.

MediaWiki achieves none of these, as it is by nature a knowledge database, meant to represent the entirety of the available knowledge.
Aside from theoretical considerations, it is a fact that the lack of a clear documentation has hindered SM from becoming more widespread. Continuing in this path will only help keep hindering its progression.

I think most SuperMemo users will agree that its pioneering techniques make it superior to other software of the same class. Yet, if that is true, why is not the more popular software of the lot ? Is it because it is not open source ? We would argue not. If computer users chose software based their choice on whether they were open source, we can state with confidence that a great many software that have achieved monopoly today wouldn't exist.

Different types of Queue

These are the different types of queue, as I understand them:

  1. Learning queue: All your memorized elements,
  2. Priority queue: Elements from your learning queue (i.e. memorized elements), ordered by priority,
  3. Pending queue: Elements that are not memorized, meaning not in the learning queue. Once you reach the end of your learning queue, pending element will be memorized and added to your learning queue,
  4. Outstanding queue: Memorized elements whose next repetition date is today or before today's date (i.e. the elements you'll be reviewing today). Depending on your settings, the elements will be sorted in different proportions of items/topics, and randomness in their priority,

http://supermemopedia.com/wiki/Priority_queue

[PDF][TeX editor] Document the "Insert [$]" button

https://discordapp.com/channels/673071773700587521/673071774438522907/689835079509475539

Naess

simply the [/$] means stop the equation there and [$] starts a new one. on each of these [$]yourequation[/$] pieces, SMA will generate an image of
So with insert tag function you will make multiple images instead of one
this allows better clozing on equations

More over
add there that it needs some further explanation for certain latex equations, they can be quite complex and i dont always understand where i should put the mark in

Project management: Updating & synchronizing GitHub labels

  1. Generate the desired label list: navigate to a *repo's Labels, or to the default organization Labels and run:
var labels = [];
[].slice.call(document.querySelectorAll(".js-label-link"))
.forEach(function(element) {
  labels.push({
    name: element.textContent.trim(), description: element.parentElement.nextElementSibling.textContent.trim(),
    // using style.backgroundColor might returns "rgb(...)"
    color: element.getAttribute("style")
      .replace("background-color:", "")
      .replace(/color:.*/,"")
      .trim()
      // github wants hex code only without # or ;
      .replace(/^#/, "")
      .replace(/;$/, "")
      .trim(),
  })
})
console.log(JSON.stringify(labels, null, 2))
  1. Go the repositories that require synchronization, and run:
[
  {
    "name": "bug",
    "description": "Something isn't working",
    "color": "d73a4a"
  },
  ...
  (More labels)
  ...
  {
    "name": "wontfix",
    "description": "This will not be worked on",
    "color": "ffffff"
  }
].forEach(function(label) {
  addLabel(label)
})

function updateLabel (label) {
  var flag = false;
  [].slice.call(document.querySelectorAll(".js-label-list"))
  .forEach(function(element) {
    if (element.querySelector('.js-label-link').textContent.trim() === label.name) {
      flag = true
      element.querySelector('.js-edit-label').click()
      element.querySelector('.js-new-label-name-input').value = label.name
      element.querySelector('.js-new-label-description-input').value = label.description
      element.querySelector('.js-new-label-color-input').value = '#' + label.color
      element.querySelector('.js-edit-label-cancel ~ .btn-primary').click()
    }
  })
  return flag
}

function addNewLabel (label) {
  document.querySelector('.js-new-label-name-input').value = label.name
  document.querySelector('.js-new-label-description-input').value = label.description
  document.querySelector('.js-new-label-color-input').value = '#' + label.color
  document.querySelector('.js-details-target ~ .btn-primary').disabled = false
  document.querySelector('.js-details-target ~ .btn-primary').click()
}

function addLabel (label) {
  if (!updateLabel(label)) addNewLabel(label)
}

Scripts modified from the original versions:
(1) https://gist.github.com/MoOx/93c2853fee760f42d97f
(2) https://gist.github.com/Isaddo/7efebcb673a0957b9c6f07cd14826ea4

SuperMemo Guides

Guides are specific pathways to SuperMemo. They address the different way you can start using SuperMemo.

  • How to use SuperMemo to quickly learn books
  • How to learn maths with SuperMemo
  • How to utilize SM optimally for school exams

Puntopia

How I Learned to Stop Worrying and Love SuperMemo -- JamesB
This is why you suck at SuperMemo -- Naess

IR Strategies

This would apply mostly to textbooks/study material since they are way harder to tackle than wikipedia articles. However applies for everything IR.

  • Emphasis on reading?
  • Emphasis on skimming?
  • Basic to details principle explained with examples
  • How to start splitting textbook to pieces/when/ etc..

tbc...
#2

Suggestions and Ask Questions Sections

There should be a section where people could send their questions if something in the wiki is not clear or they have questions about SMA. Recent changes section could be added as well.

the documented MikTex install process should be rechecked

in https://supermemo.wiki/sma/#/plugin-LaTeX
Specifically:

image

When I installed zhmetrics the program seemed to have been stuck indefinitely at the "extracting files from zhmetrics.tar"-step. After a forced taskkill and rebooting the system zhmetrics was properly installed.

There should be a warning in the documentation if this process takes a long time.

Afterwards amsmath also was already installed (even though I never did that).
If amsmath comes preinstalled or is an automatically installed dependency of zhmetrics, the documentation should not mention it.

SuperMemo Backup Documentation Improvement Suggestions

Bitshelter:
Could you add a calculation method for checking how many gigabytes you should set aside for bitshelter in relation to the size of your collection? Or otherwise, an estimation such as, per 500mb set aside 1GB for bitshelter.

Github:
The Follow this Guide link looks quite outdated compared to the latest installer of git for windows. After following it, I'm not sure anyone not already proficient with computers would be able to use it. It's really easy to make a small mistake and be stuck doing a lot of troubleshooting. I'm not sure how you could simplify it though, so maybe having an alternate easier to set up backup method would be better.
When I run sm-main-commit.bat, it doesn't give any progress update and you don't see any changes in the command prompt, I think making it verbose would be better because I'm not sure if it's bugging out or just doing stuff in the background.

Using David's post, do you think that you could use symlinks to have both plan and sleep data be backed up in the same folder as the collections?

3/13/2019 All Suggestions:
Change to Wiki Guide:
-for bitshelter, add guides on how many gigabytes should be set aside relative to collection size
-consider asking the author for permission to just copy his guide to the wiki. We could then update it with better pictures and something easier to follow. As it is now, it's not something someone not competent with computers could follow
-From guide: In your SuperMemo Drive (E:), open a command prompt: type cmd.exe, then press Enter
The instructions on opening a command prompt don't really make sense to me. I think it's better to just tell people to hold shift, right click and open powershell. Then do git clone.
-An error I have often is that git add -A && git commit -m "Update" runs fine BUT when I run git push if pageant isn't set properly it just doesn't show any error but closes. If there's a more verbose version of the command I would input it. I would also add the following troubleshooting suggestions if that happens:
right click on pageant and make sure your github key is actually added. Add it and try git push again. If it works, the issue is that when you added pageant to startup you didn't make the target contain key path:
C:\Putty\pageant.exe %USER_HOME%.ssh\github-rsa.ppk

Feature Suggestions:
-script for download
-integrate git backup with SMA directly. That would fit with another script I also wanted: automatically run backup script on opening and closing SM. Eventually, I think it would be workable to have SMA work akin to the anki sync feature. If you have absolute upload and always treat most recent upload as latest and have absolute download and always overwrite when you download, I think it might not be too complicated.
-I currently am able to use git on all my collections fine. But because they're in a seperate folder, plan and sleepchart data aren't synced. You could just use git on your entire SuperMemo folder but I wouldn't want to sync exe's between computers, just plan, sleepchart and collections since I'd like SM on laptop and SM on desktop to have diffferent templates and the such. I think there's a way to get around this using symlinks but I'm not so familiar with how to get them to work with git. Maybe David would be helpful.

Bugs:
-On parallels, when running bitshelter it throws error about some C++ library. Both me and zeiss encountered it. I could've sworn somewhere you recommended installing some dependencies but I can't find it anywhere now. I'd recommend it again in case other people encounter the same error.
-I'm not super familiar with Git so when I do git pull to download upload from other computer if there's any change locally then it throws errors. Friend told me to do
git fetch --all
`git reset --hard origin/master'
I have no idea how safe that is or if there's a better way. Is there a way to upload the local copy if there's slight changes to some secondary branch as insurance and then do git fetch in a single script? I'm sure you could give people the exact script I mentioned above but it would be really easy to screw up

SMA documentation (Open Beta)

  • Documentation
    • Landing page
      • /!!\ Install a backup solution !!
      • Supported version
    • Quick start
      • Installation
        • Pre-requisites
        • DL & Install & Setup
          • Are there risks ?
          • /!!\ Install a backup solution !!
          • Extracting SMA in C:\Users\<your-user>\AppData\Roaming\SuperMemoAssistant. Type %AppData% in Windows Explorer path for easier access
          • If you can't view it, go to the following link and ensure you can view hidden folders.
          • Creating a shortcut to SMA
      • Recommended backup setup
        • BitShelter
        • Creating a partition for SM collection
        • Git/Git-crypt
      • Using SMA
        • Starting SMA. Make sure SuperMemo isn't running
        • Configuring sm17/sm18 executable path (in Options)
        • Adding your collection
        • Settings
    • Reference manual
      • SMA
        • Command line parameters
          • Open collection
          • Key logger
        • Collection window options
          • path
          • trust hint
        • Settings (Ctrl+Alt+Shift+O or right-click on the robot tray icon)
          • Plugins
            • Start/Stop
            • Settings (click on gear icon)
              • Per-plugin settings
              • Per-plugin configurable hotkeys
          • General (setting max number of children, explain the connection with SuperMemo's options)
        • The files (for user doc) (rest for dev?)
          • config files (.json)
            • per module
            • shared
            • collection
          • Log config (log level, first chance exception, ... ?)
          • Plugins
            • How do they work ? (own process, etc.)
            • Developer
            • Packages (nuGet)
        • History of SMA
      • Plugins
        • PDF
          • Importing PDFs
          • SM Extracts
            • Simple extract
            • Multi-selection
            • Force image selection (right click)
          • Sub-PDF Extracts
            • Bookmark extracts
            • Page range extracts
          • Dictionary
            • Using the dictionary
            • Settings
          • MathPix
            • Registering a developer account
            • Using your credentials in the PDF plugin
            • Using the OCR (alt+mouse drag)
            • Note that it integrates with multi-selection
            • Note that force image selection can be useful for embedded formulas
          • Per-PDF settings
          • File mgmt (cleaning up your collection)
          • HotKeys
            • Extract PDF (Ctrl+Shift+X)
            • Extract SM (Alt+X)
            • MarkIgnore (Ctrl+Shift+I)
            • ShowDictionary (Ctrl+D)
            • GoToPage (Ctrl+G)
            • SMLearn (Ctrl+L)
            • LearnAndReschedule (Ctrl+Shift+L)
            • SMReschedule (Ctrl+J)
            • SMLaterToday (Ctrl+Shift+J)
            • SMDone (Ctrl+Shift+Enter)
            • SMDelete (Ctrl+Shift+Del)
            • SMPrevious (Alt+Left)
            • SMNext (Alt+Right)
            • SMParent (Ctrl+Alt+Up)
            • SMChild (Ctrl+Alt+Down)
            • SMPrevSibling (Ctrl+Alt+Left)
            • SMNextSibling (Ctrl+Alt+Right)
            • UIShowOptions (Ctrl+O)
            • UIToggleBookmarks (Ctrl+B)
            • UIFocusViewer (Alt+C)
            • UIFocusBookmarks (Alt+B)
          • Non-hotkeys
            • OCR (Alt+Click)
            • Image area selection (Hold left click)
            • Force image area selection (Hold right click)
            • Zoom (Ctrl+Wheel)
            • Extend text selection (Shift+Click, Shift+Left/Right)
            • Deselect (Escape)
            • PDF navigation (Up/Down/Left/Right/Pg. Down/Pg. Up/Home/End)
            • Select word (Double click)
            • Select paragraph (Triple click)
            • Select page text (Quadra click)
            • Select page (double click on empty space in page)
            • Extend page selection (Shift+Click page)
            • Add to selection (Hold ctrl)
            • Select image (Click image)
          • FAQ
            • When I click the whole page is selected as an image

              Your pdf is made of images, either use an OCR and remove the images, or use force image area selection

            • My PDF won't load and there is an error in the logs

              Create an issue ticket on github and upload your logs and PDF file

            • How to I jump to a specific page number ?

              Ctrl+G

        • LaTeX
        • Import
          • Browser Import (Ctrl+Shift+Alt+A)
            • Adding extensions
              • Chrome (should also work with spin-offs, like Brave)
              • Firefox
            • Importing tabs from SuperMemo
            • Importing tabs from the Browser (right-click the robot icon)
          • Url Import (Ctrl+Shift+Alt+B)
          • Importing feeds
            • How to add feeds (RSS/Atom)
            • Feeds will be downloaded every time you start SMA (show popup)
            • Feeds can be downloaded manually (button in the settings)
          • Website configuration
            • What is it for ? (allows you to customize how specific websites are imported in your SM)
            • Configuring the website urls
            • Setting the location in your Knowledge tree
            • Setting the priority
            • Filtering the content (e.g. remove the navigation bars, advertising, etc.)
            • How to add title to references
            • How to add date to references
            • Using cookies (e.g. for website requiring a subscription)
            • Misc (no need to go in detail)
              • Changing your user agent
              • Render svg
              • Inline images
              • Appending a parameter to the url (link parameter)
              • Execute javascript: not finished yet
        • Dictionary
          • Also works in SuperMemo (select word in html component, press Ctrl+Alt+Shift+D)
          • Settings
            • Default dictionary language
            • Choosing the location in your KT
            • Changing the presentation of word definitions extracts (Mustache template)

Add last edited date to pages

It would be helpful in having an idea of how out of date a page is. As things are, there's no way to tell if a page was made for the most recent version of SMA or not.

A guide for new developers who want to build in VS

Currently building in VS is a bit tricky, particularly for people who aren't familiar with VS / C#.

I made some quick notes on problems me and wzonglin (discord) ran into while helping him get set up. @alexis- will probably need to confirm these, I may have made a mistake.

  1. Install dependencies (from sma.wiki).
    "you will need to install these:
    7-zip to extract the files
    Visual C++ Redistributable 2012 x86
    Visual C++ Redistributable 2015-2019 x86
    .NET Framework (4.7.2) (Installed by default on Windows 10)"

You also need to download the latest version of Visual Studio (Community Edition is fine).

  1. Get the project from GitHub
    Important: When you clone from GitHub, make sure you include the submodules - basically run this command:
git clone --recurse-submodules https://github.com/supermemo/SuperMemoAssistant
  1. To check that the submodules were cloned correctly, check the _Libs folder:
    image
    You should be able to load those projects. If they are greyed out, that's a sign something went wrong.
    You can confirm by right clicking on the _Libs folder and opening in windows explorer. If the submodule folders are empty, you need to rerun the git clone command, making sure to grab the submodules too.

  2. Change the output path for the build

In VS in the solution explorer you can search for "SuperMemoAssistant.csproj". Open the file and find the two lines where you specify the OutputPath. You will probably just need to change the username (blue lines.)

image

TODO... (will continue to update tomorrow)

Docsify Install/Setup Script

To make editing the wiki easier, we could create a script to:
0. (Optional) download script, have it fork and clone documentation master

  1. Install NPM
  2. Install docsify
  3. Initializes and serves docsify
  4. (Optional) Open up browser to localhost:3000

Create a Contributing documentation

If you're not sure what each pipeline (the vertical blocks where you move issues) does, hover your mouse on the (i) icon to get a description
image

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.