[ Software consultancy | Economics, distance learning, and interactive Web sites | Research | Category theory | Making spreadsheets safer | Prolog | Artificial intelligence | Other teaching | Holographic reduced representations | Writing | Publications | Free software | Contact ]
In my latest projects, I'm using various tools, mainly WordPress, to build Web sites for local businesses. I've written about some of these projects in my blog.
Before that, I used Drupal to build a new Web site for Applied Development Research Solutions on which their customers could run economic models. I also worked with Bandolier, the Oxford evidence-based medicine group run by Andrew Moore, to analyse clinical-trials data using R. I've worked with them for seven years, and our results have been written up in a lot of papers, one of the latest being "Faster, higher, stronger?" This shows how the speed of pain-relief drugs is related to their efficacy, something very useful for doctors to know. Others are listed here.
Earlier projects include extending Moodle Web services for Oxford Study Courses and Triple-A Learning; writing Visual Basic routines and spreadsheets for International Baccalaureate teachers to record their students' progress in; and making Excel controllable from Web servers for EASA Software. I also do I.T. for community organisations in Wolvercote and Cutteslowe, and am on the finance team for the CWW Cooperative Trust.
A lot of my projects have involved interactive and educational Web sites, the Drupal one for ADRS being the latest. This began when I worked with Graham Stark at the Institute for Fiscal Studies to write Be Your Own Chancellor, a program that ran over the Web and allowed users to act as Chancellor of the Exchequer. They could change taxes and benefits and see how this would affect growth, unemployment, and other economic variables. The BBC took this up, and for several years, we put up a version on their Budget Day page, reprogramming it rather hastily during the Chancellor's speech to reflect his policy changes. We also did Budget Ready Reckoner, into which users typed their income and expenditure to see how the Budget would affect their finances.
Since then, I've collaborated with Graham as part of his Virtual Worlds group to put other models onto the Web. These are: Virtual Economy and the biz/ed models; Darts, a model for the Distributional Analysis of the Russian tax and transfer system; an affordability model for the Office of the Scottish Charities Regulator; and Mefisto, a Flemish tax and benefits microsimulation model.
Entirely outside economics, I've used this Web programming experience to make demonstrations that help students learn category theory. This is an abstract but very useful branch of mathematics. As one writer has said, if maths exists to make science and technology easy, category theory exists to make maths easy. It helps one formulate problems, has lots of applications in computer science, and was the foundation of my spreadsheet research mentioned below, particularly that on making Excel modular. Much of this was inspired by Joseph Goguen and his OBJ family of languages. Have a look at my demonstrations of category theory for students and of Goguen's sheaf semantics of concurrent interacting objects. How they work is explained in Graphical Category Theory Demonstrations, a thread in the n-Category Café blog. I've also written some thoughts on how category theory might help cognitive science and artificial intelligence.
As I mentioned, several of my projects have been about writing spreadsheets, sometimes with Visual Basic. But spreadsheets are not safe! My interest in category theory inspired me to work out a way to modularise Excel — and other spreadsheet systems such as Google Sheets — so that spreadsheet developers could build complete spreadsheets from pieces which can be written, tested, debugged, and documented independently of one another. As part of this, I've created a language called Excelsior; a compiler which generates spreadsheets from Excelsior programs; and a decompiler which makes spreadsheets more readable by translating them into Excelsior. Spreadsheet Components, Google Spreadsheets, and Code Reuse.
The category-theory demonstrations and my spreadsheet software are both written in Prolog. This is a language I've used a lot, particularly Jan Wielemaker's SWI-Prolog. I've taught it commercially and academically, and have written compilers and interpreters for Prolog, as well as expert systems and other software in it. Articles I've written about the language include Why Use Prolog?; The Prolog Lightbulb Joke; an introduction to Prolog for mathematicians; How to Call SWI-Prolog from PHP 5; and the articles on implementing Snobol patterns in Prolog linked from my list of Dobbs blog postings. Two fun demonstrations are this SF plot generator (the origin of the Excel one above) and Traveller, a little game where the student programs robot vehicles to buy and sell goods from shops arranged round a board.
I used to teach artificial intelligence at the Oxford University Department of Experimental Psychology. For the practicals, in order to get novice students doing interesting things quickly, I provided them with microworlds containing A.I. agents that they could experiment with and modify. Some of this is written up in Using Java and the Web as a front-end to an agent-based Artificial Intelligence course. My practical notes show examples designed to demonstrate "classical" A.I., and the difference between it and the so-called nouvelle A.I. approach.
I have also taught computer science for Cherwell College and The Oxford Institute. My job for the latter was to broaden students' horizons. I showed them, for example, how rotation matrices are used in graphics — and in relativity. Here are some links and notes concerning Python, and some simple Python functions. Here are notes on Python functions as first-class values that I wrote to introduce students to functional progamming. And here is a Pyret program that animates one of my cartoons.
These are an ingenious method for storing structured data in high-dimensional vectors. I have written a Prolog implementation of holographic reduced representations. Also, here are some suggestions about the use of category theory for elucidating what holographic reduced representations are really about.
From November 2004 to July 2006, I wrote an AI Newsletter for Dr Dobbs. In January 2006, I did a special issue on the 50th Anniversary of Artificial Intelligence. For the complete set, please visit my AI Newsletter index page. Amongst these, you will find: two AI Alphabets; the artificial life of Karl Sims; programming the Aibo, World Wide Mind, and Ronald Reagan; why Microsoft was really created; and those disembodied rat neurons that, somewhere in Florida, dream of flying a fighter jet.
Moving to less technical matters, I've made many happy visits to the Department of Informatics and Department of Economics at the University of Minho in Braga in Portugal. On my Imagens de Braga page, you can see what Braga looks like. While there, I enjoyed Interring the Cat. (I was pleased to find a copy of that article in RAIO-X, the magazine of the University of Minho's maths and computation group, edited by Alberto Simões. Thanks Alberto!) As well as Portuguese academic rituals, I've written about Beating the Bounds, what it is like to be foreign, why object-oriented programming is philosophically defective, e-learning (an interview I did for the Greek X-RAM magazine), unrolling the loop in the primordial soup, how to use the JJTree parser-generator, or economics on the Internet.
Google Fish (cartoon)
Hear Me Croak (cartoon)
The Ills That Steel's not Heir To (cartoon)
SAnTa NAV (cartoon)
Casting One's Bread (cartoon)
Greater and Lesser (cartoon)
On the Drawbacks of Modern Technology (cartoon)
Fearful Vista (cartoon)
Eggsamining Mereology (cartoon)
Gonna Sit Right Down ... (cartoon)
Døt Døt Dæsh (cartoon)
Wild Flowers (cartoon)
Little White Lies (cartoon)
Alien Imperative (cartoon)
Language Gap (cartoon)
Getting Tough (cartoon)
Recaptioned (with cartoons)
Good Weather for Ducks (cartoon)
Waiting for Moore (cartoon)
Reprogramming Aibo (cartoon)
Sweet Words (cartoon)
No Earthly Power (cartoon)
Mr. Excel (cartoon)
The Curse of the Thinking Classes (cartoon)
And No Play (cartoon)
Captioned (with cartoons)
I Tweet, You're a Twit, He's a Twat (cartoon)
Bound to be Called (cartoon)
Fatal Addition (with cartoon)
An Ounce of Image (with cartoon)
AI Phone Home (cartoon)
Filtering the Inauguration (cartoon)
Scenes from a New Depression: Number 27 (cartoon)
Happy New Year (cartoon)
[ Belgium, Netherlands,
computing ... some jokes
[ MS-DOS, bureaucracies, APL, ... some quotes ]
[ Fortran, breweries, ants, ... some verses ]
[ The Excelsior Dialogues | Wharf House quotes ]
[ From Portugal, and also Greece, Holland, Romania, and Kidlington and Gosford gym, ... some recipes ]
[ From Romania, Bulgaria, Portugal, ... some photos | Imagens de Braga | Oxford Town Criers' Competition 2012 ]
[ Matt Carroll's
[ Dougal Lee's Richard Head and the Bomb at SPC ]