- Hashcards adalah aplikasi pengulangan berjarak (spaced repetition) local-first yang mirip dengan Anki atau Mochi, tetapi menggunakan file Markdown alih-alih database
- Setiap kartu flash ditulis sebagai teks biasa dan mendukung format pertanyaan (Q), jawaban (A), serta cloze deletion (C), dengan jadwal ulasan dikelola oleh algoritme FSRS
- Data kartu diidentifikasi dengan nilai hash teks, sementara riwayat ulasan disimpan di SQLite, serta dapat dikelola versinya dan dibagikan melalui repositori Git
- Dirancang untuk mengatasi masalah antarmuka yang rumit pada Anki dan algoritme yang tidak efisien pada Mochi, dengan tujuan meminimalkan gesekan input dan memberikan kepemilikan penuh
- Kombinasi berbasis Markdown, integrasi Git, dan penjadwal FSRS menawarkan pendekatan baru agar pengembang dan pelajar dapat melakukan manajemen belajar yang transparan dan otomatis
Ikhtisar Hashcards
- Hashcards adalah sistem pengulangan berjarak open-source yang berjalan secara lokal dan memberikan pengalaman belajar serupa Anki atau Mochi
- Jadwal ulasan dikelola oleh algoritme FSRS (Free Spaced Repetition Scheduler)
- Antarmuka web berjalan di
localhost:8000, dan riwayat ulasan disimpan dalam database SQLite
- Pembeda utamanya adalah struktur yang tidak menggunakan database, melainkan mengelola setiap kartu flash sebagai file Markdown
- Contoh: disusun sebagai
Cards/Math.md,Cards/Chemistry.md, dan seterusnya - Setiap file berisi beberapa kartu Q/A atau cloze deletion (C)
- Contoh: disusun sebagai
Struktur kartu berbasis teks
- Kartu flash ditulis dalam format teks sederhana
Q:pertanyaan,A:jawaban,C:bentuk cloze deletion- Contoh:
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.
- Karena dapat langsung memanfaatkan sintaks Markdown, pengalaman menulisnya terasa mirip dengan membuat catatan biasa
- Perintah untuk menjalankan sesi ulasan menggunakan bentuk
$ hashcards drill <path>
Filosofi desain dan keunggulan
- Desain Hashcards menempatkan “penulisan kartu tanpa gesekan” sebagai tujuan utama
- Input dan pengeditan kartu harus cepat dan intuitif agar volume belajar meningkat
- Penggunaan kurung siku ([]) mempersingkat input cloze deletion (tanpa perlu tombol Shift)
- Integrasi dengan repositori Git memberikan manfaat berikut
- Memungkinkan version control, pelacakan perubahan, kolaborasi, dan berbagi secara publik
- Kartu dapat dicari dan dimodifikasi menggunakan alat Unix standar atau skrip
- Kartu dapat dibuat secara otomatis dari data terstruktur seperti CSV
- Karena kartu diidentifikasi dengan nilai hash teks, referensi berbasis isi menjadi stabil
Penilaian terhadap sistem yang ada (Anki, Mochi)
- Anki
- Kelebihan: open-source, mendukung FSRS, statistik kaya, dan fitur pembuatan kartu otomatis (note types)
- Kekurangan: antarmuka yang rumit dan tidak intuitif, inefisiensi input WYSIWYG, serta ketergantungan pada plugin
- Mochi
- Kelebihan: UI yang rapi, input berbasis Markdown, pengoperasian berpusat pada shortcut
- Kekurangan: sintaks cloze deletion yang bertele-tele, tidak adanya note types, dan algoritme yang sederhana
- Algoritme yang ada menggunakan pendekatan multiplier sederhana, sehingga tidak efisien untuk mempertahankan ingatan jangka panjang
- Dukungan beta FSRS memang baru ditambahkan, tetapi masalah penjadwalan kartu lama masih tetap ada
Implementasi dan alur kerja Hashcards
- Pengguna dapat menulis dan mengedit kartu langsung dengan editor teks
- Contoh:
Q: What is the atomic number of carbon? / A: 6 - Kartu multi-baris maupun format yang lebih kompleks juga dapat diekspresikan secara alami di dalam Markdown
- Contoh:
- Memodifikasi kartu seiring perubahan pengetahuan menjadi mudah
- File Markdown dapat disusun per bab agar selaras dengan struktur buku ajar
- Konsep terkait bisa ditempatkan pada kartu yang berdekatan untuk meningkatkan efisiensi penelusuran saat revisi
- Dengan manajemen berbasis Git, fitur berikut dapat dimanfaatkan
- Commit, branch, merge, PR, dan version control penuh
- Berbagi pembelajaran dan kolaborasi melalui repositori publik
Sinergi pendekatan berbasis teks
- Memungkinkan pembuatan dan penelusuran kartu secara otomatis melalui macro editor
- Statistik kartu dan modifikasi massal dapat dilakukan dengan perintah Unix (wc, awk, dll.)
- Skrip dan Makefile dapat digunakan untuk membuat kartu otomatis dari data eksternal seperti CSV
- Dengan publikasi di GitHub, proses belajar pribadi dapat dibagikan, yang turut membantu penyebaran budaya belajar
Kesimpulan
- Hashcards adalah bentuk baru dari sistem pengulangan berjarak yang menggabungkan format teks sederhana, algoritme penjadwalan tingkat lanjut (FSRS), dan integrasi Git
- Sistem ini meminimalkan gesekan saat menulis kartu, menjamin kepemilikan penuh atas data, serta menyediakan otomatisasi dan skalabilitas sekaligus
- Diposisikan sebagai alat yang memberikan lingkungan belajar yang transparan dan dapat dikendalikan bagi pengembang maupun pelajar
1 komentar
Komentar Hacker News
Saya pikir kekuatan sejati spaced repetition bukan ada pada aplikasi flashcard, melainkan pada modifikasi perilaku
Misalnya, setelah istri saya marah karena masalah gigi, saya memasukkan situasi itu ke SRS saya agar bisa membiasakan diri untuk ‘berempati secara emosional dan mendengarkan dengan cukup’
Ulasan ini hanya memakan waktu sekitar 30 detik, jadi bahkan jika saya mengulanginya seumur hidup pun totalnya tidak sampai 15 menit
Sejak itu saya tidak pernah lagi melakukan kesalahan yang sama, dan istri saya bilang saya berubah total
Intinya adalah melihat spaced repetition bukan sebagai ‘alat belajar’, tetapi sebagai sistem penguatan yang terstruktur
Bahwa saya tidak perlu memecahkan masalah dan cukup berempati saja, itu benar-benar berbeda dari cara berpikir saya
Kalau istrimu yang lebih dulu memberi saran tanpa empati, apakah kamu juga akan marah? Dan pada saat itu, apakah semuanya juga sudah terlambat?
Saya penasaran, saat mencatat ke SRS apakah kamu memasukkan kejadian yang spesifik, atau pola yang sudah digeneralisasi. Saya juga ingin tahu apakah ada struktur depan-belakang kartu atau format cloze
Wajar kalau orang-orang membandingkan proyek seperti ini dengan Anki, tetapi saya merasa banyak kritik terhadap Anki yang subjektif atau dilebih-lebihkan
Struktur dek hierarkis Anki justru merupakan kelebihan, dan editor WYSIWYG juga pilihan yang sangat masuk akal untuk pengguna sasarannya
Rumus LaTeX juga bisa dipakai dengan mudah, dan pluginnya adalah ekosistem yang ‘terasa hacky tapi berguna’
Saya sudah mencoba berbagai alternatif, tetapi pada akhirnya selalu kembali ke Anki. Bahkan bagi saya yang suka alat berbasis terminal, Anki tetap se-fungsional itu
Kalau kamu merasa cocok, silakan lihat proyeknya; kalau tidak, ya abaikan saja
Jika kartu diidentifikasi dengan nilai hash dari teks, saya penasaran apakah setiap kali typo diperbaiki riwayat ulasan kartu itu akan hilang
Saya penasaran apakah jejaring sosial berbasis spaced repetition itu mungkin
Jika di feed kita bisa menandai tulisan yang disukai seperti ‘jadwalkan untuk ditinjau lagi’, itu bisa menjadi semacam retweet dan membantu menyebarkan konten yang bernilai secara berkelanjutan
Saya sedang mengerjakan proyek knowledge base + spaced repetition
File Markdown benar-benar nyaman — bisa dilihat di mana saja, bisa dikelola versinya dengan Git, dan cross-linking-nya bebas
Tautan proyek: https://github.com/odosui/mt
Saya ingin tetap menyimpan catatan secara lokal jadi menghindari solusi berbasis cloud, dan belakangan saya tahu ada alat yang bisa mem-parsing Markdown ke Anki
Jika kamu pengguna Emacs, saya merekomendasikan org-drill, alat spaced repetition berbasis plain text
Saya membuat pustaka bernama Ankivalenz. Pustaka ini mengubah Markdown terstruktur menjadi dek Anki
Misalnya, hierarki seperti
Path: Solar System > Planets > Colorbisa dimasukkan ke dalam kartu sehingga memungkinkan ulasan yang memiliki konteksCatatan biasa dan kartu bisa hidup berdampingan di file Markdown yang sama
https://github.com/vangberg/ankivalenz/
Saya menyayangkan proyek-proyek SRS lain tidak benar-benar mengimplementasikan fitur import data dari Anki dengan baik
Kebanyakan pengguna sudah punya ribuan kartu di Anki, jadi tidak mudah pindah begitu saja
Format data Anki memang rumit, tetapi karena berbasis SQLite, tetap bisa dibagikan
Baru setelah memahami struktur note–model–template milik Anki, saya menyadari betapa canggihnya desain itu
Kalau ada format dek berbagi berbasis teks, kolaborasi di GitHub pasti akan jauh lebih mudah
Jika setiap note disimpan sebagai file terpisah dan diberi ID unik, pengelolaan pembaruan juga akan jadi mudah
Sekarang logika intinya dipisahkan menjadi Rust crate, jadi lebih mudah membuat frontend alternatif dengan tetap menggunakan DB yang sama
Saya pernah memakai Google Spreadsheet untuk input data
Jika setiap baris dikelola secara unik dengan UUID, pelacakan saat ada revisi juga jadi mudah
Dari data yang sama, kita bisa membuat beberapa dek sekaligus, misalnya pinyin bahasa Tionghoa→hanzi, atau hanzi→bahasa Inggris
Akan sangat bagus kalau ada antarmuka yang menjadikan sheet seperti ini sebagai backend dalam format teks
Dari sudut pandang seseorang yang sudah lama memakai spaced repetition, saya ingin berbagi beberapa tips
1️⃣ Kita harus menentukan apa yang penting. Kalau sampai membuat kartu untuk informasi sepele, kita akan meninjau ratusan kartu setiap hari
2️⃣ Konsep penting sebaiknya dibuat menjadi beragam kartu yang menguji pemahaman dari beberapa sudut
3️⃣ Setelah jangka waktu tertentu, kita harus beralih ke kartu tingkat kedua atau penerapan nyata. Jika sebuah konsep tidak pernah dipakai sekali pun selama setahun, mungkin itu memang tidak penting
Kesimpulannya, spaced repetition adalah alat belajar yang sangat efisien, tetapi jebakan terbesarnya adalah gagal menetapkan prioritas