learning to program since 1978

The Lenticulator

9th January 2022

The Lenticulator is a web toy that helps you print and fold eye-baffling illusions whereby one picture blends into another as the observer moves from one side to the other.

Take two photos, feed them into the app then print, score and fold. Nothing leaves your computer, and it is all open source

I used to make these 20 years ago very laboriously by slicing and dicing images in a graphics package, and have been meaning to make the app ever since.

This version is written in HTML, CSS and 80 lines of JavaScript (see the code on GitHub).

The BBC Micro at 40

2nd November 2021

I was invited by The National Museum of Computing to reminisce about the BBC Micro on the 40th anniversary of its release, as part of a series.

Interview with FLOSS Weekly Podcast

13th March 2021

I was a guest on Doc Searls' FLOSS Weekly podcast. We again ended up talking quite a lot of TiddlyWiki history but Doc and his co-host Jonathan were pretty good with their questions and so hopefully bought out some different angles.

Video Chat with Boris Mann, Fission

20th November 2020

Boris Mann kindly invited me to one of Fission's regular video chats. I was rather hoping to talk more about Fission's work, but we ended up focussed more on the history of TiddlyWiki, where it is now, and where it may be going.

Video Chat with Jeremy Ruston, Creator of TiddlyWiki - Fission Video Chat Oct 22, 2020 from Fission on Vimeo.

"Intertwingling the TiddlyWiki"

9th December 2018

I'm speaking with Joe Armstrong at CodeMesh 2018 on "Intertwingling the TiddlyWiki".

Here are some links to things we plan to reference in the talk:

Update: 9th December 2018

Here's the video:

Remembering FridgyWiki

16th November 2015

This was an experiment I made back in June 2005 (a year after starting work on TiddlyWiki; nine months since its release). It explores a similar area to Cecily, notably the idea of arranging tiddlers on a two dimensional plane, with position and size being used to convey relationships between them.

In Cecily, there are two separate interactions to adjust the size and position of a tiddler. In FridgyWiki I was exploring the idea of simplifying things so that the user can only drag to adjust the position of a tiddler, with its size being a property of the location on the plane.

In the demo, you can drag fridge magnets representing each tiddler around a black plane. As the magnets move to the right, they get smoothly smaller.

The hypothesis was that the user would arrange important items on the left, with less important items stacked up in columns towards the right. Perhaps the tiddlers would flow to the right as new items arrive at the left. I was also interested in the idea of non-linear maps, for example, a fish-eye-like area in the middle that shows tiddlers larger than around the edges.

The FridgyWiki demo can be found at

Hackability as a Human Right

28th September 2015

On Friday October 2nd, I'm due to speak at Wuthering Bytes.

Here are the slides

Update 14th July 2016

The video has now been posted:

Under Construction

2nd September 2015

Welcome to yet another incarnation of

This one is constructed with TiddlyWiki5 and is hosted on GitHub Pages with CloudFlare.

It replaces two earlier attempts:

Mimic: A JavaScript Serendipity Generator

15th September 2012

You can use this valuable tool to help brainstorming sessions, find names for your new startup, or for your own hilarious amusement. Follow in the footsteps of Brian Eno, David Bowie, and Luke Rhinehart and use randomness to stimulate your creativity.

Type or paste as much source text as you like into the text box, dial up the gibberish index and click the button. The text never leaves your browser, so you can safely use confidential or personal information.

Mimic can be found at

Introducing Cecily

2nd June 2008

I've been interested for a long time in combining a wiki with a zooming user interface. The idea is to lay out the pages of the wiki over an infinite 2D plane. The user can move them around and resize them, using size and position to convey relationships between items. As one moves between pages, the characteristic behaviour of a ZUI is to zoom out to reveal both the source and the target, and then zoom back down to the target.

I did early experiments in Visual Basic, Java, and JavaScript using canvas before the launch of CSS transforms made it possible to implement it much more easily. This version of Cecily launched at OpenTech 2008.

Cecily can be found at