The newest pages in the codewiki are:


In 2000, I patched script to dump out timing information, which let typescripts be replayed with realistic typing and output delays by a scriptreplay command I whipped up.

This was not a unique idea; Anthony Towns had some code to do something similar. And four months later, Satoru Takabayashi created ttyrec which does much the same. Of screenreplay, he says:

A friend of mine told me that Mr. Joey Hess implemented the same thing. If I had only known that earlier, I would have never reinvented the wheel...

In the end, ttyrec became the go-to tool for this purpose. Probably because it includes all the information in a single file, rather than the two files script uses (one for the terminal output and the other that I added for the timings)

In any case, it's common now to record terminal sessions and play them back in real time. One of the best known uses is by for replay and live watching of games.

I've had nothing to do with scriptreplay since I wrote it. Others have maintained it since. I tend to use ttyrec more myself, and have made a number of improvements to it, some of which have been included in the Debian package, but none of which seem to have gotten back to upstream as of yet. A number of my other patches to ttyrec, including using inotify to improve live playback of ttyrecord, are languishing in a git repository.


Keysafe securely backs up a gpg secret key or other short secret to the cloud.

This is not intended for storing Debian Developer keys that yield root on ten million systems. It's about making it possible for users to use gpg who currently don't, and who would find it too hard to use paperkey to back up and restore their key as they reinstall their laptop.


Haskell library to let multiple threads and external processes concurrently output to the console, without it getting all garbled up.

Built on top of that is a way of defining multiple output regions, which are automatically laid out on the screen and can be individually updated by concurrent threads. Can be used for progress displays etc.

concurrent-output on Hackage



Used by: git-annex propellor etc