Jocelyn Ireson-Paine
07768 534091
Jocelyn's Cartoons on Facebook
@JocelynCartoons on Twitter

[ Cartoons | Using psychology to improve drawing | Blogging | Computer consultancy | Safe spreadsheets fast with Excelsior | Modular spreadsheets and the Spreadsheet Parts Repository | Category theory | Economics and distance learning on the Web | Algebraic Web specification and other languages | Prolog | Artificial Intelligence | Holographic reduced representations | Writing | Photos | Recipes | Unusual clothes | Dialogues and quotes | Publications | Free software ]


The Semantics of Line Drawings. Talk given to Project Thales in Athens on July 3rd.


I draw cartoons, and sell them as cards, prints, and mugs. Please go to Jocelyn's Cartoons at .

Art Science: using psychology to improve drawing

Some ideas on using psychology to help artists draw. Comments and help welcome.


I used to blog for the Dr Dobbs computer magazine. An index to my postings there can be found here and also down the right-hand column of this page. The postings include the technical cartoons linked back from Somniloquacity. I also have a short blog about spreadsheet safety.

Computer consultancy

I consult on spreadsheets (including Excel macros and Visual Basic for Applications), programming, Web development, data conversion, and writing — please see my Spreadsheet Factory page at .

Safe spreadsheets fast: generating and reverse-engineering them with Excelsior

Do you need, quickly and reliably, to make different versions of a spreadsheet, say by resizing it or changing its layout? My Excelsior program may help. With it, you can write spreadsheets as programs in a language that uses meaningful identifiers rather than A1-style cell names, then compile them into Excel or Google Spreadsheets.

Excelsior separates layout from calculation, so you can arrange the same formulae in many different ways just by changing a few "layout" statements.

Because of the meaningful identifiers, Excelsior programs are easy to read; and with Literate Excelsior, you can list your programs as nicely formatted Web pages. Considering how badly documented spreadsheets are, this is important. Papers about Excelsior, plus demonstrations and example programs, are linked from my Excelsior page. You can buy

I am on the programme committee of the European Spreadsheet Risks Group.

Modular spreadsheets and the Spreadsheet Parts Repository

Excelsior is modular: you can store modules in different files, then include them in your program. I also have software for decompiling or reverse-engineering spreadsheets into Excelsior modules. Together, these let you share code between spreadsheets, something impossible in plain Excel.

Taking this idea further, I have set up a Spreadsheet Parts Repository, from which you can download calculations you'd find hard to program yourself. Please see that page for more info, including demonstrations with Excel and Google Spreadsheets, and the contents list.

Category Theory

Still on the technical side, my inspiration for Excelsior came from a branch of mathematics called category theory; and from Joseph Goguen's sheaf semantics, which uses category theory to model systems of interacting objects. I put some Web-based category theory demonstrations on my server: see also my n-Category Café thread about Graphical Category Theory Demonstrations. I am also interested in applying category theory to analogical problem solving and to machine learning. I've written a little about this in Generalisation is an adjunction; and in an n-Category Café posting about the benefits of category theory for cognitive science and Artificial Intelligence. That posting is in several sections, broken up by readers' comments, so this copy may be easier to read. I have some experiments in mechanising sheaf semantics, which I call System Limit Programming.

Economics and distance learning on the Web

As well as the category theory demonstrations, I've worked on a variety of Web-based interactives. The biggest was Virtual Economy, a simulation for teaching economics over the Web. We put up versions of this on BBC News Online for Budget Day, together with a JavaScript Budget Budget Calculator. I worked with the Institute for Fiscal Studies and am part of the Virtual Worlds Group.

Here's an early article on how we connected the models to the Web, and here is lots of technical information on VE.

I've also implemented the spreadsheet-based economic simulations on the biz/ed Virtual Learning Arcade. This is how we did it.

I've also played with generating news stories and diaries from economic forecasts. Here are some experiments. How does the story-generator work? It's described here.

Algebraic Web specification and other languages

Or you could read about Algebraic Web Specification.

Other attempts, of a quite different nature, at building tools for authoring interactive Web pages are Web-O-Matic (based on sheaf semantics) and WSM (based on the notion of Web pages as functions in a state-transition network).


I used to teach the programming language Prolog, and write a lot of my software in it. I have a few demonstrations of Prolog on the Web. One of them is a program that generates plots for SF stories. Another is Traveller, a little game where the student programs robot vehicles to buy and sell goods from shops arranged round a board.

Here is an introduction to Prolog for mathematicians, and here are thoughts on Why Use Prolog?.

I have also written: an automatic tester for Prolog, and the GRIPS pre-processor for translating functional definitions into Prolog.

My free software page includes a public-domain Prolog library.

Artificial Intelligence

My Prolog teaching was part of the Artificial Intelligence course I used to teach at Oxford. In teaching my students, I liked to build tiny but complete artificial intelligences or "agents", in their own in their own virtual environments (microworlds), to illustrate classical AI, and to demonstrate the difference between this and the so-called "nouvelle AI" approaches.

Holographic reduced representations

These are an ingenious method for storing structured data in high-dimensional vectors. I have written a SWI-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.


Here are photos from Romania, Bulgaria, Portugal and other places. And I've already mentioned my Imagens de Braga page. More recent are these photos of the Oxford town criers' competition of July 2, 2012.


From Portugal, and also Greece, Holland, Romania, and Kidlington and Gosford gym: recipes I wrote up for Elder Stubbs. They include Marrow Rum (from ex-sailor Ron in the gym); and Afghan Leeks, sent by my friend Andrew Watson from Kabul.

Unusual clothes

To escape from the black and beige and suitedness of English men's clothing, and for reasons explained in my Dr Dobbs essay Dress Code, I sometimes wear exotic clothes, most notably Moroccan shirts and "sarouel" or "qandrissi" trousers. Which are much more comfortable than jeans. There are some photos here and here.

Dialogues and quotes

I enjoy collecting dialogues and quotes. Here are The Excelsior Dialogues, overheard in Oxford's Excelsior café; and a few Wharf House quotes.

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


fa la'e lu le logji bangu poi selcme zo loglan. .a zo lojban. li'u The Logical Languages Loglan and Lojban

DARTS — модель для дистрибутивного анализа Российской Системы Налогов и Трансфертов DARTS — a model for the Distributional Analysis of the Russian Tax and Transfer System

[ Artificial Intelligence Society ]

[ Belgium, Netherlands, Poland... computing ... some jokes ]
[ MS-DOS, bureaucracies, APL, ... some quotes ]
[ Fortran, breweries, ants, ... some verses ]

[ Links ]

[ Matt Carroll's Merovingian page ]
[ Dougal Lee's Richard Head and the Bomb at SPC ]

Jocelyn Ireson-Paine
2 January 2016