An article about a program (iOS) for memorizing English words using the interval repetition method, which takes into account your daily routine.
At habrahabr several times already covered the question of the method of interval repetitions for memorizing information:
habrahabr.ru/post/246459 ,
habrahabr.ru/post/196448 ,
habrahabr.ru/post/240451 . In short, interval repetitions are an approach to storing information, which consists in repeating the material under study at certain constantly increasing time intervals (for example, after 5 minutes, then after 25 minutes, then after 2 hours, etc.).
How did you get the idea to create an application
About a year ago I decided to apply this technique (interval repetitions) to memorizing English words, since reading documentation, articles in English often feel the lack of vocabulary. First I started looking for completely ready 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 not successful. Programs that I found either required the creation of a database with words on their own, were too costly (Anki), or had, in my opinion, insufficient functionality 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. First of all I want to learn the most used words, and rarely used can wait - this is a question of the effectiveness of training. (Why should I learn words that I may not even meet?)
- I cannot repeat words at an arbitrary point in time, so the program should have settings that will limit the program in its actions for the specified time intervals. (Agree, it is unpleasant to open your eyelids in the middle of the night at the request of the program to repeat the words.)
- The program must 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 must be under a mobile platform so that at the right moment you can repeat the words (because the phone is always at hand).
And I began to write the cherished program. There was already a little programming experience under iOS, so there was no oscillation with the choice of the target platform. The development of the program took 8 months, mostly 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 its analogs is keeping track of your daily routine. You can indicate to the program the time intervals when you cannot study words: sleep, lunch at work, playing sports, etc. At specified intervals, the program will not disturb you with a reminder to repeat the words. Moreover, based on the time limits, the time will be calculated when you can learn new words. This feature is best illustrated by 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: 30 minutes, 2 hours ... You start learning a new word at 22:59, the time of the first repetition comes at 23:29, the second at 01:29. At this time you will most likely fall asleep, the repetition will be considered overdue. To prevent such a situation, the program limits the time for learning new words (words can be repeated 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 repetitions: according to Pemsler, Ebbinghaus, and others. I do not dare to judge which of them is the most effective, but by default I chose the Peamsler method, since he used interval repetitions as applied to the study of foreign languages.
Interaction with the program is quite simple: you see the word, its transcription and translation. Each word can be voiced (I use the speech synthesizer built into iOS, which significantly reduced the size of the application). When you study a new word, two actions are available to you: either you will repeat this word in the future, or you 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 next repetition time.
For car owners there is a special mode. 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 can see both the road and the words.
When the time comes to repeat the word, the program will notify you about it (local notifications are created):
Third Party Products
To track down the crashes of the application, I built
Crashlytics (registration on the site takes several weeks, the service is free). Also, this service allows you to organize beta-testing applications. Everything is implemented extremely convenient. For myself, I created a small cheat sheet for adding a device to the list for AD HOC distribution:
- Get udid devices
- Go to developer.apple.com to the section Certificates, Identifiers & Profiles -> Devices -> All
- Click on +
- Enter the Name (any, the main thing to make it clear what this device is and to whom it belongs) and UDID, click Continue
- Click Register
- Go to Provisioning Profiles -> Distribution
- Select the profile that is used to distribute AD HOC -> click Edit
- In the Devices section: put the checkbox in front of the newly added device
- Click Generate
- You can download the profile to your computer (OPTIONAL), click Done.
- Go to Xcode
- Xcode -> Preferences -> Accounts -> Select the desired id -> Double click on Name
In addition to Crashlytics, this January I began to use the
TestFlight service for beta testing. Its undoubted plus in the number of testers: 1000 external testers and no 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
For the collection of statistics used
Flurry (free service). At the moment I'm interested in the effectiveness of each method of interval repetitions, I will try to evaluate it in relation to the number of clicks on the buttons “I remember”, “I do not remember”.
To record emerging ideas for improving the application, help texts, TODO list, I used the
Google Docs service: from a mobile phone — in order to not lose the thought, on the computer in the evenings — just convenient.
Icon
On the icon, I wanted to show that memory “mechanisms” are used to memorize words - I found an idea that was good for me - a human head with a gear instead of a brain (it is convenient to look for icons on
IconFinder ). The background of the standard icons for language learning applications is two flags: English and Russian.
In the Xcode project, the application created three goals:
alpha (compiled directly to the device),
beta (not compiled to the device, the application is assembled through product -> archive and then distributed through the Crashlytics beta testing service) and the
final version for the store (largely repeats beta version, also used for beta testing via 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).
Bugs
The version control system of Xcode does not accept the path in Russian with the letter “d”. Solution: replace “d” with “and” in 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 more convenient for you personally than the ones already created - perhaps your product has a chance of success. I hope that my application will be useful for someone.
Promo codes
Promo codes for the
“Repeat and memorize English words with SpacedRepetitionApp” application :
964H7HWJJKET
NL3MNNMJR3EJ
KFJPKT3NPFXY
EXJEAWL44XXJ
KTLAEF3363N3
EHPKEERT44FT
WYPKF7EE7PXW
T9JPPXYY4YWR
64T6HXLKFNHR
KMYKP7RNATYP
F4XJLT77PM9E
43T3HAXTN7L3
7KW6FWT3FJTN
PAFKMYM3XL4A
LTPWYNNE64EY
PAPM3PNTM3HW
4ATX4F6ELHA7
EAJFK39XJHTM
3PKJYLHRX7HN
6J977N49PKR6
UPD - April 24, 2015
Additional promotional codes:
tokn.co/an9hn2gh
tokn.co/wjvd8hs6
tokn.co/jsb5tpct
tokn.co/m2u9zcyc
tokn.co/sq2yf7xa
tokn.co/tmfk3hqj
tokn.co/vr539bu7
tokn.co/g3ea6fwy
tokn.co/zxd8c42k
tokn.co/24mes3zp
tokn.co/hphcgcmv
tokn.co/bza65b99
tokn.co/fgngkh32
tokn.co/y63zq2dw
tokn.co/9fzb238x