6 puan yazan GN⁺ 2025-12-15 | 1 yorum | WhatsApp'ta paylaş
  • Hashcards, local-first yaklaşımıyla çalışan bir aralıklı tekrar öğrenme (spaced repetition) uygulamasıdır; Anki veya Mochi'ye benzer, ancak veritabanı yerine Markdown dosyaları kullanır
  • Her flashcard düz metin olarak yazılır; soru (Q), cevap (A) ve cloze deletion (C) biçimlerini destekler, tekrar takvimini ise FSRS algoritması yönetir
  • Kart verileri metin hash değerleriyle tanımlanır ve tekrar geçmişi SQLite'a kaydedilir; ayrıca Git deposu üzerinden sürüm kontrolü ve paylaşım mümkündür
  • Mevcut Anki'nin karmaşık arayüzü ve Mochi'nin verimsiz algoritması sorunlarını çözmek için, girdi sürtünmesini en aza indirme ve tam sahiplik hedefiyle tasarlanmıştır
  • Markdown tabanı, Git entegrasyonu ve FSRS zamanlayıcısının birleşimi, geliştiriciler ve öğrenciler için şeffaf ve otomatikleştirilmiş öğrenme yönetimi sunan yeni bir yaklaşım sağlar

Hashcards'a genel bakış

  • Hashcards, yerelde çalışan açık kaynaklı bir aralıklı tekrar sistemidir ve Anki veya Mochi'ye benzer bir öğrenme deneyimi sunar
    • Tekrar takvimi FSRS (Free Spaced Repetition Scheduler) algoritmasıyla yönetilir
    • Web arayüzü localhost:8000 üzerinde çalışır ve tekrar geçmişi SQLite veritabanında saklanır
  • Temel farkı, veritabanı kullanmaması ve her flashcard'ı Markdown dosyaları olarak yönetmesidir
    • Örnek: Cards/Math.md, Cards/Chemistry.md gibi dosyalardan oluşur
    • Her dosya birden fazla Q/A veya cloze deletion (C) kartı içerir

Metin tabanlı kart yapısı

  • Flashcard'lar basit bir metin biçiminde yazılır
    • Q: soru, A: cevap, C: cloze deletion biçimi
    • Örnek:
      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 sözdizimi doğrudan kullanılabildiği için, normal not alma deneyimine benzer bir kullanım sunar
  • Tekrar başlatma komutu $ hashcards drill <path> biçimindedir

Tasarım felsefesi ve avantajları

  • Hashcards'ın tasarımında en yüksek öncelik **“sürtünmesiz kart yazımı”**dır
    • Kart girişi ve düzenlemesi ne kadar hızlı ve sezgisel olursa öğrenme hacmi de o kadar artar
    • Cloze deletion girişi köşeli parantezler ([]) ile kısaltılır (Shift tuşu gerekmez)
  • Git deposu entegrasyonu şu avantajları sağlar
    • Sürüm kontrolü, değişiklik takibi, iş birliği ve açık paylaşım mümkündür
    • Kartlar standart Unix araçları veya betiklerle aranabilir ve düzenlenebilir
    • CSV gibi yapılandırılmış verilerden otomatik kart üretimi yapılabilir
  • Kartlar metin hash değerleriyle tanımlandığı için, içerik tabanlı kararlı referanslama mümkündür

Mevcut sistemlere (Anki, Mochi) bakış

  • Anki
    • Artıları: açık kaynak, FSRS desteği, zengin istatistikler, otomatik kart üretimi (note types) özelliği
    • Eksileri: karmaşık ve sezgisel olmayan arayüz, WYSIWYG girişin verimsizliği, eklenti bağımlılığı
  • Mochi
    • Artıları: temiz bir arayüz, Markdown tabanlı giriş, kısayol odaklı kullanım
    • Eksileri: cloze deletion sözdiziminin uzun olması, note types eksikliği, basit bir algoritma
    • Mevcut algoritma, uzun süreli hafızayı korumada verimsiz olan basit çarpan tabanlı (multiplier) bir yaklaşıma dayanır
    • Yakın zamanda FSRS beta desteği eklenmiş olsa da, mevcut kart zamanlama sorunları sürmektedir

Hashcards'ın uygulaması ve iş akışı

  • Kullanıcılar kartları doğrudan bir metin düzenleyici ile yazıp düzenleyebilir
    • Örnek: Q: What is the atomic number of carbon? / A: 6
    • Çok satırlı kartlar veya daha karmaşık biçimler de Markdown içinde doğal şekilde ifade edilebilir
  • Bilginin değişmesine bağlı kart düzenlemeleri kolaydır
    • Markdown dosyaları bölüm bazlı düzenlenerek ders kitabı yapısıyla eşleştirilebilir
    • İlgili kavramlar bitişik kartlar olarak yerleştirilebilir; bu da düzenleme sırasında gezinme verimliliğini artırır
  • Git tabanlı yönetim ile şu işlevler kullanılabilir
    • Commit, branch, merge, PR gibi tam sürüm kontrolü
    • Açık depolar üzerinden öğrenme paylaşımı ve iş birliği

