John's computing index



My PhD thesis


On the whole, computer-related things are something that I've done rather than written about (although I do document what I've done).

My research background is in programming languages, in particular, reflective systems, that is, systems which can examine and modify themselves. In my PhD, I constructed a system in which this could be done not only for an infinite stack of levels of definition, but also for an infinite stack of infinite stacks... and all this in the context of mixed-language programming systems.

Connected with this is an interest in types and representation. I am trying to improve my mathematical background in order to work on this properly.

Connected with both of these is an interest in using the right programming language for the task in hand; this leads naturally to mixed-language programming, which leads back to the idea of "language" as a data-type, and to languages as examinable and modifiable values.

One of the things I like most in computing is the meta-circular interpreter, an idea often seen in connection with my favourite programming language, Lisp.

One of the things I like least in computing is the unthinking acceptance of "object-oriented" programming. This is in practice a mix of persistence and type dispatch; the latter is of great interest to me; the former seems fairly mundane (although in fact it is an interesting research area in its own right). In particular, I think Java is a real horror.

As well as being a professional programmer, for many years I did small-group or individual tuition of students at Cambridge University.

For the practice of computing, I do almost everything through a large and highly-customized Emacs. I have RSI: all the chording in Emacs may be partly to blame, but I have now reprogrammed it to help rather than hinder, in the form of extensive elisp for handsfree operation.

I've been around just long enough to remember the ASR-33 teletypes... and so was pleased when my brother acquired one for his CyberCafé; it has now sat around in my house awaiting restoration for a while, and I'm just beginning to get going on that.

Unix-style systems are my operating system of choice; their "small tools" philosophy suits me well. I run a FreeBSD system at home, and am beginning to re-awaken my old knowledge of how to run Unix systems.

I've noticed there are two main types of software developers.

I have definite (and developing) views on the user interface between computers and people.

However, the mechanics of communicating with the computer are not the only way that it can influence us; I have started to think about the spirituality of computer programming.

Nokia 9500



The Rubber Plant Effect

Interpreters and interpretation



The User Interface


Handsfree Emacs


ASR33 restoration

Contact me
Last modified: Sun Oct 21 23:02:46 IST 2007 [Home]