Blog: TiddlyWiki en de herwaardering van JavaScript

Woensdag 28 november 2012, 12:37

Het is niet eens zo lang geleden dat het volledig blokkeren van JavaScript je voor heel wat hoofdpijn behoedde. JavaScript werd enkel gebruikt voor irritante prullaria, zoals een sliert van sterretjes die de muiscursor achterna vlogen, en daarbij de volledige processorcapaciteit in beslag namen. Gelukkig is de toestand tegenwoordig heel wat beter. AJAX-technologieën zijn onmisbaar voor de web 2.0 ervaring. Google Maps of OpenLayers bieden eindeloze mogelijkheden voor het weergeven van kaarten. Bovendien zijn er bijzonder nuttige JavaScript-bibliotheken zoals jQuery, die het veel eenvoudiger maken om state-of-the-art JavaScript toepassingen te ontwikkelen. Niemand die er nu nog aan zou denken om JavaScript uit te schakelen in zijn browser.

Een prachtig voorbeeld van de kracht van JavaScript, dat ik pas ontdekt heb, is TiddlyWiki. Het is een volledige wiki, die helemaal in een enkel HTML document past. Artikels (zogenaamde tiddlers), wikilinks, markup, tags, themes, plugins, zoekfunctie; al dat enkel met HTML, JavaScript en CSS! Je kunt de hele wiki als e-mailbijlage versturen of in Dropbox opslaan. Je kan de wiki zonder enige installatie op elke computer met een recente browser bekijken. Alleen voor het opslaan van de wiki kunnen de veiligheidsinstelling van sommige browsers moeilijk doen. Ik moest in Firefox de security.fileuri.strict_origin_policy instelling in about:config op false zetten, om het opslaan te doen werken. (Update: dit trucje werkt blijkbaar niet met elke versie van Firefox. Als het niet werkt, dan kan je de TiddlyFox extensie installeren. Tip: installeer de recentste versie van Github, zodat niet elke keer dezelfde waarschuwing getoond wordt.)

Omdat de wiki niet server-gebaseerd is, kan je er natuurlijk niet met verschillende personen tegelijk aan schrijven. TiddlyWiki is dus enkel geschikt voor documenten die slechts één beheerder hebben. Bijvoorbeeld, als web secreraty van de Hiking Club verzamel ik nu alle notities en documentatie over de website in een TiddlyWiki, die ik dan volgend jaar aan de volgende web sec zal doorgeven. Ook voor mezelf heb ik al verschillende TiddlyWiki's gecreëerd. Eentje met nota's over films die ik gezien heb. Een andere is een persoonlijke kennisdatabank over computerzaken. Voordien creëerde ik steeds een bladwijzer als ik ergens op een forum of in een online handboek de oplossing had gevonden voor een bepaald programmeer- of ander computerprobleem. Het op orde houden van die bladwijzers was een nachtmerrie, en inmiddels zijn een aanzienlijk aantal van die links al dood, zodat de informatie die ik wilde bewaren verdwenen is. Het loggen van alle oplossingen in een TiddlyWiki is iets meer werk dan het maken van een bladwijzer, maar op lange termijn zal het mij heel wat miserie besparen.

Omdat de hele wiki met JavaScript werkt, kan je ook gezellig aan het hacken gaan. Bijvoorbeeld, normaal worden van woorden met en mix van hoofdletters en kleine letters automatisch links gemaakt, tenzij je er een tilde voor zet. Maar ik wil niet de hele tijd ~JavaScript en ~MySQL schrijven. Er is een plugin die dat oplost, maar die biedt een hoop nieuwe instellingen die ik niet nodig heb, en is dus wat overkill. Maar de broncode van de plugin kan worden uitgedund tot slechts één lijn die het nodige doet:

Tiddler.prototype.autoLinkWikiWords = function() { return false; }

Plaats het in een tiddler met de tag systemConfig en klaar is kees. Zo elegant! Voor het zelf schrijven van JavaScript-plugins schiet de documentatie van TiddlyWiki soms helaas een beetje tekort, maar voor zo'n problemen is er natuurlijk Firebug.

Icons from Flaticon.