Metin tabanlı yaklaşımın sinerjisi

  • Düzenleyici makroları ile otomatik kart üretimi ve gezinme mümkündür
  • Unix komutları (wc, awk vb.) ile kart istatistikleri çıkarılabilir ve toplu düzenleme yapılabilir
  • Betikler ve Makefile kullanılarak CSV gibi harici verilerden otomatik kart üretilebilir
  • GitHub'da açık paylaşım sayesinde bireylerin öğrenme süreçleri paylaşılabilir; bu da öğrenme kültürünün yaygınlaşmasına katkı sağlar

Sonuç

  • Hashcards, basit bir metin formatı, gelişmiş zamanlama algoritması (FSRS) ve Git entegrasyonunu bir araya getiren yeni tür bir aralıklı tekrar sistemidir
  • Kart yazımındaki sürtünmeyi en aza indirir, veri üzerinde tam sahiplik sağlar ve otomasyon ile ölçeklenebilirliği aynı anda sunar
  • Hem geliştiriciler hem de öğrenciler için şeffaf ve kontrol edilebilir bir öğrenme ortamı sağlayan bir araç olarak öne çıkar

1 yorum

 
GN⁺ 2025-12-15
Hacker News yorumları
  • Bence spaced repetition’ın gerçek gücü bir flashcard uygulamasında değil, davranış değişikliğinde yatıyor
    Örneğin, eşimin dişle ilgili bir sorun yüzünden sinirlendiği bir olaydan sonra, ‘duygusal olarak empati kurmak ve yeterince dinlemek’ alışkanlığını edinmek için bu durumu kendi SRS’ime ekledim
    Yaklaşık 30 saniye süren bu tekrarları hayat boyu yapsam bile toplamda 15 dakikayı bile bulmaz
    O zamandan beri aynı hatayı bir daha hiç yapmadım ve eşim tamamen değiştiğimi söylüyor
    Asıl mesele, spaced repetition’ı bir öğrenme aracı değil, yapılandırılmış bir pekiştirme sistemi olarak görmek

    • Bu örnek gerçekten çok ilginç. Ben iş gereği sorunları hemen çözmeye çalışma eğilimindeyim, bu yüzden biri sadece dert yanmak istediğinde nasıl tepki vermem gerektiğini bilmiyorum
      Sorunu çözmeyip sadece empati kurmak gerektiği fikri, benim düşünme tarzımdan tamamen farklı
    • Ben de bu örneği sevdim. Kindle highlight’larımı doğrudan SRS’e koyuyorum ve düzenli tekrar sayesinde alıntılar doğal biçimde zihnime yerleşiyor
    • Gerçekten harika bir yaklaşım. Hangi uygulamayı kullandığını, inbox’ını ne sıklıkla boşalttığını ve bu sürecin ne kadar sürdüğünü merak ediyorum
    • “Eşim sinirlendi” kısmına bakınca, tek hatalı olanın sen olmadığını düşünüyorum
      Eğer eşin önce empati kurmadan öneri verseydi, sen de sinirlenir miydin? Ve o noktada da artık çok mu geç olurdu?
    • Gerçekten ilham verici bir örnek. Sevdiğin birini daha iyi anlayabilmek için böyle bir çaba göstermen çok etkileyici
      SRS’e kaydederken somut anekdotlar mı yazıyorsun, yoksa genelleştirilmiş kalıplar mı ekliyorsun merak ediyorum. Kartların ön/arka yapısı ya da cloze formatı olup olmadığını da bilmek isterim
  • İnsanların böyle projeleri Anki ile kıyaslaması doğal ama Anki’ye yönelik eleştirilerin önemli bir kısmı bana öznel ya da abartılı geliyor
    Anki’nin hiyerarşik desteler yapısı aslında bir güçlü yön ve WYSIWYG düzenleme de hedef kullanıcı kitlesi için gayet doğal bir tercih
    LaTeX formülleri de kolayca kullanılabiliyor ve eklenti ekosistemi ‘hacky ama faydalı’ bir yapıda
    Pek çok alternatifi denedim ama sonunda yine Anki’ye geri dönüyorum. Terminal tabanlı araçları seven biri olarak söylüyorum, o kadar işlevsel

    • Onun listesi sadece motivasyon gerekçeleri içeriyor, başkalarını ikna etmeye çalışmıyor
      Sana hitap ediyorsa projeye bakarsın, etmiyorsa da geçersin
    • Ben her gün yaklaşık 30 dakika Anki kullanıyorum. Dürüst olmak gerekirse kusursuz değil ama başka bir uygulama arama gereği duymayacak kadar yeterli
  • Eğer kartlar metnin hash değeriyle tanımlanıyorsa, yazım hatası düzelttiğinde kartın tekrar geçmişi silinmiş olmuyor mu diye merak ediyorum

  • spaced repetition tabanlı bir sosyal ağın mümkün olup olmadığını merak ediyorum
    Akışta hoşuna giden bir gönderiyi ‘tekrar için planla’ gibi işaretlersen, bu bir tür retweet’e dönüşüp kalıcı olarak değerli içeriklerin yayılmasını sağlayabilir gibi geliyor

  • Ben de knowledge base + spaced repetition projesi üzerinde çalışıyorum
    Markdown dosyaları gerçekten çok kullanışlı — her yerden görüntülenebiliyor, Git ile sürüm kontrolü yapılabiliyor ve cross-linking çok esnek
    Proje bağlantısı: https://github.com/odosui/mt

    • Bu gerçekten çok ilginç. Ben bilgi ağırlıklı dersler çalışıyorum ve notların içinden doğrudan flashcard üretip tekrar yapabileceğim bir araç arıyordum
      Yerel notlarımı korumak istediğim için bulut tabanlı çözümlerden kaçınıyordum ama Markdown’ı Anki’ye parse eden araçlar olduğunu öğrendim
  • Emacs kullanıcıları için plain text tabanlı bir spaced repetition aracı olan org-drill’i öneririm

  • Ben Ankivalenz adlı bir kütüphane geliştirdim. Yapılandırılmış Markdown’ı Anki destelerine dönüştürüyor
    Örneğin, Path: Solar System > Planets > Color gibi bir hiyerarşi kartın içine eklenerek bağlamlı tekrar yapılmasını sağlıyor
    Normal notlar ve kartlar aynı Markdown dosyasında bir arada bulunabiliyor
    https://github.com/vangberg/ankivalenz/

  • Diğer SRS projelerinin Anki’den veri içe aktarma (import) özelliğini düzgün şekilde sunmaması üzücü
    Kullanıcıların çoğunun zaten Anki’de binlerce kartı var, bu yüzden geçiş yapmak kolay olmuyor
    Anki’nin veri formatı karmaşık ama SQLite tabanlı olduğu için paylaşım mümkün

    • Ben de kendi flashcard uygulamamı yaparken Anki import özelliğini uygulamayı denedim ama ilk başta sadece front/back aktardığım için veri kaybı çok fazlaydı
      Ancak Anki’nin note–model–template yapısını anlayınca ne kadar rafine olduğunu fark ettim
      Metin tabanlı, paylaşılabilir bir deste formatı olsa GitHub üzerinde birlikte çalışmak çok daha kolay olurdu
      Her notu ayrı bir dosya olarak tutup benzersiz ID vermek, güncellemeleri yönetmeyi de kolaylaştırırdı
    • Görünüşe göre birçok geliştirici Anki’nin yakın zamanda Rust tabanlı olarak refactor edildiğini bilmiyor
      Artık çekirdek mantık bir Rust crate olarak ayrılmış durumda, bu yüzden aynı veritabanını kullanarak alternatif frontend’ler yapmak daha kolay
    • SQL dump da sonuçta bir metin dosyası, dolayısıyla GitHub’da paylaşmak zor olmamalı
  • Veri girişi için daha önce Google Sheets kullandım
    Her satırı UUID ile benzersiz şekilde yönetirsen, düzenlemelerde iz sürmek daha kolay oluyor
    Aynı veriyle birden fazla deste oluşturulabiliyor (örneğin Çince pinyin→hanzi, hanzi→İngilizce)
    Böyle tabloları metin formatında backend olarak kullanan bir arayüz gerçekten çok iyi olurdu

    • Ama content-addressing yaklaşımında kartları düzenlemenin zor olması bir dezavantaj gibi görünüyor
  • Uzun yıllardır spaced repetition kullanan biri olarak birkaç ipucu paylaşayım
    1️⃣ Neyin önemli olduğuna karar vermek gerekir. Önemsiz bilgileri de karta çevirirsen her gün yüzlerce kart tekrar etmek zorunda kalırsın
    2️⃣ Önemli kavramlar, anlayışı farklı açılardan test eden çeşitli kartlarla çalışılmalı
    3️⃣ Bir süre sonra ikinci seviye kartlara ya da gerçek uygulamaya geçmek gerekir. Bir kavramı bir yıl boyunca hiç kullanmadıysan, o kadar da önemli olmayabilir
    Sonuç olarak spaced repetition çok verimli bir öğrenme aracı ama en büyük tuzak, önceliklendirmeyi yanlış yapmak