|
[ 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 ]
NEW!!!★ 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. ConsultancyI 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 sitesA 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 theoryEntirely 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 saferAs 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. PrologThe 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 intelligenceI 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 teachingI 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 representationsThese 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. WritingFrom 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 blogSomniloquacity (cartoon) Google Fish (cartoon) Hear Me Croak (cartoon) The Ills That Steel's not Heir To (cartoon) Bubbles (cartoon) SAnTa NAV (cartoon) How to Modularise a Spreadsheet How to Reveal Implicit Structure in Spreadsheets Casting One's Bread (cartoon) Greater and Lesser (cartoon) On the Drawbacks of Modern Technology (cartoon) Fearful Vista (cartoon) In Silicon No One Can Hear You Scream Googlewhacked (cartoon) A History of Computing in 100 Objects Eggsamining Mereology (cartoon) Gonna Sit Right Down ... (cartoon) Døt Døt Dæsh (cartoon) 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) 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) 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 Waiting for Moore (cartoon) Reprogramming Aibo (cartoon) Sweet Words (cartoon) Bottles (cartoon) Unicode and the Shavian Alphabet II No Earthly Power (cartoon) 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 LiveHTTPHeaders for Tracing URLs What Might Category Theory do for Artificial Intelligence and Cognitive Science? An Online Budget Questionnaire, JavaCC, and the Three Ways of Putting Together 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 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 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 How to Avoid Overpriced Science Journals The Curse of the Thinking Classes (cartoon) And No Play (cartoon) Ode on the Automation of Imbecility The Usefulness of Broken Glasses Rhetorical Initiative II: animating Reagan Prolog as a Text-Hacking Language 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) An Ounce of Image (with cartoon) Frivolous Uses of Time Travel (1) A Conversation with Einstein's Brain The European Spreadsheet Risks Interest Group Conference is in Paris Next Week Ο Μαθητής Μαθαίνει το Μαθηματικά; or: You Say Math, I Say Maths Artificial Intelligence Lightbulb Jokes Documenting Spreadsheets with Pseudo-Code: an Exercise with Cash-Flow and Loans Poem on the Determination of Consciousness How to Generate a Tree-Building Parser in Java using JJTree Don't Explain Maths; it's Easier to Explain how Hard it is to Explain How to Document a Spreadsheet: an Exercise with Cash-Flow and Loans Gliders, Hasslers, and the Toadsucker: Writing and Explaining a Structured Excel Life Game Poplog, continuations, Eliza, AI education, and Prolog 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) The Compressibility of Useful Information The Incompressibility of Useless Information Choosing Easily Distinguished Colours with ColorBrewer Category Theory Interactive Demonstration and Text Adventure Binary Holographic Reduced Representations in SWI-Prolog Category Theory and the Interesting Truths Finding the Best Metaphors will be the Work of a Generation 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?) Spreadsheet Components, Google Spreadsheets, and Code Reuse Earth Falls Toward The Sun And Everybody Dies - A science-fiction plot-generator in Excel |
[ 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
]