6 Punkte von GN⁺ 2025-12-15 | 1 Kommentare | Auf WhatsApp teilen
  • Hashcards ist eine Local-First-App für Spaced Repetition, ähnlich wie Anki oder Mochi, verwendet aber Markdown-Dateien statt einer Datenbank
  • Jede Lernkarte wird als Klartext geschrieben und unterstützt die Formate Frage (Q), Antwort (A) und Cloze Deletion (C); die Wiederholungsplanung wird mit dem FSRS-Algorithmus verwaltet
  • Kartendaten werden über Text-Hashwerte identifiziert, während der Wiederholungsverlauf in SQLite gespeichert wird; über ein Git-Repository sind Versionsverwaltung und Teilen möglich
  • Das System wurde mit dem Ziel entwickelt, die Probleme von Ankis komplexer Oberfläche und Mochis ineffizientem Algorithmus zu lösen, mit Fokus auf minimale Eingabereibung und vollständige Datenhoheit
  • Die Kombination aus Markdown-Basis, Git-Integration und FSRS-Scheduler bietet einen neuen Ansatz, mit dem Entwickler und Lernende transparentes und automatisiertes Lernmanagement umsetzen können

Überblick über Hashcards

  • Hashcards ist ein lokal ausgeführtes Open-Source-System für Spaced Repetition, das ein Lernerlebnis ähnlich wie Anki oder Mochi bietet
    • Die Wiederholungsplanung wird mit dem FSRS (Free Spaced Repetition Scheduler)-Algorithmus verwaltet
    • Die Weboberfläche läuft auf localhost:8000, und der Wiederholungsverlauf wird in einer SQLite-Datenbank gespeichert
  • Der zentrale Unterschied ist die Struktur, bei der keine Datenbank für die Karten verwendet wird, sondern jede Lernkarte als Markdown-Datei verwaltet wird
    • Beispiel: Cards/Math.md, Cards/Chemistry.md usw.
    • Jede Datei enthält mehrere Q/A- oder Cloze-Deletions-Karten

Textbasierte Kartenstruktur

  • Lernkarten werden in einem einfachen Textformat geschrieben
    • Q: Frage, A: Antwort, C: Cloze-Deletion-Form
    • Beispiel:
      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.
      
  • Da die Markdown-Syntax direkt genutzt werden kann, entsteht ein Arbeitsgefühl ähnlich wie beim Schreiben normaler Notizen
  • Der Befehl zum Starten einer Wiederholung hat die Form $ hashcards drill <path>

Designphilosophie und Vorteile

  • Das Design von Hashcards setzt „reibungsloses Kartenschreiben“ als oberstes Ziel
    • Wenn das Erfassen und Bearbeiten von Karten schnell und intuitiv ist, steigt das Lernvolumen
    • Durch die Verwendung von eckigen Klammern ([]) wird die Eingabe von Cloze Deletions verkürzt
  • Die Integration mit Git-Repositories bietet unter anderem folgende Vorteile
    • Versionsverwaltung, Änderungsverfolgung, Zusammenarbeit und öffentliches Teilen
    • Karten können mit standardmäßigen Unix-Werkzeugen oder Skripten gesucht und bearbeitet werden
    • Aus strukturierten Daten wie CSV lassen sich Karten automatisch erzeugen
  • Karten werden über Text-Hashwerte identifiziert, wodurch stabile inhaltsbasierte Referenzen möglich sind

Bewertung bestehender Systeme (Anki, Mochi)

  • Anki
    • Vorteile: Open Source, FSRS-Unterstützung, umfangreiche Statistiken, automatische Kartenerzeugung über note types
    • Nachteile: komplexe und wenig intuitive Oberfläche, Ineffizienz der WYSIWYG-Eingabe, Abhängigkeit von Plugins
  • Mochi
    • Vorteile: aufgeräumte UI, Markdown-basierte Eingabe, bedienung per Tastenkürzeln
    • Nachteile: umständliche Cloze-Deletions-Syntax, keine note types, einfacher Algorithmus
    • Der bisherige Algorithmus arbeitet mit einem einfachen Multiplier-Modell und ist für das langfristige Behalten ineffizient
    • Kürzlich wurde zwar FSRS-Beta-Unterstützung hinzugefügt, die bestehenden Probleme bei der Kartenplanung bleiben jedoch bestehen

Implementierung und Workflow von Hashcards

  • Nutzer können Karten direkt in einem Texteditor schreiben und bearbeiten
    • Beispiel: Q: What is the atomic number of carbon? / A: 6
    • Auch mehrzeilige Karten oder komplexere Formate lassen sich innerhalb von Markdown natürlich ausdrücken
  • Karten lassen sich leicht an verändertes Wissen anpassen
    • Durch Markdown-Dateien pro Kapitel kann die Struktur eines Lehrbuchs nachgebildet werden
    • Verwandte Konzepte können in benachbarten Karten angeordnet werden, was die Navigation bei Änderungen effizienter macht
  • Mit Git-basierter Verwaltung lassen sich folgende Funktionen nutzen
    • Vollständige Versionsverwaltung mit Commits, Branches, Merges, PRs usw.
    • Teilen von Lernmaterial und Zusammenarbeit über öffentliche Repositories

