6 poin oleh GN⁺ 2025-12-15 | 1 komentar | Bagikan ke WhatsApp
  • 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)

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.
      
      Iklan
  • 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
Iklan

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
    Iklan
  • 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

 
GN⁺ 2025-12-15
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

    • Contoh ini sangat menarik. Dalam pekerjaan, saya tipe orang yang langsung mencoba menyelesaikan masalah, jadi saya tidak tahu bagaimana harus bereaksi ketika seseorang hanya ingin mengeluh
      Bahwa saya tidak perlu memecahkan masalah dan cukup berempati saja, itu benar-benar berbeda dari cara berpikir saya
    • Saya juga suka contoh ini. Saya memasukkan sorotan Kindle saya langsung ke SRS, dan berkat ulasan berkala, kutipan-kutipan itu secara alami tertanam di kepala saya
    • Ini pendekatan yang sangat keren. Saya penasaran aplikasi apa yang dipakai, seberapa sering inbox dikosongkan, dan berapa lama proses itu biasanya memakan waktu
    • Dari bagian “istri saya marah”, rasanya bukan hanya kamu yang salah
      Kalau istrimu yang lebih dulu memberi saran tanpa empati, apakah kamu juga akan marah? Dan pada saat itu, apakah semuanya juga sudah terlambat?
    • Ini benar-benar contoh yang menginspirasi. Luar biasa bahwa kamu berusaha seperti ini untuk lebih memahami orang yang kamu cintai
      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

    • Daftarnya hanyalah alasan motivasional, bukan untuk meyakinkan orang lain
      Kalau kamu merasa cocok, silakan lihat proyeknya; kalau tidak, ya abaikan saja
    • Saya memakai Anki sekitar 30 menit setiap hari. Jujur saja memang tidak sempurna, tapi tetap cukup bagus sampai-sampai saya tidak merasa perlu mencari aplikasi lain
  • 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

    • Ini sangat menarik. Saya sedang mempelajari mata pelajaran yang berpusat pada pengetahuan, dan sedang mencari alat yang memungkinkan saya membuat flashcard langsung di dalam catatan lalu meninjaunya di sana juga
      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 > Color bisa dimasukkan ke dalam kartu sehingga memungkinkan ulasan yang memiliki konteks
    Catatan 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

    • Saya juga pernah membuat aplikasi flashcard sendiri dan mengimplementasikan fitur import Anki, tetapi awalnya saya hanya mengambil front/back sehingga kehilangan data-nya besar
      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
    • Banyak pengembang tampaknya tidak tahu bahwa Anki baru-baru ini direfaktorisasi berbasis Rust
      Sekarang logika intinya dipisahkan menjadi Rust crate, jadi lebih mudah membuat frontend alternatif dengan tetap menggunakan DB yang sama
    • SQL dump pada akhirnya juga cuma file teks, jadi rasanya tidak sulit dibagikan di GitHub
  • 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

    • Namun, kalau memakai pendekatan content-addressing, kemampuan untuk mengedit kartu memang tampak menjadi kelemahannya
  • 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