Interval repetitions "in your pocket"

    An article about the program (iOS) for memorizing English words using the interval repetition method, which takes into account your daily routine.

    The issue of the interval repetition method for storing information has already been covered several times on habrahabr : , , . In short, interval repetition is an approach to memorizing information, which consists in repeating the material being studied at specific, constantly increasing time intervals (for example, after 5 minutes, then after 25 minutes, then after 2 hours, etc.).

    How did you come up with the idea to create an application

    About a year ago, I decided to apply this technique (interval repetition) to memorizing English words, because when reading documentation, articles in English, I often feel a lack of vocabulary. At first I began to look for completely ready-made solutions. I needed a program for a mobile phone, because he is always with me and I can repeat the words at any time. My search was unsuccessful. The programs that I found either demanded the creation of a database with words on their own, or cost too much (Anki), or in my opinion had insufficient functionality precisely in terms of implementing repetitions.

    Not finding the finished program, it was decided to write my own, which will fully meet my requirements:

    • Words to remember should be in the frequency order, and not just in alphabetical or some other way. First of all, I want to study the most used words, but rarely used ones can wait - this is a question of the effectiveness of training. (Why should I learn words that I might not meet at all?)
    • I can’t repeat the words at any time, so the program should have settings that will limit the program in its actions for the given time intervals. (Agree, it’s unpleasant to open the eyelids in the middle of the night at the request of the program about the need to repeat the words.)
    • The program should be persistent: remind you that it is time to repeat the words. This is extremely important, as a person can forget about the need for repetition, and about the program itself.
    • The program should be for a mobile platform so that at the right moment you can repeat the words (because the phone is always at hand).

    And I started writing the coveted program. I already had some programming experience for iOS, so there was no hesitation with choosing a target platform. It took 8 months to develop the program, mainly in the evenings after work. And now I'm finally ready to share the results with you.

    Distinctive features of the application

    The main difference between my program and analogues is the accounting of your daily routine. You can tell the program time intervals when you cannot learn words: sleep, lunch at work, playing sports, etc. At given intervals, the program will not bother you with a reminder of the need to repeat the words. Moreover, based on time limits, the time will be calculated when you can learn new words. This feature is better explained in the following example. Suppose you set a time limit for sleep: 23: 00-06: 30 for each day of the week. Suppose also that the repetition intervals are as follows: 30 minutes, 2 hours ... You begin to learn a new word at 22:59, the time of the first repetition will come at 23:29, the second at 01:29. At this time, you are likely to fall asleep, the repetition will be considered overdue. To prevent this situation, the program limits the time for learning new words (you can repeat words at any time). For the above example, the program will prohibit learning new words after 20:30.

    The program offers a choice of several different methods of interval repetition: according to Pimsler, according to Ebbinghaus and others. I will not dare to judge which one is the most effective, but by default I chose the Pimsler method, because he used interval repetitions in relation to the study of foreign languages.

    Interaction with the program is quite simple: you see a word, its transcription and translation. Each word can be voiced (I use the built-in speech synthesizer in iOS, which significantly reduced the size of the application). When you learn a new word, two actions are available to you: either you will repeat this word in the future, or you will already know it (you will not repeat it).

    In the case when you repeat a previously learned word, you tell the program whether you remember it or not. In accordance with this information, the program will decide on the time of the next repetition.

    There is a special regime for car owners. Just put the phone under the windshield of the car and turn on the projection mode (HUD): the words will be visible in front of you on the windshield - you see both the road and the words.

    When the time is right for repeating the word, the program will notify you of this (local notifications are created):

    3rd party products

    To track application crashes, I built Crashlytics (registration on the site takes several weeks, the service is free). This service also allows you to organize beta-testing of the application. Everything is implemented extremely conveniently. For myself, I created a small cheat sheet for adding a device to the list for AD HOC distribution:
    1. Get udid devices
    2. Visit at Certificates, Identifiers & Profiles -> Devices -> All
    3. Click on +
    4. Enter Name (any, the main thing so that it is clear what kind of device it is and to whom it belongs) and UDID, click Continue
    5. Click Register
    6. Go to Provisioning Profiles -> Distribution
    7. Select profile which is used to distribute AD HOC -> click Edit
    8. In the Devices section: put a checkbox opposite the newly added device
    9. Click Generate
    10. You can download the profile to your computer (OPTIONAL), click Done
    11. Go to Xcode
    12. Xcode -> Preferences -> Accounts -> Select the desired id -> Double-click on Name

    In addition to Crashlytics, since January of this year I began to use TestFlight for beta testing. Its undoubted advantage in the number of testers: 1000 external testers and the lack of the need to collect udid devices (respectively, when adding a new tester, you do not need to recompile the application). Here is a good article on how to use this service: iOS 8: Beta Testing with TestFlight I

    used Flurry to collect statistics (the service is free). At the moment, I am interested in the effectiveness of each method of interval repetitions, I will try to evaluate it by the ratio of the number of clicks on the buttons "Remember", "I do not remember."

    To record my thoughts on improving the application, help texts, TODO list, I used the serviceGoogle Docs : from a mobile phone - not to lose a thought, on a computer in the evenings - just convenient.


    On the icon, I wanted to show that memory mechanisms are used to memorize words - I found a good idea in my mind - a human head with a gear instead of a brain (it’s convenient to search for icons on IconFinder ). The background of the icon is standard for language learning applications - two flags: English and Russian.

    In the Xcode-project of the application, three goals were created: alpha (compiled directly to the device), beta (not compiled to the device, the application is collected via product -> archive and then distributed through the Crashlytics beta testing service) and the final version for the store(repeats the beta in many ways, also used for beta testing through the TestFlight service). Accordingly, all three versions of the application can be installed on the device at once:

    So that these versions can be easily distinguished from each other, Alfa and Beta masks for icons were created (I share them with you).


    The Xcode version control system does not perceive the path in Russian with the letter “y”. Solution: replace “y” with “and” in the folder names. After that, files are successfully added to the version control system.

    Instead of output

    If you have not just an idea, but a solution to any of your problems, and this solution is personally more convenient for you than already created ones - perhaps your product has a chance of success. I hope that my application will be useful to someone.

    Promo Codes

    Promo codes for apps "Repeat and memorize English words with SpacedRepetitionApp» :

    UPD - April 24, 2015
    Additional promotional codes:
    tokn. co / wjvd8hs6

    Also popular now: