TiddlyWiki

I’m infatuated with TiddlyWiki again. I’ve tried it a few times over the years, but it’s never stuck. One reason was that TiddlyWiki is a single, self-contained html file, and Safari has trouble saving itself to the file system. In order to save the thing I had to basically do a “Save As…” each time. Too much friction there.

Another snag has been that it’s kind of weird. Not weird in a bad way, but weird in a ‘what do I do with this thing?’ way.

A week or so ago I decided to dive back in. The first thing I learned is that TiddlyWiki can be run as a Node app. This means that each “tiddler” is stored separately as a plain text file.

So something like:

1
2
3
npm install -g tiddlywiki
tiddlywiki mywiki --init server
tiddlywiki mywiki --server

Visited http://127.0.0.1:8080/ in a browser and I was off and running. That solved the Safari problem. It also makes it possible to edit the wiki using whatever my favorite text editor is this week, if I were so inclined.

Getting over the strangeness of TiddlyWiki has been a matter of jumping in and using it. I’ve been thinking of TiddlyWiki as a Zettelkasten1, and each tiddler as a “zettel”. This has helped frame things in a way that makes sense to me. Each tiddler represents a single topic or thought or idea.

I’m not sure how far I’d take TiddlyWiki as a Zettelkastan, though. If I were thinking of building a long-term Zettelkastan, I’d probably use something like The Archive.

The other thing I’m learning is that TiddlyWiki is more powerful than a casual look would indicate. Macros, plugins, filters, etc. allow all sorts of custom behavior. I’ve only scratched the surface.

So for fun, I’m occasionally entering stuff in a local wiki, saving the file, and publishing the result at http://wiki.baty.net/. I do this with a small Makefile that looks something like this2

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
PUBLIC_DIR=output/
SERVER_HOST=static.baty.net
SERVER_DIR=/home/jbaty/apps/wiki
TARGET=Static

deploy: commit push
	@echo "\033[0;32mDeploying updates to $(TARGET)...\033[0m"
	mv ~/Downloads/Jack\ Baty\'s\ Wiki.html ~/Downloads/tiddlywiki.html
	rsync -v -rz --checksum --delete --no-perms ~/Downloads/tiddlywiki.html $(SERVER_HOST):$(SERVER_DIR)


build: clean

	@echo "\033[0;32mBuilding site...\033[0m"
	tiddlywiki ./ --render "[!is[system]]" "[encodeuricomponent[]addprefix[output/]addsuffix[.html]]"

commit:
	git add -A
	git commit -m "Build wiki `date`"

push:
	git push origin master

clean:
	rm -rf $(PUBLIC_DIR)

.FORCE:

TiddlyWiki is fun to play with, but I don’t know yet whether I’ll ever use it consistently. So far it feels like I’m using it to write a blog, and the last thing I need is another blog. Still, it has potential.


  1. Luhmann’s Zettelkasten M. Kuen, 2007 ↩︎

  2. I haven’t figured out the build portion yet. ↩︎