NEW!
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
www.jocelyns-cartoons.uk .
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.
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 www.spreadsheet-factory.com .
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 get a free download
of Excelsior 1.3 for Windows, from my Spreadsheet Parts
Repository
Excelsior
page.
I am on the programme committee of the European Spreadsheet Risks
Group.
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.
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.
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.
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.
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.
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.
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.
I enjoy collecting dialogues and quotes. Here are
The Excelsior
Dialogues, overheard in
Oxford's Excelsior café;
and a few Wharf House
quotes.
|
Somniloquacity
(cartoon)
Inside Job
Google Fish
(cartoon)
Incompatibility
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
Exhalation
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, ...
Perspective
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
Tolerance
The European Spreadsheet Risks
Interest Group
Conference is in Paris Next Week
Functions
Ο
Μαθητής
Μαθαίνει
το
Μαθηματικά;
or:
You
Say Math, I Say Maths
Blog
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
AM/FM
Thought for the
Day
The Prolog Lightbulb
Joke
An Excel Bonus
Sold
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
Clickaine
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?
Primes
Neural
Net Urban Legends
Spreadsheet
Components, Google Spreadsheets, and Code Reuse
Listless
Haiku
How to
Waste a PhD
Listless
Earth Falls Toward The Sun And Everybody Dies - A
science-fiction plot-generator in Excel
I C BB 2
E
Early
Calls
Other
|