Synergie des textbasierten Ansatzes

  • Über Editor-Makros sind automatische Kartenerzeugung und Navigation möglich
  • Mit Unix-Befehlen (wc, awk usw.) lassen sich Kartenstatistiken und Massenänderungen durchführen
  • Mit Skripten und Makefiles können Karten aus externen Daten wie CSV automatisch erzeugt werden
  • Über eine Veröffentlichung auf GitHub kann der persönliche Lernprozess geteilt werden, was zur Verbreitung einer Lernkultur beiträgt

Fazit

  • Hashcards ist eine neue Form von Spaced-Repetition-System, die ein einfaches Textformat, einen fortgeschrittenen Scheduling-Algorithmus (FSRS) und Git-Integration kombiniert
  • Es minimiert die Reibung beim Erstellen von Karten, garantiert vollständige Datenhoheit und bietet gleichzeitig Automatisierung und Skalierbarkeit
  • Es wird als Werkzeug präsentiert, das sowohl Entwicklern als auch Lernenden eine transparente und kontrollierbare Lernumgebung bietet

1 Kommentare

 
GN⁺ 2025-12-15
Hacker-News-Kommentare
  • Ich denke, die eigentliche Stärke von spaced repetition liegt nicht bei Flashcard-Apps, sondern in der Verhaltensänderung
    Zum Beispiel habe ich, nachdem meine Frau wegen eines Zahnproblems verärgert war, diese Situation in mein SRS aufgenommen, um mir anzugewöhnen, „emotional mitzufühlen und lange genug zuzuhören“
    Selbst wenn ich diese 30-Sekunden-Wiederholung mein ganzes Leben lang mache, wird sie insgesamt nicht einmal 15 Minuten kosten
    Seitdem habe ich denselben Fehler kein einziges Mal wiederholt, und meine Frau sagt, ich hätte mich komplett verändert
    Der Kern ist, spaced repetition nicht als „Lernwerkzeug“, sondern als strukturiertes Verstärkungssystem zu sehen

    • Dieses Beispiel ist wirklich interessant. Ich neige beruflich dazu, Probleme sofort lösen zu wollen, deshalb weiß ich nicht, wie ich reagieren soll, wenn jemand einfach nur seinen Frust loswerden möchte
      Das Problem nicht zu lösen, sondern nur Mitgefühl zu zeigen, ist völlig anders als meine Denkweise
    • Mir gefällt dieses Beispiel auch. Ich füge Kindle-Highlights unverändert in mein SRS ein, und durch die regelmäßige Wiederholung prägen sich die Zitate ganz natürlich ein
    • Wirklich ein großartiger Ansatz. Mich würde interessieren, welche App du verwendest, wie oft du deine Inbox leerst und wie lange der Prozess dauert
    • Wenn ich den Teil „meine Frau wurde wütend“ lese, klingt es nicht so, als wärst nur du im Unrecht gewesen
      Wenn deine Frau zuerst einen Vorschlag ohne Empathie gemacht hätte, wärst du dann auch wütend geworden? Und wäre es dann ebenfalls schon zu spät gewesen?
    • Das ist wirklich ein inspirierendes Beispiel. Dass du dir solche Mühe gibst, um einen geliebten Menschen besser zu verstehen, ist beeindruckend
      Mich würde interessieren, ob du beim Eintragen ins SRS konkrete Episoden festhältst oder eher verallgemeinerte Muster. Ich würde auch gern wissen, wie Vorder- und Rückseite der Karten aufgebaut sind oder ob du ein Cloze-Format nutzt
  • Es ist naheliegend, solche Projekte mit Anki zu vergleichen, aber ich habe das Gefühl, dass viele Kritikpunkte an Anki subjektiv oder übertrieben sind
    Ankis hierarchische Deck-Struktur ist eher eine Stärke, und WYSIWYG-Bearbeitung ist für die Zielgruppe eine ganz naheliegende Wahl
    Auch LaTeX-Formeln lassen sich einfach verwenden, und Plugins sind ein „hackiges, aber nützliches“ Ökosystem
    Ich habe viele Alternativen ausprobiert, komme am Ende aber immer wieder zu Anki zurück. Selbst für jemanden wie mich, der terminalbasierte Tools mag, ist es funktional genug

    • Seine Liste ist einfach nur ein Motivationsgrund und nicht dazu gedacht, andere zu überzeugen
      Wenn es bei dir Anklang findet, kannst du dir das Projekt ansehen, und wenn nicht, dann ignorier es einfach
    • Ich nutze Anki jeden Tag etwa 30 Minuten. Ehrlich gesagt ist es nicht perfekt, aber gut genug, dass ich keinen Grund sehe, nach einer anderen App zu suchen
  • Wenn Karten über den Hashwert des Textes identifiziert werden, frage ich mich, ob bei jeder Korrektur eines Tippfehlers der Wiederholungsverlauf der Karte verloren geht

  • Ich frage mich, ob ein spaced-repetition-basiertes soziales Netzwerk möglich wäre
    Wenn man Beiträge im Feed wie „zur Wiederholung vormerken“ markieren könnte, könnte das eine Art Retweet werden, durch den sich dauerhaft wertvolle Inhalte verbreiten

  • Ich arbeite an einem knowledge base + spaced repetition-Projekt
    Markdown-Dateien sind wirklich praktisch — man kann sie überall ansehen, mit Git versionieren und frei cross-linking betreiben
    Projektlink: https://github.com/odosui/mt

    • Das ist wirklich interessant. Ich lerne gerade ein wissenszentriertes Fach und habe nach einem Tool gesucht, mit dem ich direkt in meinen Notizen Flashcards erstellen und wiederholen kann
      Ich wollte lokale Notizen behalten und habe deshalb Cloud-basierte Lösungen vermieden, dabei aber entdeckt, dass es Tools gibt, die Markdown für Anki parsen
  • Wer Emacs benutzt, dem empfehle ich org-drill, ein plain-text-basiertes spaced-repetition-Tool

  • Ich habe eine Bibliothek namens Ankivalenz erstellt. Sie wandelt strukturiertes Markdown in Anki-Decks um
    Zum Beispiel kann ein hierarchischer Pfad wie Path: Solar System > Planets > Color in Karten enthalten sein, sodass Wiederholung mit Kontext möglich wird
    Normale Notizen und Karten können in derselben Markdown-Datei nebeneinander bestehen
    https://github.com/vangberg/ankivalenz/

  • Schade ist, dass andere SRS-Projekte die Import-Funktion aus Anki nicht richtig umsetzen
    Die meisten Nutzer haben bereits Tausende Karten in Anki und können deshalb nicht einfach wechseln
    Das Datenformat von Anki ist komplex, aber da es auf SQLite basiert, kann es geteilt werden

    • Ich habe selbst beim Entwickeln einer Flashcard-App die Anki-Importfunktion implementiert, und anfangs habe ich einfach nur Vorder- und Rückseite übernommen, wodurch es zu Datenverlust kam
      Erst als ich Ankis Notiz–Modell–Template-Struktur verstanden habe, wurde mir klar, wie ausgefeilt sie ist
      Wenn es ein textbasiertes teilbares Deck-Format gäbe, wäre Zusammenarbeit auf GitHub viel einfacher
      Wenn jede Notiz als einzelne Datei vorläge und eine eindeutige ID hätte, wäre auch die Verwaltung von Updates leicht
    • Viele Entwickler scheinen nicht zu wissen, dass Anki kürzlich auf Rust-Basis refaktoriert wurde
      Die Kernlogik ist jetzt als Rust-Crate ausgelagert, sodass man mit derselben DB relativ leicht alternative Frontends bauen kann
    • Ein SQL-Dump ist letztlich auch nur eine Textdatei, daher dürfte es nicht schwer sein, ihn auf GitHub zu teilen
  • Ich habe für die Dateneingabe schon einmal Google Sheets verwendet
    Wenn man jede Zeile per UUID eindeutig verwaltet, lässt sich auch bei Änderungen alles leicht nachverfolgen
    Auf Basis derselben Daten kann man mehrere Decks erzeugen, etwa Chinesisch Pinyin → Hanzi und Hanzi → Englisch
    Eine Oberfläche, die solche Tabellen mit einem Textformat als Backend verbindet, wäre wirklich großartig

    • Bei einem content-addressing-Ansatz scheint mir allerdings der Nachteil zu sein, dass Karten nur schwer bearbeitet werden können
  • Als jemand, der seit Langem spaced repetition nutzt, möchte ich ein paar Tipps teilen
    1️⃣ Man muss entscheiden, was wichtig ist. Wenn man aus jeder Kleinigkeit Karten macht, wiederholt man jeden Tag Hunderte davon
    2️⃣ Wichtige Konzepte sollten aus verschiedenen Karten bestehen, die das Verständnis aus mehreren Blickwinkeln prüfen
    3️⃣ Nach einer gewissen Zeit sollte man zu Karten zweiter Ordnung oder zur tatsächlichen Anwendung übergehen. Wenn man ein Konzept ein Jahr lang kein einziges Mal benutzt hat, ist es vielleicht gar nicht wichtig
    Unterm Strich ist spaced repetition ein sehr effizientes Lernwerkzeug, aber das größte Risiko ist eine falsche Priorisierung