This week’s WSJ.com/AWSJ column is about the TiddlyWiki (here, when it appears Friday), which I reckon is a wonderful tool and a quiet but major leap forward for interfaces, outliners and general coolness. I had a chance to chat with some of the folk most closely involved in TiddlyWikis, but sadly couldn’t use much of their material directly, so here is some of the stuff that didn’t fit.
Last, but not least, Jeremy Ruston, the man who started it all.
Jeremy Ruston: Hi Jeremy
Loose Wire: hi jeremy, thanks for getting back to me…
Jeremy Ruston: no problem, hope it’s not too late wherever you are
Loose Wire: i’d like to hear from you about the history of this, how it works under the hood, what they’re used for and where it’s going…
Jeremy Ruston: sure, where to start
Jeremy Ruston: i was originally trying to do a personal site
Jeremy Ruston: kind of wanted to blog, but acknowledged that I’m not a great writer
Jeremy Ruston: (being more of a inventor/design/coder type)
Jeremy Ruston: so, wanted something that would let me do a partwork, gradually assembling a coherent picture of the work I’m interested in, and the stuff I’ve done
Jeremy Ruston: but I wanted it to be enough like a blog that people would recognise it as one
Jeremy Ruston: anyway, i started messing around with dhtml, for the first time in years
Jeremy Ruston: and realised that actually it might be a good enough way to implement some of the wiki ideas I’ve been thinking about for a long time
Jeremy Ruston: I did the first version which was very primitive and didn’t allow saving
Jeremy Ruston: which got a bit of attention, but everyone said ‘tsk, if only it allowed saving’
Jeremy Ruston: which of course, I knew was Totally Impossible for a mere HTML file
Jeremy Ruston: which turned out to be wrong…
Jeremy Ruston: oh, and I never did get around to doing the personal site I originally envisaged
Loose Wire: interesting. basically all the code that makes the TW happen is stored in the same file as the content, right? It’s all self-contained?
Jeremy Ruston: yeah, just one file with three main chunks: html to deliver the skeleton of the layout and the content itself; css for the appearance of elements and javascript for the behaviour
Jeremy Ruston: it’s really the opposite of what computer geeks consider conventional wisdom, which would be to separate stuff neatly
Jeremy Ruston: it’s kind of like if every Word document actually incorporated a copy of Microsoft Word itself
Jeremy Ruston: but in the crazy world of the web the application is shorter than the document
Loose Wire: it
Loose Wire: ‘s an interesting twist…
Jeremy Ruston: now there’s a couple of other projects that use the same approach, but I think TiddlyWiki was the first
Loose Wire: which projects are those?
Jeremy Ruston: is the one I was thinking of
Loose Wire: how hard was all this to do?
Jeremy Ruston: Hard, I guess, but it’s the kind of thing I enjoy 🙂
Jeremy Ruston: A lot of it is actually quite routine from a programming perspective, but some bits were ridiculously hard to get right
Jeremy Ruston: for example, getting it to display properly in Internet Explorer — Firefox is easy
Jeremy Ruston: also, the code to actually do the saving was pretty complex, and the code to handle wikification (what I call turning Wiki text into proper displayed text with links etc)
Jeremy Ruston: The great thing about the internet is that it’s a great resource for finding out more about the internet… there’s masses and masses of chunks and slivers of code out there to learn from
Jeremy Ruston: hopefully tiddlywiki is now something that other people are learning from
Loose Wire: i found it interesting, too, that other tiddlywikis sprang up — the GTD one, for example — and now have been folded into the original….
Jeremy Ruston: yeah, I’ve been astounded by the reaction from the developer community
Jeremy Ruston: or rather the way that tiddlywiki has formed it’s own developer community
Jeremy Ruston: there’s something eminently hackable about JavaScript, though
Loose Wire: do you see it as part of this ‘AJAX’ resurgence?
Jeremy Ruston: Slight aside about the previous point: 15 to 20 years ago, all computers came with a BASIC interpreter; the owner was expected to do a bit of programming, or at least tinker with other people’s programs. I felt it was a shame when that era ended, but it seems that the web has ushered in a new era of accessible, hackable, available programming tools
Jeremy Ruston: As to AJAX, yes, absolutely, I think that TiddlyWiki is one of the quintessential AJAX apps. And yet, perversely, it technically fails to meet the original criteria of AJAX because it doesn’t talk to a serverside. But I think that that is a shortcoming in the definition of AJAX…
Loose Wire: have you heard back from people about how they’re using TWs? any surprises?
Jeremy Ruston: yes, astonishment usually
Jeremy Ruston: 🙂
Jeremy Ruston: I’ve heard of people really stretching it: putting about 50 times more data into it than I’d ever bothered to test, for example
Loose Wire: those would be big files, no?
Jeremy Ruston: I think a lot of the people who are actually using TiddlyWiki (as opposed to hacking the code) don’t ever publish their stuff. A key feature of tiddlywiki for them is that it’s utterly private; you don’t have to trust any shady, fly-by-night dotcom with your data
Jeremy Ruston: so there’s a huge mass of ‘dark TiddlyWikis’ that we can’t see
Jeremy Ruston: but of the ones that I can see, I’m thrilled that academics have taken to it so well – have you seen Elise Springer’s site?
Loose Wire: no…
Jeremy Ruston: (yes, putting lots and lots and lots of text into it)
Jeremy Ruston: Jeremy Ruston: there’s also a site about religion:
Jeremy Ruston: which I think is interesting because it’s the sort of densely argued manifesto that works really well in tiddlywiki
Loose Wire: Elise’s site is beautiful…
Jeremy Ruston: Yeah, she’s really dedicated to getting it how she wants it, very impressive
Jeremy Ruston: This one is interesting too: it’s about Bolivian politics
Jeremy Ruston: One thing that was definitely a surprise was the translation activity. Volunteers have gone and done translations into German, French, Dutch, Bulgarian, Chinese (traditional and mandarin), Portuguese
Jeremy Ruston: and probably others I’ve forgotten
Loose Wire: excellent… any idea of the number of folk using TW now?
Jeremy Ruston: I think it’s impossible to measure in any sensible way; people only visit the site once to get a copy, and can then use it as often as they like without me being any the wiser
Jeremy Ruston: but it’s certainly tens of thousands I’d have thought
Loose Wire: one feature that particularly attracted me was the tagging thing. it really helps propel TW into another league…
Jeremy Ruston: Yeah, it was an obvious thing to add, and does really work well
Jeremy Ruston: also a good example of a feature that I’d envisaged but got implemented first by other people
Jeremy Ruston: But I don’t think it yet scratches the surface of what’s possible with tagging
Loose Wire: what do you imagine happening there?
Jeremy Ruston: being able to ‘twist’ on a tag that you’ve used to see things that other people have tagged the same way
Jeremy Ruston: that’s something that flickr and del.icio.us do today
Jeremy Ruston: TiddlyWiki needs multi-user features before it can do that
Loose Wire: yes… but i’ve always felt tags are just as useful to the individual as the group…
Jeremy Ruston: yes indeed
Loose Wire: TW is the first i’ve seen really using that. suddenly you have a very powerful way of organising and accessing stuff.
Loose Wire: it really puts to shame most other data organisers…
Jeremy Ruston: Thanks!
Jeremy Ruston: Well, I’d like to make it easier to navigate by tags
Jeremy Ruston: and search by them
Loose Wire: jonny was saying he is working on being able to select multiple tags…
Jeremy Ruston: oh cool, that will be interesting. I’m interested in extending that to more complex things (give me everything tagged ‘jonny’ and ‘jeremy’ but not tagged ‘football’)
Jeremy Ruston: I think that the challenge with those kinds of features is the ui
Loose Wire: that would be excellent..
Loose Wire: yes…
Jeremy Ruston: I’ve aimed to give tiddlywiki a liquid interface that’s as uncluttered as possible
Loose Wire: i’ve been juggling data for a project using a TW and already the ways to get related data is beyond any other program i’ve used.
Jeremy Ruston: it’s a challenge to keep these complex features out of the way but accessible and discoverable
Jeremy Ruston: hehe that’s excellent
Jeremy Ruston: what do you think of the search? I still find it way too slow, and keep wondering about making the search results popup as a submenu that you can select from
Loose Wire: i also started thinking about how one could turn blogs themselves into databases… many of us blog, but that stuff is not all that accessible once it’s blogged..
Loose Wire: (the search idea, i agree on)
Loose Wire: TW struck me as the intersection of publisher and database.
Loose Wire: i can’t think of any other program that fills that space.
Loose Wire: and yet now we are all publishers, we need it more than ever!
Jeremy Ruston: Yes, indeed, I like the counterpoint with blogging
Jeremy Ruston: blogging seems essentially ephemeral because individual posts are often so meaningless shorn of their context, while using tiddlywiki can lead to the production of a coherent body of work, something of lasting value
Jeremy Ruston: (sorry rambling)
Loose Wire: exactly. and blogging offered us different methods of navigation, and TWs are kind of bringing that home, to one’s own data too. indeed TW is an example of not really distinguishing between public and private, offline and online data.
Loose Wire: at least in the sense of the way it’s edited and collected.
Loose Wire: now i’m rambling too.
Jeremy Ruston: yes, I like that too
Loose Wire: 🙂
Loose Wire: i guess my wishlist would include making it easier to set up a TW — maybe a desktop shortcut — and an easier way to tweak the stylesheet…
Loose Wire: perhaps some tip bubbles…
Jeremy Ruston: yeah, there’s a sizeable percentage of ‘normal people’ who I see sit in front of it: they scroll it up and down, and don’t actually click on anything, and so completely miss the point…. Thought provoking for an interface designer
Loose Wire: anyone who has ever just wanted to save some stuff they found, or keep notes in the same place, would welcome TW…
Jeremy Ruston: you’re right of course. The hackers are very vocal so I tend to neglect the more ease-of-use oriented features…
Loose Wire: finally, where do you think it might go?
Jeremy Ruston: well, I hope that in 12 months time, I’m working on it full time, and offering a really nicely polished, free, version of the current single file thing, along with some probably more commercial expanded version with multiple users, real time collaboration, spell checking and all that good stuff
Jeremy Ruston: but if I’ve learned one thing over the last 12 months, it’s to put stuff out there and see what happens
Jeremy Ruston: so I guess I’ll keep doing that 🙂
Loose Wire: how scalable is it, do you think? does it hit a limit? can you get around that?
Jeremy Ruston: tiddlywiki itself doesn’t have any (serious) inherent limits; it’s just that browsers tend to explode if you push them too far
Jeremy Ruston: so, a 10MB tiddlywiki would probably kill internet explorer
Jeremy Ruston: but yes, these problems are all get-around-able
Jeremy Ruston: fun problems to solve, actually, generally
Loose Wire: cool… well, thanks for this jeremy.