Based in York (England), I act as a consultant and systems programmer (Terzarima Systems). Typical work includes device and protocol drivers, other kernel work, compiler porting and construction, distributed systems design and implementation, and embedded systems. I have also been involved in getting old, undocumented commercial applications software running correctly on newer platforms.
My computing interests include compilers, operating systems, distributed and embedded systems, networks, multimedia, and related areas; the overarching theme is minimalism.
I am an enthusiastic user of Plan 9. You can download the Plan 9 distribution as open source. It is portable, and the platform-dependent surface is small. It runs on ARM, x86, AMD64, and others.
I also help support and distribute the Inferno® distributed operating system, which is also open source.
The Inferno and Plan 9 distributions include the source code for two interesting systems and supporting commands, showing quality, much novelty, and the application of goodly and wholesome design and programming doctrine. Plan 9 runs native (on the bare hardware) on a few platforms including x86. Inferno is particularly interesting though, because it runs not just native (where it takes over the bare hardware), but hosted as an application under another operating system such as Linux or Windows, but where it still presents the same Inferno interface to its own applications. That allows you to experiment with some of the ideas in Inferno (often ideas derived from Plan 9) without changing the rest of your environment.
I use a Plan 9 network at home, which sits in the loft, and a similar network at work that provides various services on the company network. The programming environment Plan 9 provides in Acme is much appreciated. Plan 9 and Inferno work well together.
From my previous experience at the University of York,
I have some interest in the practical application of Formal Methods:
making them useful and usable by intelligent non-experts in much the same way as YACC does for parsing. I no longer attempt to specify things in Z, but I find Holzmann's Promela language and spin verifier extremely effective in developing and checking concurrent programs and systems.
Several years ago I looked at theory and practice applied to XML. I did a little file server in Limbo for Inferno that represented structured data (presented as XML documents) in file system form, so that one could navigate and access subcomponents as files and directories.
Then I worked on security, using SDSI/SPKI, in which authentication and authorisation data is represented as Lisp-like S-expressions. Underlying SDSI and SPKI is a simple logic of authentication (authorisation) and an approach to naming that works well and quite naturally in widely distributed systems with many domains of authority. Unlike the usual X.509 fiasco.
During GSoC 2007, I acted as mentor for a summer project to extend my SDSI/SPKI Inferno code. The results are being added to the main Inferno distribution. As well as that one, I was mentor for two other projects: one to implement a variant of venti for Inferno, and a native port of Inferno to the Nintendo DS.
I have got a few publications (buried amongst internal reports from my old department!). There are several more recent ones I have not yet added.
Past programming work includes: