Jocelyn Ireson-Paine

[ Blog | 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 ]


The Medium Wrecks the Message: Describing Artistic Style Using a Relational View of Art, The Polish Journal of Aesthetics, Issue 62 (Styles of Discourse), 3/2021.

Subscribe to my articles on art, meaning, maths, and cartoons. The introduction is here.

★ Mini-Patreon software in PHP. From the above link.


I am a software consultant. I specialise in R, WordPress, interactive educational websites, spreadsheet safety, and Prolog, although I have also worked on a variety of other languages and topics.

My R projects include a model of the UK economy, a prototype database of artistic techniques (see the two "Artistic Techniques Database" links above), and an animation generator. The longest project involved analysing clinical-trials data for Bandolier, the Oxford evidence-based medicine group run by Andrew Moore. I worked with them for seven years. 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. You can see a very nice reference from Andrew here.

R has its quirks, but it's versatile and equipped with excellent libraries for statistics, graphics, website creation, data validation and other tasks. As an experienced computer scientist with a good knowledge of programming-language theory, I can cope with the oddities, and I enjoy teaching it. If you'd like lessons, please contact me.

In WordPress, I've built several sites for local businesses. Some of these needed extensive PHP scripting, particularly to modify the behaviour of premium themes. I've also developed themes from scratch. One was for Bandolier, mentioned above, to make their WordPress blog match the rest of their site. Other jobs included coding a registration system for someone making antique home movies available to nominated family members and friends; and yet another was for a group setting up a barter-and-recycle site. For commercial reasons, I can't name them, but they wrote me a glowing reference.

For my work on interactive educational websites, spreadsheet safety, and Prolog, please see the sections following this one.

Miscellaneous 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 such as those in Wolvercote and Cutteslowe as well as private individuals, and have been on the finance team for the CWW Cooperative Trust.

Economics, distance learning, and interactive Web sites

A lot of my projects have involved interactive and educational Web sites. 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.

Category theory

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.

Making spreadsheets safer

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.

Artificial intelligence

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.

Other teaching

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.

Holographic reduced representations

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.

Dr Dobbs blog

Somniloquacity (cartoon)

Inside Job

Google Fish (cartoon)


Hear Me Croak (cartoon)

Cover Pictures

The Ills That Steel's not Heir To (cartoon)

SQL Jokes

Amazing Story, Amazing Cover

Bubbles (cartoon)

The Last Evolution

Non-Representational Art

SAnTa NAV (cartoon)

A Christmas Puzzle

How to Modularise a Spreadsheet

Plain English

How to Reveal Implicit Structure in Spreadsheets

Casting One's Bread (cartoon)

Plain Language

Greater and Lesser (cartoon)

The Ultimate Computer Story

On the Drawbacks of Modern Technology (cartoon)

Google Aren't Idle

Fearful Vista (cartoon)

In Silicon No One Can Hear You Scream

Googlewhacked (cartoon)

A History of Computing in 100 Objects

Eggsamining Mereology (cartoon)

Story of Your Life

Gonna Sit Right Down ... (cartoon)

Green Magic

Døt Døt Dæsh (cartoon)

The Processes that Count

How to Survive as a High-Energy Physics Sysadmin (cartoon)

When Sysadmins Ruled the Earth

Wild Flowers (cartoon)

Frivolous Uses of Time Travel (2): All You Zombies

Little White Lies (cartoon)

The Only Valid Measurement of Code Quality

A4Billion (cartoon)

Excel's Missing Ha'p'orth

R.I.P. (cartoon)

Petter's Computer Science Songbook

Alien Imperative (cartoon)

How to Build a Web Page in 25 Steps

Charity (cartoon)

On the Properties of a Sonic Screwdriver

Mis-Guided (cartoon)

Two Electrons Short of an Atom

Language Gap (cartoon)

What Google Tells Me People Want

Secrets (cartoon)

How to Eliminate Boredom at Work

Getting Tough (cartoon)

Why We Call Them "Lion Food"

Proverbs in Pictures I: Don't Count Your Chickens Before They're Hatched (cartoon)

Recaptioned (with cartoons)

Good Weather for Ducks (cartoon)

Unicode and the Shavian Alphabet II

Unexpected News Via Google

Accounting Error

Waiting for Moore (cartoon)

Where I Want to Move to

Reprogramming Aibo (cartoon)

Sony Aibo Images

Sweet Words (cartoon)

Doing Owt wi' Nowt

Bottles (cartoon)

Convergence to a Pint

Unicode and the Shavian Alphabet II

No Earthly Power (cartoon)

MS Fnd in a Lbry

How NOT to Use Excel

Mr. Excel (cartoon)

Unicode and the Shavian Alphabet

The History and Benefits of Ada

Labels (cartoon)

The End-User and the Expert Artisan

Demonstrating a Mini-Compiler with a Stack-Machine Program that Calculates Factorials

When the Careless Killer Robots Come

When the Clumsy Killer Robots Come

When the Cultured Killer Robots Come

The PowerPoint Sketch

Google's Window Tax

Come From

LiveHTTPHeaders for Tracing URLs

Dress Code

What Might Category Theory do for Artificial Intelligence and Cognitive Science?

An Online Budget Questionnaire, JavaCC, and the Three Ways of Putting Together

The Hole in my Budget

Hello Dear Leader

Operating Systems as Beers

Windows Factory Settings

Self-Depeditation with PL/I

Microsoft Announces Improved Blue Screen of Death

"Too many errors on one line (make fewer)"

Stack Machines, Expression Evaluation, and the Magic of Reverse Polish

Nature's Futures

Christoph Lehner's Tree Drawing Program for Prolog

GRIPS: a Preprocessor for Functional Notation in Prolog

How to Call SWI-Prolog from PHP 5

How to Get Tomorrow's Date in Perl

Snobol Patterns in Prolog IV: bal, and the Use of Failure to Diagnose Patterns

Associative Programming and Snobol's Unusual Indirect-Referencing Operator

Marc Stiegler's Gentle Seduction

Snobol Patterns in Prolog III: Sharing Code with Higher-Order Programming

Snobol Patterns in Prolog II: Span with Count

Arbno, the Cursor, and Snobol Patterns in Prolog

More Technonecrophilia with Snobol One-Liners

Programs That Transform Their Own Source Code; or: the Snobol Foot Joke

More New Year's Resolutions

What We Did Fifty Years Ago

To Prove Father Christmas Exists

John Fremlin's Portable Version of Jess Johnson's Joke Generator in Lisp

Computer Science Revues at Cornell's Upson Hall

Jess Johnson's Joke Generator in Lisp

One Sum He's Owed, By Any Road


Artificial Intelligence Meets Natural Stupidity

The Life and Wisdom of Father Aloysius Hacker

Office of the Future Past

How to Avoid Overpriced Science Journals

Hair Today, ...


The Curse of the Thinking Classes (cartoon)

And No Play (cartoon)

Ode on the Automation of Imbecility

The Usefulness of Mutant Code

The Usefulness of Broken Glasses

Escher's Edict

Rhetorical Initiative II: animating Reagan

Rhetorical Initiative I

Prolog as a Text-Hacking Language

Heroes and Differences

Captioned (with cartoons)

Primed (cartoon)

I Tweet, You're a Twit, He's a Twat (cartoon)

Bound to be Called (cartoon)

Fatal Addition (with cartoon)

Defining Excel Functions without Visual Basic: a compiler that converts Excel function definition sheets to VBA

An Ounce of Image (with cartoon)

Frivolous Uses of Time Travel (1)

Where am I?

A Conversation with Einstein's Brain

Ram Shift


The European Spreadsheet Risks Interest Group Conference is in Paris Next Week


Ο Μαθητής Μαθαίνει το Μαθηματικά; or: You Say Math, I Say Maths


Google and the Priests

Crystal Nights

Thought for the Day

Artificial Intelligence Lightbulb Jokes

Documenting Spreadsheets with Pseudo-Code: an Exercise with Cash-Flow and Loans

Applied Mathematics Kits

An Arc Through AI Space

Poem on the Determination of Consciousness

Consciousness is not a Window

How to Generate a Tree-Building Parser in Java using JJTree

Eternal Flame

Flow Charts

Don't Explain Maths; it's Easier to Explain how Hard it is to Explain

New Hope for the Dead

Springy Applet Duck

The Consultant

How to Document a Spreadsheet: an Exercise with Cash-Flow and Loans

Yet More XML: with Prolog

Idiot Script

On Handling the Data

Gliders, Hasslers, and the Toadsucker: Writing and Explaining a Structured Excel Life Game

Poplog, continuations, Eliza, AI education, and Prolog


Thought for the Day

The Prolog Lightbulb Joke

An Excel Bonus


Salami with Wine

Salami in Oil

AI Phone Home (cartoon)

The Spreadsheet Parts Repository for Excel and Google Spreadsheets (with cartoon)

Filtering the Inauguration (cartoon)

Intractability (cartoon)

Scenes from a New Depression: Number 27 (cartoon)

Happy New Year (cartoon)

Why I Want to be Transhuman

Drawn by TAB for TiBS

Trials and tribulations: measuring drug efficacy in clinical trials, plotting graphs in Java with gnuplot, and reading Excel with JExcelAPI

The Compressibility of Useful Information

The Incompressibility of Useless Information

Old Soldiers

The Dog Ate My Homework

Problem Solved

Piled Higher and Deeper

Refer to Drawer

Installing and Using Skippy

A Plea to the Future

Coding with Dinosaurs


Famous First Words

Tipping the Spherical Cow

When Bankers Only MOVEd

Choosing Easily Distinguished Colours with ColorBrewer

B&D with Lady Lovelace

Pestilence Goes Solo

Category Theory Interactive Demonstration and Text Adventure

Binary Holographic Reduced Representations in SWI-Prolog

Through the Toilet-Roll Tube

The New Hacker's Dictionary

Category Theory and the Interesting Truths

Good Versus Great

Finding the Best Metaphors will be the Work of a Generation

The Excel Monkey

Category Theory

Spreadsheet Humour

Which Spreadsheet Components Would You Like to See?

Three Men in a Bar Found a Spreadsheet Society

Entrapping Minnows in the Jar with PL/1

((What ((is) with (all)) of (the) ()s?) Hmmm?)

Lightning or Line Noise?


Neural Net Urban Legends

Spreadsheet Components, Google Spreadsheets, and Code Reuse

Listless Haiku

How to Waste a PhD


Earth Falls Toward The Sun And Everybody Dies - A science-fiction plot-generator in Excel

I C BB 2 E

Early Calls

[ Belgium, Netherlands, Poland... 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 Merovingian page ]
[ Dougal Lee's Richard Head and the Bomb at SPC ]

Jocelyn Ireson-Paine
1st January 2020