- Hashcards एक local-first spaced repetition learning ऐप है, जो Anki या Mochi जैसा है, लेकिन database की जगह Markdown files का उपयोग करता है
- हर flashcard सामान्य टेक्स्ट में लिखा जाता है, और प्रश्न (Q), उत्तर (A), और cloze deletion (C) फ़ॉर्मेट को सपोर्ट करता है, जबकि review schedule को FSRS algorithm मैनेज करता है
- कार्ड डेटा की पहचान text hash values से होती है, और review history SQLite में स्टोर होती है, जबकि Git repository के जरिए version control और sharing संभव है
- मौजूदा Anki के जटिल interface और Mochi के अक्षम algorithm की समस्या को हल करने के लिए इसे input friction को न्यूनतम करने और पूर्ण ownership देने के लक्ष्य से डिज़ाइन किया गया है
- Markdown-आधारित संरचना, Git integration, और FSRS scheduler के संयोजन से यह developers और learners को पारदर्शी और automated learning management के लिए एक नया approach देता है
Hashcards का परिचय
- Hashcards एक लोकल पर चलने वाला open source spaced repetition system है, जो Anki या Mochi जैसा learning experience देता है
- review schedule को FSRS (Free Spaced Repetition Scheduler) algorithm मैनेज करता है
- web interface
localhost:8000पर चलता है, और review history SQLite database में स्टोर होती है
- इसका मुख्य अंतर यह है कि यह database का उपयोग नहीं करता, बल्कि हर flashcard को Markdown file के रूप में मैनेज करता है
- उदाहरण:
Cards/Math.md,Cards/Chemistry.mdआदि - हर file में कई Q/A या cloze deletion (C) कार्ड हो सकते हैं
- उदाहरण:
टेक्स्ट-आधारित कार्ड संरचना
- flashcards को एक सरल टेक्स्ट फ़ॉर्मेट में लिखा जाता है
Q:प्रश्न,A:उत्तर,C:cloze deletion फ़ॉर्म- उदाहरण:
Q: What is the role of synaptic vesicles? A: They store neurotransmitters for release at the synaptic terminal. C: Speech is [produced] in [Broca's] area.
- इसमें Markdown syntax का सीधे उपयोग किया जा सकता है, इसलिए यह सामान्य नोट लिखने जैसा अनुभव देता है
- review चलाने का command
$ hashcards drill <path>फ़ॉर्म में होता है
डिज़ाइन दर्शन और फायदे
- Hashcards का डिज़ाइन “frictionless card writing” को सर्वोच्च प्राथमिकता देता है
- कार्ड इनपुट और एडिटिंग तेज़ और intuitive होनी चाहिए, तभी learning volume बढ़ता है
- square brackets (
[]) के उपयोग से cloze deletion लिखना छोटा हो जाता है (Shift key की ज़रूरत नहीं)
- Git repository के integration से ये फायदे मिलते हैं
- version control, change tracking, collaboration, और public sharing संभव
- standard Unix tools या scripts की मदद से कार्ड search और modification संभव
- CSV जैसे structured data से automatic card generation संभव
- कार्ड की पहचान text hash values से होती है, जिससे content-based stable reference संभव होता है
मौजूदा सिस्टम (Anki, Mochi) का मूल्यांकन
- Anki
- फायदे: open source, FSRS support, समृद्ध statistics, automatic card generation (note types) feature
- कमियाँ: जटिल और गैर-सहज interface, WYSIWYG input की अक्षमता, plugin dependency
- Mochi
- फायदे: साफ-सुथरा UI, Markdown-आधारित input, shortcut-केंद्रित control
- कमियाँ: cloze deletion syntax लंबा है, note types का अभाव, सरल algorithm
- मौजूदा algorithm सरल multiplier-based approach पर आधारित है, जो long-term memory retention के लिए अक्षम है
- हाल में FSRS beta support जोड़ा गया है, लेकिन पुराने कार्ड scheduling की समस्या अब भी बनी हुई है
Hashcards का implementation और workflow
- उपयोगकर्ता text editor से सीधे कार्ड लिख और एडिट कर सकते हैं
- उदाहरण:
Q: What is the atomic number of carbon? / A: 6 - multi-line कार्ड या complex formats को भी Markdown में स्वाभाविक रूप से व्यक्त किया जा सकता है
- उदाहरण:
- ज्ञान में बदलाव के अनुसार कार्ड संशोधन आसान है
- chapter-wise Markdown files बनाकर उन्हें textbook structure से मिलाया जा सकता है
- संबंधित concepts को पास-पास के कार्डों में रखकर संशोधन के समय navigation efficiency बढ़ाई जा सकती है
- Git-आधारित प्रबंधन से निम्न सुविधाएँ मिलती हैं
- commits, branches, merges, PR जैसे पूर्ण version control features
- public repositories के जरिए learning sharing और collaboration संभव
टेक्स्ट-आधारित approach की synergy
- editor macros के जरिए automatic card generation और navigation संभव
- Unix commands (
wc,awkआदि) से card statistics और bulk modification संभव - scripts और Makefile के जरिए CSV जैसे external data से automatic card generation संभव
- GitHub पर public sharing के माध्यम से व्यक्ति अपनी learning process साझा कर सकता है, जो learning culture को फैलाने में मदद कर सकता है
निष्कर्ष
- Hashcards एक नया spaced repetition system है, जो सरल टेक्स्ट फ़ॉर्मेट, advanced scheduling algorithm (FSRS), और Git integration को जोड़ता है
- यह कार्ड लिखने की friction को कम से कम करता है, डेटा की पूर्ण ownership सुनिश्चित करता है, और automation व scalability दोनों प्रदान करता है
- इसे developers और learners दोनों के लिए पारदर्शी और controllable learning environment देने वाले टूल के रूप में प्रस्तुत किया गया है
1 टिप्पणियां
Hacker News की राय
मुझे लगता है कि spaced repetition की असली ताकत फ्लैशकार्ड ऐप में नहीं, बल्कि व्यवहार बदलने में है
उदाहरण के लिए, एक बार मेरी पत्नी दाँतों की समस्या को लेकर नाराज़ थी, और उसी घटना के बाद मैंने ‘भावनात्मक रूप से सहानुभूति दिखाना और ध्यान से सुनना’ को आदत बनाने के लिए इस स्थिति को अपने SRS में डाल दिया
यह review लगभग 30 सेकंड लेता है, और अगर मैं इसे पूरी ज़िंदगी दोहराऊँ तब भी कुल 15 मिनट से कम समय लगेगा
उसके बाद मैंने वही गलती फिर कभी नहीं की, और मेरी पत्नी कहती है कि मैं पूरी तरह बदल गया हूँ
बात का सार यह है कि spaced repetition को ‘सीखने का टूल’ नहीं, बल्कि structured reinforcement system की तरह देखना चाहिए
समस्या हल करने की कोशिश न करूँ और बस सहानुभूति दिखाऊँ — यह मेरी सोच से बिल्कुल अलग है
अगर तुम्हारी पत्नी ने भी पहले बिना सहानुभूति के कोई सुझाव दिया होता, तो क्या तुम्हें भी गुस्सा आता? और तब भी क्या बहुत देर हो चुकी होती?
SRS में लिखते समय क्या आप खास घटनाएँ दर्ज करते हैं, या सामान्यीकृत पैटर्न? यह भी जानना चाहूँगा कि कार्ड का front/back structure कैसा है, या क्या आप cloze format इस्तेमाल करते हैं
लोगों का ऐसे प्रोजेक्ट्स की तुलना Anki से करना स्वाभाविक है, लेकिन मुझे लगता है कि Anki पर होने वाली कई आलोचनाएँ subjective या बढ़ा-चढ़ाकर कही गई होती हैं
Anki की hierarchical deck structure दरअसल उसकी ताकत है, और WYSIWYG editing भी उसके target users के लिए बिल्कुल स्वाभाविक चुनाव है
LaTeX formulas भी आसानी से लिखे जा सकते हैं, और plugins का ecosystem ‘hacky लेकिन उपयोगी’ है
मैंने कई alternatives आज़माए हैं, लेकिन अंत में फिर Anki पर लौट आता हूँ। मैं खुद terminal-based tools पसंद करता हूँ, फिर भी यह उतना functional है
अगर बात आपसे जुड़ती है तो प्रोजेक्ट देख लीजिए, नहीं तो बस नज़रअंदाज़ कर दीजिए
अगर कार्ड की पहचान text के hash value से होती है, तो क्या typo ठीक करते ही उस कार्ड का review history गायब नहीं हो जाएगा?
सोच रहा हूँ कि क्या spaced repetition आधारित social network संभव हो सकता है
अगर feed में पसंद आने वाली पोस्ट को ‘review schedule’ की तरह mark किया जाए, तो वह एक तरह का retweet बन सकता है, और लगातार मूल्यवान content फैल सकता है
मैं knowledge base + spaced repetition प्रोजेक्ट पर काम कर रहा हूँ
Markdown फ़ाइलें सच में बहुत सुविधाजनक हैं — उन्हें कहीं से भी देखा जा सकता है, Git से version control किया जा सकता है, और cross-linking भी खुलकर किया जा सकता है
प्रोजेक्ट लिंक: https://github.com/odosui/mt
मैं local notes रखना चाहता था इसलिए cloud-based solutions से बच रहा था, लेकिन फिर पता चला कि Markdown को Anki में parse करने वाले टूल्स मौजूद हैं
अगर आप Emacs user हैं, तो plain text आधारित spaced repetition टूल org-drill की सिफारिश करूँगा
मैंने Ankivalenz नाम की एक library बनाई है। यह structured Markdown को Anki deck में बदल देती है
उदाहरण के लिए,
Path: Solar System > Planets > Colorजैसी hierarchy कार्ड में शामिल हो सकती है, जिससे context-aware review संभव होता हैसामान्य notes और cards एक ही Markdown फ़ाइल में साथ रह सकते हैं
https://github.com/vangberg/ankivalenz/
अफ़सोस की बात है कि दूसरे SRS projects Anki से data import को ठीक से implement नहीं करते
ज़्यादातर users के पास पहले से Anki में हज़ारों कार्ड होते हैं, इसलिए आसानी से migrate करना मुश्किल होता है
Anki का data format जटिल है, लेकिन SQLite आधारित होने की वजह से share किया जा सकता है
Anki की note–model–template structure को समझने के बाद ही उसकी बारीकी का एहसास हुआ
अगर कोई text-based shareable deck format हो, तो GitHub पर collaboration करना बहुत आसान हो जाएगा
हर note को अलग फ़ाइल में रखकर unique ID दी जाए, तो updates manage करना भी आसान होगा
अब core logic को Rust crate में अलग कर दिया गया है, इसलिए उसी DB का इस्तेमाल करके alternative frontends बनाना आसान हो गया है
मैंने data entry के लिए Google Sheets का इस्तेमाल किया है
अगर हर row को UUID से uniquely manage किया जाए, तो edit होने पर भी track करना आसान रहता है
उसी data के आधार पर कई deck बनाए जा सकते हैं, जैसे Chinese pinyin→hanzi, और hanzi→English
काश ऐसी sheets के लिए text-format backend वाला कोई interface हो
spaced repetition को लंबे समय से इस्तेमाल करने वाले व्यक्ति के रूप में, मैं कुछ tips साझा करना चाहता हूँ
1️⃣ क्या महत्वपूर्ण है, यह तय करना ज़रूरी है। अगर हर छोटी जानकारी को कार्ड बना देंगे, तो रोज़ सैकड़ों कार्ड review करने पड़ेंगे
2️⃣ महत्वपूर्ण concepts के लिए अलग-अलग कोणों से समझ को जाँचने वाले विविध कार्ड होने चाहिए
3️⃣ कुछ समय बाद second-order cards या वास्तविक उपयोग की ओर बढ़ना चाहिए। अगर कोई concept एक साल तक कभी इस्तेमाल ही नहीं हुआ, तो शायद वह उतना महत्वपूर्ण नहीं है
निष्कर्ष यह है कि spaced repetition बहुत प्रभावी learning tool है, लेकिन priority तय करने में असफल होना इसका सबसे बड़ा trap है