Prof. Dr. Detlef Stern

Zettelstore 0.14

Die gute Nachricht für alle Nutzer des Zettelstore: Version 0.14 ist verfügbar. Dies gilt auch für die Bibliothek, um auf den Zettelstore zuzugreifen (a.k.a Zettelstore Client).

Was gibt es an relevanten Änderungen im nun 29. Release?

Gar nicht mal so viel. Das ist zum einen meinem Urlaub geschuldet und zum anderen der Notwendigkeit, einige Produktmerkmale zum Vorlesungsbeginn unterzubringen. Mit diesen Merkmalen sollen die Studierenden ab nächster Woche in dem Fach „Softwaretechnik und mobile Systeme“ praktisch arbeiten.

Gleich nach der Freigabe der Version 0.13 habe ich alles zum Thema JSON-Kodierung von Daten aus der API entfernt. Soweit, so angekündigt. Die Software wurde um grob ein Viertelgigabyte kleiner. Fun fact: die Nutzung des neuen Sprachübersetzers für Go hat noch einmal ein halbes Gigabyte gebracht.

Mir ging es eher weniger um den erfreulich verringerten Speicherverbrauch. Die Studierenden sollten erst gar nicht in Versuchung kommen, das JSON-Format zu nutzen, um es bei einem späteren Release wieder ausbauen zu müssen. Zum anderen besteht nun die Möglichkeit, den Zettelstore nach WASM zu übersetzen, wodurch er sogar im Browser selbst ausgeführt werden könnte. Einige Go-Implementierungen haben mit manchen Elementen von Go Probleme, namentlich mit der JSON-Kodierung und der dort verwendeten Metabeschreibung von Daten.

Die in der letzten Version eingeführten erweiterten Abfragemöglichkeiten enthielten noch einige Altlasten. Diese habe ich beseitigt und die Syntax der Abfrage vereinheitlicht.

Neu hinzugekommen sind sogenannte Schlagwortzettel (tag zettel). Das sind Zettel, die ein Schlagwort inhaltlich beschreiben sollen. Aus einer der Zettelkastenrunden der letzten Monate kam es zu einer entsprechenden Diskussion. Ich fand die Idee ganz gut, da ich mich selbst immer wieder fragte, was ich mir bei einem bestimmten Schlagwort eigentlich inhaltlich gedacht hatte. Schlagworte sind ja nichts anderes als selbst definierte Suchabfragen, bzw. eine nutzerdefinierte Indizierung für zukünftige Suchabfragen.

Eine andere Person war in den Zettelkastenrunden diesem Merkmal kritisch gegenüber eingestellt und meinte dies mit Strukturzetteln lösen zu können. Meine nun praktische Erfahrung kann dies nicht bestätigen. Schlagwortzettel sind wirklich hilfreich. Und ja, ich habe es schon mit Strukturzetteln probiert. Bei Strukturzetteln fehlt mir entweder die Metaebene und/oder die Möglichkeit direkt auf einen schlagwortspezifischen Strukturzettel zugreifen zu können.

Seitens der API war nichts zu tun. Schlagwortzettel sind Zettel, die das Schlagwort als Titel haben, mitsamt der Zettelrolle „tag“. Da reicht eine einfache Abfrage der Art title=TAG role:tag. Natürlich könnte es mehrere Zettel mit diesen Daten geben. Dann nehme ich den mit der höchsten Kennung.

Auf der Web-Oberfläche werden die Schlagwortzettel angezeigt, wenn in einer Suchabfrage Schlagworte angegeben sind. Aktuell ist das noch mittels obiger Abfrage realisiert. Das wird sich in der nächsten Version ändern. Wird ein Schlagwortzettel angezeigt, dann gibt es einen Verweis auf die Liste aller Zettel mit diesem Schlagwort. Dieses wurde mit der letzten größeren Neuerung dieser Version realisiert.

Jeder Zettel hat ein Metadatum role, dass viel besser als ein Schlagwort die Intention dieses Zettels. Interne Zettel des Zettelstores besitzen zum Beispiel die Rolle „configuration“. Für die eigene Arbeitsweise kann man sich selbst Werte festlegen. Ich nutze zum Beispiel die Rollen „inbox“ (für alles, was von außen mich erreicht), „idee“ (für eigene, unfertige Ideen), „material“ (für Materialien), „zettel“ (für vollständig formuliert und einsortierte Zettel) oder auch „struktur“ (für die schon angesprochenen Strukturzettel). Die Rollen „slide“ und „slideset“ verwendet der Zettel Presenter um daraus Präsentationsunterlagen (inkl. Handout) für meine Lehrveranstaltungen zu generieren. Ach ja, Schlagwortzettel haben die Rolle „tag“.

Die Neuerung besteht darin, dass man für jede Rolle die Web-Oberfläche an bestimmten Stellen anpassen kann. Aktuell sind es drei Stellen: im <head>-Bereich des HTML-Dokuments, in der Aktionszeile in der Zettel- und in der Info-Ansicht, sowie die Zusatzinformationen unterhalb der Aktionszeile in der Zettelansicht. Mit der Ergänzung von Informationen im <head>-Bereich wird der in Version 0.5 eingeführte Spezialzettel zur Ergänzung von rollenspezifischen CSS-Daten überflüssig.

Die Anpassung erfolgt mittels Sx-Code, also dem eingebauten LISP-Interpreter. Zur größeren Flexibilität und zur Strukturierung kann dieser Code auf mehrere Zettel aufgeteilt werden, die notwendigen Abhängigkeiten werden über die Vorgängerfunktion des Zettelstore spezifiziert. Synergie allerorten! Je nach Bedarf kann es in Zukunft noch weitere Stellen geben, an denen der HTML-Code für die Web-Oberfläche angepasst werden kann.

Anekdote am Rande: wie schon angedeutet, erstelle ich meine Vorlesungsunterlagen mit dem Zettelstore. Ein wenig nervte mich immer, dass die in den Metadaten angegebenen Folientitel nicht in der Zettelansicht sichtbar sind. Flugs habe ich zwei Sx-Funktionen erstellt, die dieses Problem lösten. Nun werden für Zettel mit den Rollen „slide“ und „slideset“ die entsprechenden Metadaten unterhalb der Aktionszeile angezeigt. Und wieder ist ein Klick weniger nötig.

Ansonsten wurden, wie üblich, viele kleine Fehlerchen beseitigt.

Was plane ich für die nächste Version? Schon angesprochen habe ich die Verbesserungen in der Arbeit mit Schlagwortzetteln. Es wird interne Änderungen geben. Die letzte Go-Version hat ein eigenen Logging-Paket, das nun mein eigenes ersetzen soll. Die ursprünglich für Version 0.14 geplanten Verbesserungen der Suchabfragen schiebe ich auf die kommende Version.

Eventuell gibt es auch gute Rückmeldungen meiner Studierenden. Da freue ich mich drauf, wie auch auf die eine oder andere Anregung aus dem Kreis der anderen Nutzer und Interessierten …