Subscribe: Recycled Knowledge
Added By: Feedage Forager Feedage Grade B rated
Language: English
altgr  car  characters  english  key  keyboard  languages  latin  oed  parser  pocket  read  standard  stones  typed altgr 
Rate this Feed
Rate this feedRate this feedRate this feedRate this feedRate this feed
Rate this feed 1 starRate this feed 2 starRate this feed 3 starRate this feed 4 starRate this feed 5 star

Comments (0)

Feed Details and Statistics Feed Statistics
Preview: Recycled Knowledge

Recycled Knowledge

by John Cowan <>

Updated: 2018-03-05T10:33:25.912-05:00




I am now twittering under the name, not of Sanders, but of @Woldemar_Avalon, because I am John Woldemar Cowan and my home city is New Avalon, or in English, the Big Apple.  So far I am mostly using it as a publicly readable commonplace book: somewhere to write down the quotations that decorate my mental structure.  Follow and enjoy.

Out of the frying pan and into the fire


Or as Bilbo put it, escaping goblins to be caught by wolves.  After pretty much recovering from the meningitis and its psychological sequels, I stepped on a minute piece of glass in my kitchen.  Although I had bled a bit, my wife Gale got the glass out, and I went to the podiatrist to be fixed up.  The lesion was only 5 mm x 5 mm and 1 mm deep and looked fairly trivial.  But within three days, I had massive cellulitis (bacterial infection of the skin) in the foot and lower leg.  Foot trouble for diabetics is far worse than foot trouble for anyone else, and hey presto, I was back in the hospital being looked after by three separate teams of doctors: podiatry, infectious diseases, and family medicine (one of the analogues of general practice in the U.S.)

Heavy-duty antibiotics relieved the pain in the leg (I feel no pain, touch, or temperature sensations in my feet, though I do feel pressure) within a few days, but the external signs were still very ugly.  So my podiatrist decided to cut me open at the worst-looking spot, basically chopping from the top of my foot down almost to the sole.  Fortunately, I've had no pain from this.  More antibiotics and having my foot squeezed to get the pus out was pretty successful, and I was sent home after two weeks: a very different story from two days, but at least my mind wasn't affected this time.  Of course, I'd gone from an infected foot to a wounded one (the trivial cut on my sole had healed already), though at least the wound was clean and straight.

So I've been back at home for the last two weeks with a permanent IV line installed and a less comprehensive antibiotic, after I was found to have non-MRSA staph.  The surgical wound is healing better than expected: fortunately, my gross circulation is fairly unimpaired (you can feel strong pulses in my feet), so it's quite likely that I'll come out the other side essentially as well off as before. (I have two permanently broken toes on that foot, but the don't impair my walking.)  Meanwhile, I'm working from home and attending meetings by Skype, but only at 85% of full time thanks to all the doctors I have to visit repeatedly.  I'm walking on the heel of the bad foot using a surgical shoe (a sort of sandal with a very stiff sole) plus a crutch on the good side, and hopefully will be upgraded to something less restrictive after tomorrow.  Again hopefully, the IV will be terminated after Wednesday.

Oddly, no connection was ever found between the glass cut on my sole and all the pus in my foot, so just how the staph got into my foot remains completely unexplained.  Gale, who is not diabetic, had had cellulitis a month before, but she had a visible scratch on her leg, and two days in the hospital on IV fixed her right up.  Also, the cold I mentioned turned out to be an allergy, which nose drops are slowly clearing.  Nothing has been done about the low hemoglobin yet, and I also will have to see a vascular surgeon when I can walk again.

Getting sick and getting better


This post is mostly meant to account for what has happened to me since August 23, with some explanation of the things I have posted on the Internet lately.  It will be of interest, if at all, to (a) people interested in me and my physical, mental, and emotional state; (b) people interested in certain medical matters which I exemplify; (c) people who are puzzled by my recent lack of postings followed by rather oddball postings and private emails (or remarks, if you know me in person). I will mostly state what happened to me in the order it happened. On August 23, I left work very ill, and arrived home shortly thereafter, where I was found to have a fever.  I took acetaminophen to try to reduce the fever, and rested.  On August 25, I went to an internist and received a diagnosis of strep throat (although my throat did not hurt) based on a quick strep test.  I was then given a large penicillin injection to kill the strep organism, though I was told it would not much shorten the course of my disease.  I was advised to rest and drink fluids so that I would not become dehydrated from the fever. Unfortunately, there were two mistakes here.  One was that the positive result on the test was false, and therefore the penicillin was useless though harmless.  The other was that because I had undergone roux-en-Y surgery in December 2012, it was impossible for me to drink sufficient fluids sufficiently quickly to avoid dehydration.  Over the period from at least August 23 on, therefore, I was suffering from an unknown illness, which turned out to be two illnesses: viral meningitis, and an upper-respiratory viral infection in the nature of a cold.  I was also, as a result of the fever, suffering from progressive but unsuspected dehydration. On October 1, I went to another internist; due to a change in my insurance between August 25 and October 1, my first internist could not see me unless I paid him cash in full on the spot.  This second internist ran further tests establishing that I did not have the flu, or pneumonia, or any of a variety of other diseases, but could find no specific disease.  I was again sent home and told to rest (which I did) and drink additional fluids (which I did not and could not).  The cold was evident at this point, but did not account for the fever; the meningitis was as yet unsuspected. Unfortunately, of the two fever-reducing drugs I was told to take, one (acetaminophen) was effective but easy to overdose on, so I could only take it in limited amounts.  Either for that reason, or because of the natural course of the meningitis, I was feverish on some days but not other days.  The other drug (ibuprofen) was also effective, but had the bad side effect of causing me to shiver.  In order to stop shivering, I had to add outside warmth (a blanket was insufficient), which would revive the fever.  When I finally noticed this pattern, I stopped taking ibuprofen, but continued to take acetaminophen. The ongoing and untreated dehydration had several side effects.  For one thing, my blood sugar (I am a diabetic) went some 200 points above my previous worst-case reading, which was itself some 200 points above non-diabetic normal.  Another was that I urinated less than usual, and with darker urine.  Yet another was that I found it hard to draw blood for blood-sugar tests.  My thinking function became disordered, not only when I was feverish (a familiar phenomenon enough) but also when I was not feverish.  As a result I began to fear that even if I recovered from whatever I had (besides the cold), my thinking would remain disordered, and I would be unable to work thereafter.  (I did not fear absolute starvation for myself and my family, but I know too well how difficult the life of a partly mentally disabled person in the United States is.)  Lastly, I began to stop producing normal tears, so that my eyes partly dried out. Due to the dry e[...]

I'm being laid off ...


... so I'm looking for work. Though I've been a programmer most of my professional life, I've spent the last four years doing document schema design and ontology. I have survived quite a lot of generations of programming technologies, so I am nothing if not adaptable. For any given tech-of-the-moment, my answer is "I may not know it yet, but I will know it very quickly."

If you, my readers, know of anything either in New York City or its environs, or in telecommuting land (I've been working mostly-at-home for the last four years, and especially in the past year), I would certainly like to hear about it. Here's my resume in Word and PDF formats, and you can contact me at

Update:  After working a bunch of short-term consulting jobs, I am now employed full-time as a back-end programmer and team lead at Tablet Hotels, an online travel agent specializing in boutique and specialized hotels, which we check out individually.

U.K. Whacking Latin Keyboard for Windows


I'm announcing my UK Whacking Latin family of keyboard drivers for Windows.  They allow you to type more than 900 different Unicode characters, without interfering substantially with the regular use of a UK keyboard.  The way in which the additional non-ASCII characters are reached is by using the AltGr key. The keyboards are designed for people who use the regular or extended UK keyboard heavily, but occasionally need to type other Latin letters (especially accented ones), symbols, and punctuation.  In particular, the keyboard supports the Windows-1252 (U.S. and Western Europe) repertoire, as well as almost every Latin letter in Unicode. This keyboard handles only the extended Latin alphabet.  If you want a regular Greek, Russian Cyrillic, or full IPA keyboard, I recommend the standard Microsoft Greek keyboard, the Russian Phonetic YaWert keyboard, and the Benct X-Sampa keyboard respectively. If you want a similar keyboard driver for the US physical keyboard, use my Moby Latin keyboard driver instead. There are two basic ways to type characters other than the regular ASCII set. A few characters are directly typed by holding down AltGr and pressing another key.  For example, to type the character æ, simply type AltGr+a.  As you might expect, the capital version Æ is typed as AltGr+Shift+a.  However, the great majority of characters are typed using AltGr plus some key, followed by another key that doesn't use AltGr. For example, the letter a with diaeresis (ä) is typed with AltGr+; (that is, AltGr plus semicolon) followed by a, or by A if you want the capital a with diaeresis (Ä). Combinations like AltGr+; are known as "dead keys", because they appear to be dead when you type them; you need to press a following key to actually input a character.  The current version, F, of the Whacking Latin keyboard has a total of 33 dead keys.  23 specific accent marks and modifying strokes are provided, as well as curly quotation marks and other punctuation, math symbols, Roman numerals, fractions, arrows, pointing hands, math Greek letters and symbols (no accents), obscure Latin letters, and a subset of IPA letters needed for English.  (Some math symbols were taken from the space cadet keyboard.)  Some of these dead keys are typed using AltGr+Shift, which makes them a little awkward to type, but they are intended to be as easy to remember as possible. Update: There are four variants in the Whacking Latin family:  Whacking John, which is meant for English only; Whacking Sandy, which is meant for English and Scottish Gaelic; Whacking Mick, which is meant for English and Irish; and Whacking Taffy, which is meant for English and Welsh.  They all have the same repertoire of characters, but the last three variants make it easier to type texts in those specific languages.  Whacking John is upward compatible with Microsoft's UK keyboard, and Whacking Sandy with Microsoft's UK Extended keyboard, except for the AltGr combinations on those keyboards. These keyboards and the associated documentation are Open Source, and may be freely copied and modified.  The license terms for all is the MIT License.  Use, share, and enjoy! [...]

How many languages is that?


Serbo-Croat? Serbian? Croatian? Bosnian? Montenegrin? How many languages is that?  Saying that there are four languages, or that there is one, are both oversimplifications. Here's an approximation of the whole truth:

 In the linguist's sense, there is just a single language, a South Slavic dialect continuum with a dozen or more dialects and  four standardized forms. However, Standard Serbo-Croat, which prevailed until 1989, was never a single standard.  Rather, it was a fusion of two existing standards, an agreement that Standard Croatian and Standard Serbian (both of which already existed) would be treated as equally acceptable for all purposes. In this way it is like the position of Standard Bokmål and Standard Nynorsk in Norway, and like what would be the case if British society decided to accept Standard American English as a written standard with a status equal to Standard British English, or vice versa. It is that agreement which came apart when Yugoslavia did, and it has been followed by the creation of a third standard for Bosnian and a fourth one for Montenegrin.

All four standard languages are founded on the historic dialect of Eastern Hercegovina, an instance of the neo-Štokavian macro-dialect which is now the most widely spoken variety of naš jezik 'our language', as it is politely called, in the whole of the former Yugoslavia. (Macro-dialects are conventionally labeled by the word they use for 'what?' — in this case, što.) They differ roughly as follows:

  • Standard Croatian employs exclusively Ijekavian forms (that is, the descendant of historic jat vowels is ije), admits influences from the Chakavian and Kajkavian macro-dialects, is relatively hostile to Western loanwords and does not normally respell the ones it accepts, and is written exclusively in the Latin script.

  • Standard Serbian allows either Ijekavian or Ekavian forms, has no such influences from the other macro-dialects, is relatively friendly to Western loanwords and respells the ones it accepts to match Serbian pronunciation conventions, and is written with equal acceptability in the Latin and Cyrillic scripts.

  • Standard Bosnian is close to Standard Serbian, has some influences from the palaeo-Shtokavian macro-dialect, is exclusively Ijekavian, and uses the Latin script only.

  • Standard Montenegrin is even closer to Standard Serbian, but it uses the Latin script only and is exclusively Ijekavian.

There are also many differences in vocabulary, on about the same scale as the differences between British and American English.

My understanding is essentially dependent on the work of Miro Kačić, the Croatian linguist (in both senses of that term). While highly respected, Kačić's work is of course controversial, like everything else about the language he worked on.

U.S. Moby Latin Keyboard for Windows


I'm announcing my U.S. Moby Latin keyboard driver for Windows.  It allows you to type more than 900 different Unicode characters, without interfering substantially with the regular use of a U.S. keyboard.  The way in which the additional non-ASCII characters are reached is by using the AltGr key.  (Not too many keyboards actually have this key, but its equivalent is the right-hand Alt key, or on keyboards without a right-hand Alt key, using the Ctrl and Alt keys at the same time.)

The keyboard is designed for people who use the regular U.S. keyboard heavily, but occasionally need to type other Latin letters (especially accented ones), symbols, and punctuation.  In particular, the keyboard supports the Windows-1252 (U.S. and Western Europe) repertoire, as well as almost every Latin letter in Unicode.

This keyboard handles only the extended Latin alphabet.  If you want a regular Greek, Russian Cyrillic, or full IPA keyboard, I recommend the standard Microsoft Greek keyboard, the Russian Phonetic YaWert keyboard, and the Benct X-Sampa keyboard respectively.

If you want a Moby-style keyboard driver for the U.K. physical keyboard, use my Whacking Latin keyboard driver instead.

There are two basic ways to type characters other than the regular ASCII set. A few characters are directly typed by holding down AltGr and pressing another key.  For example, to type the character æ, simply type AltGr+a.  As you might expect, the capital version Æ is typed as AltGr+Shift+a.  However, the great majority of characters are typed using AltGr plus some key, followed by another key that doesn't use AltGr. For example, the letter a with diaeresis (ä) is typed with AltGr+; (that is, AltGr plus semicolon) followed by a, or by A if you want the capital a with diaeresis (Ä).

Combinations like AltGr+; are known as "dead keys", because they appear to be dead when you type them; you need to press a following key to actually input a character.  The current version, C, of the Moby Latin keyboard has a total of 33 dead keys.  23 specific accent marks and modifying strokes are provided, as well as curly quotation marks and other punctuation, math symbols, Roman numerals, fractions, arrows, pointing hands, math Greek letters and symbols (no accents), obscure Latin letters, and a subset of IPA letters needed for English.  (Some math symbols were taken from the space cadet keyboard.)  Some of these dead keys are typed using AltGr+Shift, which makes them a little awkward to type, but they are intended to be as easy to remember as possible.

This keyboard and the associated documentation are Open Source, and may be freely copied and modified.  The license terms for both is the MIT License.  Use, share, and enjoy!

A Tolkien Virgin


Back in 1999-2002, starting before the Peter Jackson films had appeared, a blogger named Mark-Edmond Howell undertook to read the whole of The Silmarillion, The Hobbit, and The Lord of the Rings in that order and to write chapter-by-chapter commentary in Tolkien Online as he went.  As he himself says, he had started The Hobbit some years before but not gotten very far into it, and was vaguely aware of some of the pre-Jackson films.  While has undertaken to lovingly preserve A Tolkien Virgin, their index is in reverse order of posting (which sometimes differs slightly from book order), and is chopped up arbitrarily, making it hard to navigate.  As a public service, therefore, I am providing this organized and properly ordered table of contents to A Tolkien Virgin, using chapter titles rather than numbers in all cases (Book IV, Chapter 4, what's that?  "Of Herbs and Stewed Rabbit", ahhhh!)  Share and enjoy.  And as Mark-Edmond says, keep thinking! Introductory "The first in a series" The Silmarillion "The journey begins" Ainulindale Valaquenta The Quenta Silmarillion Of the Beginning of Days Of Aule and Yavanna Of the Coming of the Elves and the Captivity of Melkor Of Thingol and Melian Of Eldamar and the Princes of the Eldalië Of Feanor and the Unchaining of Melkor Of the Silmarils and the Unrest of the Noldor Of the Darkening of Valinor Of the Flight of the Noldor Of the Sindar Of Men Of the Sun and Moon and the Hiding of Valinor Of the Return of the Noldor Of Beleriand and its Realms Of the Noldor in Beleriand Of Maeglin Of the Coming of Men into the West Of the Ruin of Beleriand and the Fall of Fingolfin Of Beren and Luthien Of the Fifth Battle: Nirnaeth Arnoediad Of Túrin Turambar Of the Ruin of Doriath Of Tuor and the Fall of Gondolin Of the Voyage of Earendil and the War of Wrath "Summary of the Quenta Silmarillion" Akallabêth  (including Mark-Edmond's epilogue to The Silmarillion) Of the Rings of Power and the Third Age (not read by Mark-Edmond) The Hobbit Note that some commentaries cover two or even three chapters. An Unexpected Party Roast Mutton A Short Rest  (included with above) Over Hill and Under Hill (included with above) Riddles in the Dark Out of the Frying-Pan into the Fire Queer Lodgings (included with above) Flies and Spiders Barrels out of Bond A Warm Welcome (included with above) On the Doorstep Inside Information (included with above) Not at Home Fire and Water (included with above) The Gathering of the Clouds A Thief in the Night (included with above) The Clouds Burst (included with above) The Return Journey The Last Stage (included with above) The Fellowship of the Ring Book I A Long-expected Party The Shadow of the Past Three Is Company A Short Cut to Mushrooms A Conspiracy Unmasked The Old Forest In the House of Tom Bombadil Fog on the Barrow-downs At the Sign of The Prancing Pony Strider A Knife in the Dark Flight to the Ford "Book I Overview" Book II Many Meetings The Council of Elrond The Ring Goes South A Journey in the Dark The Bridge of Khazad-dûm Lothlórien The Mirror of Galadriel Farewell to Lórien The Great River The Breaking of the Fellowship The Two Towers Book III The Departure of Boromir The Riders of Rohan The Uruk-hai Treebeard The White Rider The King of the Golden Hall Helm's Deep The Road to Isengard Flotsam and Jetsam The Voice of Saruman The Palantír Book IV The Taming of Sméagol The Passage of the Marshes The Black Gate Is Closed Of Herbs and Stewed Rabbit The Window on the West The Forbidden Pool Journey to the Cross-roads The Stairs of Cirith Ungol Shelob's Lair The Choices of Master Samwise The Return of the King Book V Minas Tirith The Passing of the Grey Company The Muster of Rohan The Siege of Gondor The[...]

The Nasochron


Here is Christian Morgenstern's lovely poem "Das Nasobēm", which was written around 1895 and is usually called a nonsense poem, though not in the sense of "'Twas brillig, and the slithy toves ..."  Indeed, all the words in it make plain sense except one; the nonsense comes in from the fact that once you have read the poem, you still know nothing about the animal.

Auf seinen Nasen schreitet
Striding on its noses
einher das Nasobēm,
there comes the Nasobame
von seinem Kind begleitet.
with its child in tow.
Es steht noch nicht im Brehm.
It isn't yet in Brehm's [encyclopedia of zoology].

Es steht noch nicht im Meyer.
It isn't yet in Meyer's [encyclopedia]
Und auch im Brockhaus nicht.
And also not in Brockhaus's [encyclopedia]
Es trat aus meiner Leyer
It trotted out of my lyre
zum ersten Mal ans Licht.
when it first came to light.

Auf seinen Nasen schreitet
Striding on its noses
(wie schon gesagt) seitdem,
on it, as I've said above,
von seinem Kind begleitet,
with its young in tow,
einher das Nasobēm.
there goes the nasobame.

And here's my translation of it, which I put together in a few minutes today.

On all its noses striding,
Here comes the Nasochron.
Its child so gently guiding
'S not drawn by Audubon.

You won't find it in Brockhaus
Or Britannica Online,
I found it in this schlock-house
I'm pleased to call my mind.

On all its noses striding
(As I have said anon)
Its child so gently guiding
Here comes the Nasochron.

There are said to be poetic translations by G.G. Simpson and L.Chadwick.  I haven't read them.

Programming languages, their implementation strategies, and their communities


Programming languages can be divided into three groups based on their implementation strategies:

A) Multiple competing implementations, relatively small standard libraries, many third-party libraries available. C, C++, Cobol, Fortran, JavaScript use strategy A.

B) A single dominant implementation which comes with a fairly large library which everybody uses; typically there is no formal standardization. Substantial third-party libraries may or may not be available. Second-source implementations are continually playing catch-up with the dominant version. Ada, Java, Perl, Python, Ruby use strategy B. So do most DSLs, research languages, and personal toys. Haskell used to be strategy C but is now B due to the increasing dominance of GHC.

C) Multiple implementations, relatively small standard libraries, each implementation comes with lots of libraries. Substantial third-party librarys may or may not be available. The Lisp languages use strategy C; so do Forth, ML, and the Posix shell.

Common Lisp and the shell have fairly large standard libraries (for the shell, it's the Posix utilities that constitute the library); R5RS Scheme and even R6RS Scheme have fairly small ones. When the R7RS Scheme process is complete, the relative sizes in the Lisp world will be R5RS < R7RS-small < R6RS < Common Lisp < R7RS-large, but the standard libraries of R7RS-large will be optional for conformance rather than mandatory, so Common Lisp may still be larger in practice.

In a strategy C language, an implementation is more than just an implementation; it's a community, or even a movement. Strategy A languages don't draw this sort of loyalty for the most part; decisions between implementations are based only on cost, or else technical criteria such as speed, space, compilation speed, or availability in a particular environment. Strategy B languages have only one community per language, with a few splinter groups; that's what makes them such juggernauts today.

But to write your code for Chicken or Racket or Chibi Scheme involves more than a cold-blooded decision about the advantages of these particular environments. Technical factors may control the choice in some circumstances. But where they don't, people end up deciding based on essentially tribal factors, the same that make people fanatically loyal to vi or Emacs (or, in my case, "ex").

That's not necessarily a bad thing. But it would be a good thing, unqualified, if some of the library code available to Chicken programmers was also directly available, without fuss, to Racket or even Chibi Scheme programmers. Essentially everything new in R7RS-small is in pursuit of that goal one way or another. Likewise, the packages in R7RS-large (which is not yet fully specified) are meant to help at a higher level with that interoperability goal.

Concurrency vs. parallelism


Parallelism refers to physically simultaneous execution.  When you raise both arms above your head, you do so in parallel.  Nothing can be more parallel than the number of execution agents simultaneously available: on an 8-core system, you can add up 8 rows of a matrix in parallel, but not 16 rows.  Furthermore, some problems cannot be parallelized, whereas others can be executed entirely in parallel, and there are many cases in between.
Concurrency refers to conceptually simultaneous execution.  When you juggle balls, you are executing a concurrent program: despite appearances,jugglers only throw or catch one ball at a time.  A concurrent program can execute on a single execution agent, on as many agents as it has concurrent components, or anything in between, so concurrency does not depend on parallelism.  We usually speak of concurrency when there is interaction between the concurrent components.
Flow-based programming, of which a shell pipeline is the most familiar example, is based on the concurrent execution of mostly isolated processes that communicate via flows.  Because the individual components are isolated, they may be executed in parallel or not.  Because there are no constraints on what components may do with their inputs, parallel execution may or may not actually speed up the computation.

Schleicher's Fable in Lojban


Here's a version of Schleicher's Fable in Lojban with word-by-word glosses (note the use of letters as pronouns).  You can see Latin, Greek, and Sanskrit versions at Memiyawanzi.

pa lanme .e ci xirma
one sheep and three horse

pa lanme poi claxu loi sunla cu viska ci xirma
one sheep such:that lack a:mass:of wool (-) see three horse

.i pa ri cu lacpu pa tilju carce
(-) one:of the:latter (-) pull one heavy cart

.i pa ra bevri loi barda
(-) one:of the:previous carry a:mass:of heavy-thing

.i pa ra sutra bevri pa nanmu
(-) one:of the:previous quick carry one man

.i ly. cusku fi ci xy. fe lu
(-) S. say to three H. (-) quote

le risna cu se cortu ri'a lo nu viska pa nanmu poi sazri xy. li'u
the heart (-) PASV hurt because:of a/some event:of see one man such:that operate H. unquote

.i ci xy. cusku lu
(-) three H. say quote

doi lanme ko jundi
O sheep you-IMPV pay:attention

.i le risna cu se cortu ri'a lo nu viska la'e di'e
(-) the heart (-) PASV hurt because:of event:of see referent:of following:utterance

.i tu'a pa turni nanmu cu zbasu lo sunla be ly. binxo lo se dasni be ny.
(-) (-) one govern man (-) make a/some wool of S. become a/some PASV wear [i.e. worn thing] of M.

.i je ly. claxu sy. li'u
(-) and S. lack W. unquote

.i ly. jimpe la'e di'u
(-) S. comprehend referent:of preceding:utterance

.i je ba bo rivbi klama le pintu'a
(-) and then (-) escape go:to the plain [lit. flat=parcel:of:land]

The Lojbanists I checked this with don't understand why the sheep flees, since he has already been shorn.  Does anyone have any idea?

John McCarthy's theorem prover


John McCarthy, the inventor of Lisp, died last month.  The new R7RS Scheme standard will be dedicated to his memory.  As another dedication, I thought I'd resurrect his theorem prover, which was published in the Lisp 1.5 manual, and translate it into Scheme. Comments in square brackets are mine; everything else is McCarthy's. When this code was written, I was still in diapers and a lot of you probably didn't even exist — and yet it only needed indentation, a few changes from cond to if (which helped with the indentation), and a sprinkling of question marks. It's interesting that this Lisp is so old that () is not identical to #f. The procedure names suck and should be replaced with better names (ending in question marks). ;;; We define a function "(theorem s)" whose value is truth ;;; or falsity according to whether the sequent "s" is a theorem. ;;; A sequent is represented by the following S-expression: ;;; (arrow (term term ...) (term term ...)) ;;; Atomic propositional formulae are represented as symbols. ;;; Other propositional formulae are represented as lists whose ;;; first symbols are "not", "and", "or", "implies", or "equiv". ;;; Example: (arrow (and (not p) (not q))) (equiv p q) (or r s))). ;;; The procedure "theorem" is given in terms of auxiliary ;;; functions as follows: (define (theorem s) (th1 '() '() (cadr s) (caddr s))) (define (th1 a1 a2 a c) (if (null? a) (th2 a1 a2 '() '() c) (or (member? (car a) c) (if (atom? (car a) (th1 (if (member? (car a) a1) a1 (cons (car a) a1)) a2 (cdr a) c)) (th1 a1 (if (member? (car a) a2) a2 (cons (car a) a2)) (cdr a) c))))) (define (th2 a1 a2 c1 c2 c) (cond ((null? c) (th a1 a2 c1 c2)) ((atom? (car c)) (th2 a1 a2 (if (member? (car c) c1) c1 (cons (car c) c1))) c2 (cdr c)) (else (th2 a1 a2 c1 (if (member? (car c) c2) c2 (cons (car c) c2)) (cdr c))))) (define (th a1 a2 c1 c2) (if (null? a2) (and (not (null? c2)) (thr (car c2) a1 a2 c1 (cdr c2))) (thl (car a2) c1 (cdr a2) c1 c2))) ;;; "th" is the main predicate through which all the recursions ;;; take place. "theorem", "th1", and "th2" break up and sort ;;; the information in the sequent for the benefit of "th". ;;; The fourarguments of "th" are: ;;; a1: atomic formulae on left side of arrow ;;; a2: other formulae on left side of arrow ;;; c1: atomic formulae on right side of arrow ;;; c1: other formulae on right side of arrow ;;; The atomic formulae are kept separate from the others in ;;; order to make faster the detection of the occurrence of ;;; formulae on both sides of the arrow and the finding of ;;; the next formulato reduce. Each use of "th" represents ;;; one reduction according to one of the 10 rules. ;;; The formula to be reduced is chosen from the left side ;;; of the arrow if possible. According to whether the ;;; formula to be reduced is on the left or the right we use ;;; "thl" or "thr". We have: (define (thl u a1 a2 c1 c2) (case (car u) ((not) (th1r (cadr u) a1 a2 c1 c2)) ((and) (th2l (cdr u) a1 a2 c1 c2)) ((or) (and (th1l (cadr u) a1 a2 c1 c2) (th1l (caddr u) a1 a2 c1 c2))) ((implies) (and (th1l (caddr u) a1 a2 c1 c2) (th1r (cadr u) a1 a2 c1 c2))) ((equiv) (and (th2l (cdr u) a1 a2 c1 c2) (th2r (cdr u) a1 a2 c1 c2))) (else (error "thl: unknown operator" u a1 a2 c1 c2)))) (define (thr u a1 a2 c1 c2) (case (car u) ((not) (th1l (cadr u) a1 a2 c1 c2)) ((and) (and (th1r (ca[...]

Samuel Beckett's mathematical nightmare


From Beckett's early novel Molloy, later reprinted separately under the title of "Sucking-Stones".  I have introduced paragraphing for readability, though in Beckett's text this is just part of a huge 80-page paragraph, one of only two in Molloy's monologue.  Reprinted without permission. I took advantage of being at the seaside to lay in a store of sucking-stones. They were pebbles but I call them stones. Yes, on this occasion I laid in a considerable store. I distributed them equally between my four pockets, and sucked them turn and turn about. This raised a problem which I first solved in the following way. I had say sixteen stones, four in each of my four pockets these being the two pockets of my trousers and the two pockets of my greatcoat. Taking a stone from the right pocket of my greatcoat, and putting it in my mouth, I replaced it in the right pocket of my greatcoat by a stone from the right pocket of my trousers, which I replaced by a stone from the left pocket of my trousers, which I replaced by a stone from the left pocket of my greatcoat, which I replaced by the stone which was in my mouth, as soon as I had finished sucking it. Thus there were still four stones in each of my four pockets, but not quite the same stones. And when the desire to suck took hold of me again, I drew again on the right pocket of my greatcoat, certain of not taking the same stone as the last time.  And while I sucked it I rearranged the other stones in the way I have just described. And so on. But this solution did not satisfy me fully. For it did not escape me that, by an extraordinary hazard, the four stones circulating thus might always be the same four. In which case, far from sucking the sixteen stones turn and turn about, I was really only sucking four, always the same, turn and turn about. But I shuffled them well in my pockets, before I began to suck, and again, while I sucked, before transferring them, in the hope of obtaining a more general circulation of the stones from pocket to pocket. But this was only a makeshift that could not long content a man like me. So I began to look for something else. And the first thing I hit upon was that I might do better to transfer the stones four by four, instead of one by one, that is to say, during the sucking, to take the three stones remaining in the right pocket of my greatcoat and replace them by the four in the right pocket of my trousers , and these by the four in the left pocket of my trousers, and these by the four in the left pocket of my greatcoat, and finally these by the three from the right pocket of my greatcoat, plus the one, as soon as I had finished sucking it, which was in my mouth.  Yes, it seemed to me at first that by so doing I would arrive at a better result. But on further reflection I had to change my mind and confess that the circulation of the stones four by four came to exactly the same thing as their circulation one by one. For if I was certain of finding each time, in the right pocket of my greatcoat, four stones totally different from their immediate predecessors, the possibility nevertheless remained of my always chancing on the same stone, within each group of four, and consequently of my sucking, not the sixteen turn and turn about as I wished, but in fact four only, always the same, turn and turn about. So I had to seek elswhere than in the mode of circulation. For no matter how I caused the stones to circulate, I always ran the same risk. It was obvious that by increasing the number of my pockets I was bound to increase my chances of enjoying my stones in the way I planned, that is to say one after the other until their number was exhausted. Had I had eight pockets, for[...]

Publication dates for the parts of the OED


The Oxford English Dictionary has had three editions: the original edition, published in twelve volumes from 1888 to 1928, and known retrospectively as OED1 the OED2, consisting of a supplement published in four volumes from 1972 to 1986 (there was a 1933 supplement to OED1 too, but it was superseded by the four-volume supplement so I'm ignoring it here) and merged with the text of OED1 in 1989, after which two volumes of new words and senses were published in 1993 and one more in 1997 the OED3, currently in progress and being published online only. When you look at the online version, each page is marked OED2 or OED3, but since the supplement only included new words and meanings of words since OED1, many of the so-called OED2 pages are really unmodified OED1. What is more, the OED1 volumes were published in installments called fascicles, and very little revision was done before the fascicles were merged into volumes. So here's a table of when the various fascicles, volumes, and editions were published, so that you can find out, at least probably if not definitively, the true age of an OED definition. Unless otherwise noted, all the entries are OED1.  Note that the fascicles weren't necessarily published exactly in alphabetical order, because several editors worked on the project simultaneously. Words includedDate (YYYY-MM-DD format) A-Ant1884-01 Ant-Batten1885-11 Batter-Boz1887-03 Bra-Byz1888-06 A-B volume1888 C-Cass1888-06 Cast-Clivy1889-11 Clo-Consigner1891-10 Consignant-Crouching1893-05 Crouchmas-Czech1893-11 C volume1893 D-Deceit1894-11 Deceit-Deject1894-12 Deject-Depravation1895-06 Depravative-Development1895-12 Development-Diffluency1895-12 Diffluent-Disburden1896-06 Disburdened-Disobservant1896-09 Disobstetricate-Distrustful1896-12 Distrustfully-Doom1897-03 Doom-Dziggetai1897-06 E-Every1891-07 Everybody-Ezod1894-03 D-E volume1897 F-Fang1894-11 Fanged-Fee1895-04 Fee-Field1895-09 Field-Fish1896-03 Fish-Flexuose1896-09 Flexuosity-Foister1897-03 Foisty-Frankish1897-10 Frank-law-Gain-coming1898-01 Gain-cope-Germanizing1898-01 Germano-Glass-cloth1899-03 Glass-coach-Graded1900-01 Gradeley-Greement1900-07 Green-Gyzzarn1900-12 F-G volume1900 H-Haversian1898-03 Haversine-Heel1898-06 Heel-Hod1898-12 Hod-Horizontal1899-03 Horizontality-Hywe1899-06 I-In1899-10 In-Inferred1900-03 Inferring-Inpushing1900-07 Input-Invalid1900-10 Invalid-Jew1900-12 Jew-Kairine1901-06 Kaiser-Kyx1901-10 H-K volume1901 L-Lap1901-03 Lap-Leisurely1902-01 Leisureness-Lief1902-03 Leif-Lock1903-01 Lock-Lyyn1903-10 M-Mandragon1904-10 Mandragora-Matter1905-07 Matter-Mesnalty1906-03 Mesne-Misbirth1906-12 Misbode-Monopoly1907-06 Monopoly-Movement1908-03 Movement-Myz1908-09 N-Niche1906-09 Niche-Nywe1907-09 L-N volume1908 O-Onomastic1902-07 Onomastical-Outing1903-03 Outjet-Ozyat1904-01 P-Pargeted1904-03 Pargeter-Pennached1904-12 Pennage-Pfennig1905-09 Ph-Piper1906-06 Piper-Polygenistic1907-03 Polygenous-Premious1907-12 Premisal-Prophesier1908-12 Prophesy-Pyxis1909-09 O-P volume1909 Q1902-10 R-Reactive1903-07 Reactively-Ree1904-07 Ree-Reign1905-03 Reign-Reserve1906-01 Reserve-Ribaldously1908-06 Ribaldric-Romanite1909-03 Romanity-Roundness1909-12 Round-nose-Ryze1910-03 S-Sauce1909-06 Sauce-alone-Scouring1910-06 Scouring-Sedum1911-03 See-Senatory1911-12 Senatory-Several1912-09-30 Several-Shaster1913-06-13 Shastri-Shyster1914-03-26 Q-Sh volume1914 Si-Simple1910-12 Simple-Sleep1911-09 Sleep-Sniggle1912-06-27 Sniggle-Sorrow1913-03-27 Sorrow-Speech1914-09-28 Speech-Spring1915-03-25 Spring-Standard1915-09-30 Standard-Stead1915-06-29 Stead-Stillatim1916-06-29 Stillation-Stratum1917-12-06 Stratus-Styx1919-09-04 Si-St volume1919 Su-Subterraneous1914-12-22[...]

Groups of names


RFC 1178, a wise and funny set of rules on how to name computers (and how not to), recommends that groups of computers that have something in common be given names that have something in common.  The principle isn't limited to computers, to be sure. Here's a list of 255 groups of names ranging in size from two names on upward.  I can't tell you where they come from, though I very much doubt anyone will sue you for reusing them.  Feel free to figure out and post what the common factors are, the more specific the better, though I don't have any more authoritative information than you do.  Obviously, answers of the form "These are the names of the xxxx's at yyyy" are not helpful. Challenge:  A few of the groups are fakes (don't come from the original source).  Which ones? 1) Canteen, Cosy Room, Rembrandt, van Gogh, Vermeer 2) De Dam, Leidseplein, Museumplein, Nieuwmarkt, Rembrandtplein, Zeedijk 3) Ann Arbor, Chelsea, Dearborn, Detroit, Grand Rapids, Grosse Pointe, Hell MI, Holland, Kalamazoo, Plymouth, Portage, St. Joseph, Three Rivers 4) Bad Axe, Cadillac, Frankenmuth, Lansing, Ludington, Midland, Mt. Pleasant, Pinconning, Port Huron 5) Marquette, Oscoda, Petoskey 6) Battle Creek, Charlevoix, Houghton, Mackinac Island, Munising, Ontonagon, Paradise, Sault St. Marie, Traverse City 7) Boars Nest, Bo Duke, Daisy Duke, General Lee, Luke Duke, Uncle Jesse 8) Astrud Gilberto, Cootie Williams, Ella Fitzgerald, Folsom, Jimmy Scott, John Coltrane, Miles Davis, Montreux, Quincy Jones, Ray Charles, Sarah Vaughn, Sun Ra, Thelonius Monk 9) Brookhaven, Buckhead, Candler Park, Decatur, Druid Hills, East Atlanta, East Lake, Grant Park, Inman Park, Little 5 Points, Midtown, Morningside, Oakhurst, Ormewood Park, OTP, Reynoldstown, Sandy Springs, Virginia Highlands 10) Alamo, Armadillo, Iron Man, Longhorn 11) Bar, Barton Springs, Baz, Bull Creek, Deep Eddy, Devil's Cove, Foo, Hamilton Pool, Hippie Hollow, House Park, Ladybird Lake, Windy Point 12) Bulette, Icke, Kitt, Rincewind, Tresor 13) Moeda, Ouro Branco 14) Akwan, Caparao, Mantiqueira 15) Cipo, Curral 16) Canastra, Espinhaco 17) 8 Mile Rd, Gratiot Ave, Maple Rd, Michigan Ave, Reuther Fwy, Southfield Fwy, Telegraph Rd, The Lodge Fwy, The Palace, Woodward Ave 18) Aspen, Crested Butte, Manitou Springs, Red Rocks, Rotunda, South Park, Tiny Town 19) Dinosaur, Estes Park, Flatirons, Garden of the Gods, Independence Pass, Longs Peak, Mesa Verde, Sand Dunes, SuperMax 20) Anca, Avanti, Chedi, Chola, Dravida, Kalinga, Kanchi, Kashi, Kekaya, Kunti, Magadha, Panchala, Pandya, Sindhu, Sinhala, Videha 21) Ben Hur, Bon Appetit, Casino Royale, Cyborg, Deja Vu, Dune, Gladiator, Golden Eye, Hercules, Jumanji, Moonraker, Predator, Radio lab, Robocop, Sparta, Thunderball, Zardos 22) Enigma, Hawaiian Shack, Poison 23) Smurf, Tintin 24) Condorito, Gaturro, Hijitus, Mafalda, Miguelito, Susanita 25) Beacon Hill, Faneuil Hall, North End, Waterfront 26) Boondock Saints, Cheers, Dead Poets Society, Glory, Good Will Hunting, Mystic River, The Departed, The Perfect Storm 27) Big Dig, Mayflower, Tea Party, Walden Pond 28) Harpoon, Magic Hat, Sam Adams 29) etc, proc, var 30) Aragon Ballroom, Cheap Trick, Kingston Mines, Metro Chicago, Ravinia Festival, Schubas Tavern, Smashing Pumpkins, Styx, The Vic Theater, Wilco 31) Blues Brothers, Bob's Country Bunker, Championship Vinyl, Chez Quiz, Ferris Bueller, High Fidelity, Hubbards Cave, Risky Business, Sixteen Candles, The Breakfast Club, Wayne's World 32) Gold Coast, Hyde Park, Lakeview, Old Town, Ravenswood, Wrigleyville 33) Asti, Pad Thai 34) Armadillo, Big Tex, Bluebonnet, Buddy Holly, Longhorn, Th[...]

Cognitive milestones


My grandson Dorian is now just past three, and he has very recently achieved two major cognitive milestones.

On the one hand, he now can say that the person he sees in the mirror or the looped-back video camera is himself.  I saw him just yesterday standing in front of a full-length mirror on the floor and saying "A picture of Dorian!"  On the other hand, he now will come up to an adult and say "You need to change my diaper!" when he has pooped in it.  Both of these are very significant advances over just a month ago.

Until now, Dorian could pass the mirror test (like humans and other great apes, dolphins, killer whales, and magpies) in the sense that he showed recognition of himself in a mirror.  But he did not verbally acknowledge it, though he liked seeing such images and would laugh when shown one.  I should think that the second milestone is also available to apes, who don't have language as we do (even the ones trained in sign language never ask questions, or tell us what they think, for example) but are capable of manipulating complex symbols to make demands.

The Final, Complete, Authoritative List of Self-Describing Linguistic Expressions


Note: I did not make up any of these wonderful terms. ablout, adjectival, adverbially, affrichation, agglutinatinglanguagetype, analogician, anapityxis, ancicipation, anology, apfrication, aphas..., apocop, aprothesis, archaisme, assimination, asssibilation, Attattic reduplication, atticipatory assimilation, attriction, awwoxiwant, breakieng, comparativer, compēsatory lengthening, compound-formation, condamination, conjunction and/or disjunction, cpoatricpulated stocp, daigraeph, debuccalihation, derivationalizationalize, devoicink, dialuctal form, diephthoungiezaitioun, digræph, diminutivito, dithsimilation, diäeresis, duplication, díäçrîtič, e grede, ebleut, epenethesis, extcrescentce, /fəˈnimɪk/, final devoicink, finix, fixsuf, foicelhess, folk at-a-mall-oh-gee/folk ate-a-mology/folk-entomology, foneme, frapped r, frixathiv, frönting, fəˈnɛtʰɪk, gemminnattion, genitive’s, gerund, gerundive, Ghrassman's Lhaw, gloʔʔalization, græ:t vu:l shift, haplogy, haspʰiration, he-uh-sitation, infuckingfixation, Krimm's Law, lenizhion, lharyngeal, lip-wownding, lithping, loan mot, loan translation, lubualuvatium, metasethis/methatesis, metophony, mon, monophtong, morph-eme-s, mprenasalization, nansal infinx, nominalization, noun, noun phrase, NP[ADJ[labeled]ADJ N[bracketing]N]NP, nãsąlĩzątĩǫn, o grod, paragogee, perreveratory addimilation, pheresis, pentasyllabic, portition, positionpost, ppoggessive addimilation, pre-fixed, pro clitic, phetic, polysyllabic, pyalatyalizyation, rean alysis, reduced grud, redup-reduplication, relick form, rerressive assimilation, rhotarism, rules of redundancy rules, schwə, sfirathization, sibboleth, spelling pronounciation, ssssound ssssymbolism, stigmartize' fohm, suffix-ed, superlativissimus, svarabhakati, sync'pe, teefoicink, t-fuckin'-mesis, the firsth Germanih sount shifth, the sekont Germanich sount shiftz, thetamesis, to back formate, triephthouong, ttl vwl rdctn, ümlaut, verbed, vocawization, voizing, vowol harmono, weagening, zr grd, ηugment. My personal favorite is "vowol harmono". Detect languageAfrikaansAlbanianArabicArmenianAzerbaijaniBasqueBelarusianBengaliBosnianBulgarianCatalanCebuanoChichewaChinese (Simplified)Chinese (Traditional)CroatianCzechDanishDutchEnglishEsperantoEstonianFilipinoFinnishFrenchGalicianGeorgianGermanGreekGujaratiHaitian CreoleHausaHebrewHindiHmongHungarianIcelandicIgboIndonesianIrishItalianJapaneseJavaneseKannadaKazakhKhmerKoreanLaoLatinLatvianLithuanianMacedonianMalagasyMalayMalayalamMalteseMaoriMarathiMongolianMyanmar (Burmese)NepaliNorwegianPersianPolishPortuguesePunjabiRomanianRussianSerbianSesothoSinhalaSlovakSlovenianSomaliSpanishSundaneseSwahiliSwedishTajikTamilTeluguThaiTurkishUkrainianUrduUzbekVietnameseWelshYiddishYorubaZulu AfrikaansAlbanianArabicArmenianAzerbaijaniBasqueBelarusianBengaliBosnianBulgarianCatalanCebuanoChichewaChinese (Simplified)Chinese (Traditional)CroatianCzechDanishDutchEnglishEsperantoEstonianFilipinoFinnishFrenchGalicianGeorgianGermanGreekGujaratiHaitian CreoleHausaHebrewHindiHmongHungarianIcelandicIgboIndonesianIrishItalianJapaneseJavaneseKannadaKazakhKhmerKoreanLaoLatinLatvianLithuanianMacedonianMalagasyMalayMalayalamMalteseMaoriMarathiMongolianMyanmar (Burmese)NepaliNorwegianPersianPolishPortuguesePunjabiRomanianRussianSerbianSesothoSinhalaSlovakSlovenianSomaliSpanishSundaneseSwahiliSwedishTajikTamilTeluguThaiTurkishUkrainianUrduUzbekVietnameseWelshYiddishYorubaZulu Text-to-speech function is limited to 100 characters Options : History : Help : Feedback [...]

Stories in related languages


The Fisherman and His Wife

Here are multiple versions of the familiar (or if isn't familiar, read it!) Grimm's fairy tale in different closely related languages. You can probably find more if you try.

There's also a Russian version of the story by Pushkin (search for "СКАЗКА О РЫБАКЕ И РЫБКЕ")

Between all of those one ought to be able to make out what's going on. For extra thrills, try reading one of the languages you don't know.


Johann Peter Hebel's classic 1809 tale "Kannitverstan" is about the moral reflections that mutual incomprehension can arouse in a young German from Württemberg who is in Amsterdam for the first time (based on a true story dating from 1757) :

Update: Links refreshed, Dutch and Russian added.

Language Hat, or Topic Drift


Language Hat is one of my favorite blogs. The host, also known as Language Hat, has created a complex community of extremely interesting people, and he downright encourages topic drift provided the topic stays interesting and non-hostile, which it almost always does. So just to show off how drifty the topics can be, I grabbed most of last year's postings and reduced them to just the first and last sentences (where "last" means "last sentence on the last comment"), and presented them here in chronological order from January to December. Occasionally there's a bit more than two sentences in order to provide context. If one of the posts interests you, click on the ➤ to read it. ➤ My wife asked me why "refrain" means such different things as a noun and as a verb, and the answer turns out to be interesting: the two have completely different histories. [...] Your spam style, on the other hand ... ➤ Of course I wanted to find the original Russian of the diary online, and I was pleased to turn up this site: it's full of scanning errors and only goes up to the end of 1929, but it will be a welcome companion up to that point. [...] Shklovsky is also the author of one of the best biographies of Tolstoy and a master of bon mots. Here is one: ➤ Orin Hargraves has a good post in the Language Lounge section of Visual Thesaurus on the decay of that good old modal shall, using Fowler's entry on it as a jumping-off point ("There is never a reason not to consult Fowler about usage: whether you find what you were looking for or not, you'll walk away from his text amused and edified in a way that you weren't when you went to it"). [...] I do have a life so I think I'll just get on with it. ➤ I wrote about the death of poet and publisher Jonathan Williams here; now Jeffery Beam and Richard Owens have put together a wonderful tribute at Jacket Magazine, with contributions from the quick and the dead. [...] [I'm leaving this because it's rare to see a spammer so incompetent they can't even link the site they're spamming for. -LH] ➤ A nice little paragraph from the Nov. 12, 1918 entry featuring an argument with Nikolai Gumilyov (who would be shot by the Bolsheviks less than three years later) about translation; Gumilyov was a fine poet, but I'm on Chukovsky's side here: [...] When Sashura gave up, I thought it was hopeless. ➤ There's a long and fascinating entry (April 18, 1919) featuring Gorky talking about Tolstoy; with any luck you'll be able to read it, or at least part of it, at Google Books. [...] Not something I possess either. ➤ Chukovsky talks about Maxim Gorky so much I thought it would be a good time to finally read Gorky's famous autobiography. [...] 'изведут' I think could be better rendered into English as 'do her in' ➤ Anatoly has a thought-provoking post today that I thought I'd translate and bring to the attention of those who don't read Russian:It sometimes happens that a field of study arises and organizes itself around some big problem, standing before it unignorable and demanding to be solved. [...] Personally I would love to attend, but it's a bit far from Beijing.... ➤ One of the things I love about investigating obscure references in my reading is that it sometimes leads me into nearly forgotten byways of history that I can then bring to light. [...] If you think of it as a dialect of English, it's appropriate to translate into or out of it into the dialect forms of other languages. ɺ[...]

Typing a letter into my browser's location bar...


The browser in question is Chrome. (my daughter's; I have an account but don't use it) (plus a sekrit proxy that gives me access to it) (work site)
q - nothing
v - nothing (better known as þ (my daughter's)

MicroXML Editor's Draft


I have assembled a very preliminary Editor's Draft for MicroXML. It is about 20 pages long, and covers for MicroXML what is covered by XML 1.0 (Fifth Edition), Namespaces in XML 1.0 (Third Edition), XML Infoset (Second Edition), Namespaces in XML 1.0 (Third Edition), xml:id 1.0, and XML Base (Second Edition), which total about 82 pages.

It still needs formal normative references, and there are a few open issues listed in section 10. Comments and corrections are earnestly solicited either in comments here or in email.

The Hoose at Pooh's Neuk / Kidnappit


Well, I've finished the second Pooh book in Scots, and it seems to me just a hair less good than the original. I have no idea if that's the translator, the author, or just me. Definitely it's harder to understand, perhaps more Scots and less English, though not so much you'd notice it right off. I do, however, want to present one of Pooh's hums in three versions: Robertson's translation, a literal back-translation by me, and Milne's original. It comes from Chapter VIII, "Where-intil Wee Grumphie does a Gey Graund Thing": I lay on ma chist    I lay on my chest       I lay on my chest And thocht I wid jist    And thought I would just       And I thought it best Pit on I was haein a sleep I had missed;    Put on I was having a sleep I had missed;       To pretend I was having an evening rest; I lay on ma wame    I lay on my belly       I lay on my tum Some verse tae declaim    Some verse to declaim       And I tried to hum But naethin particular seemed to strike hame.    But nothing particular seemed to strike home.       But nothing particular seemed to come. Ma face was flat    My face was flat       My face was flat On the flair, and that    On the floor, and that       On the floor, and that Is aw guid and weel for an acrobat;    Is all good and well for an acrobat;       Is all very well for an acrobat; But it doesna seem fair    But it does not seem fair       But it doesn't seem fair Tae a Freendly Bear    To a Friendly Bear       To a Friendly Bear Tae streek him oot unner an auld creel-chair.    To stretch him out under an old wicker-chair.       To stiffen him out with a basket-chair. And a kind o squoot    And a kind of squoot       And a sort of sqoze He could dae wioot    He could do without       Which grows and grows Is no that braw for his puir auld snoot;    Is not that pleasant for his poor old snoot;       Is not too nice for his poor old nose, And a kind o squeed    And a kind of squeed       And a sort of squch Is sair indeed    Is grievous indeed       Is much too much On his mooth and his lugs and the back o his heid.    On his mouth and his ears and the back of his head.       For his neck and his mouth and his ears and such. Plainly some of the changes are enforced by the rhyme, but I do think "I lay on ma wame / Some verse tae declaim / But naethin particular seemed to strike hame" is better, and better poetry, than "I lay on my tum / And I tried to hum / But nothing particular seemed to come." I'll also mention here Kidnappit, a graphic novel based on Robert Louis Stevenson's classic romance Kidnapped, which is available both in English and in Scots. In the original book, much of the dialogue is Scots-and[...]

The MicroLark parser


I've been developing a parser for MicroXML which I have dubbed MicroLark, in honor of Tim Bray's original 1998 XML parser Lark. I didn't take any code from Lark, but we ended up converging on similar ideas: it provides both push and tree parsers (as well as a pull parser), it is written in Java, and I intend to evolve it as MicroXML evolves. However, as MicroXML is much smaller than XML, so MicroLark is about a third the size of Lark. If you want to cut to the chase now, you can get the jar file, the source code of version 0.8, the Javadoc, and the test cases (which are based on the W3C's XML Conformance Test Suites). If you run the jar file, pass it one argument which is the file you want to parse, and you'll get the parsed output in Pyx format, a simple line-oriented format similar to SGML ESIS format. If you specify @ as the file, MicroLark will read the names of files from the standard input, and write its output to files with the same names but with .pyx added. MicroLark 0.8 supports MicroXML according to James's most recent definition, with the addition of prefixed attribute names. MicroLark allows, but does not require, namespace definitions for these prefixes. Element names do not allow prefixes. This version provides the parser proper, the Element class, and a MicroXML writer. I'll be adding more MicroXML-specific test cases in a later release. Future versions will supply a package of iterators to allow XPath-style operations, and a validator based on MicroRNG. The core of MicroLark is a pull parser implemented as a state machine, which is just a big switch of switches. The outer switch is controlled by the current state, and the inner switches by the current character. The parser returns when a start-tag, end-tag, character data, end of document, or error is found, making sure that parsing can be resumed smoothly afterwards. Consequently, it is not draconian, though its error recovery strategy mostly consists of resetting the current state to "character data". When the parser returns, the caller can call accessors to get the current element stack or character data, or the location and text of an error. The push parser (SAX-style) and the tree parser (DOM-style) are thin layers over the pull parser; the tree parser is draconian. The Element class is the incarnation of the MicroXML data model, so it provides access to the name, attributes, and children of an element. Element objects are provided by all three parsers, though only the tree parser populates the children. There are the usual collection methods for fetching, searching, and mutating the attributes and children; text children are represented as Strings, and when an attempt is made to insert a text child next to an existing text child, the two are coalesced. You can create your own Element objects, and the class ensures that they always represent well-formed MicroXML (for example, the names of elements and attributes must be well-formed). There are convenience methods for retrieving the current value of an inherited attribute, and for obtaining the current values of xml:lang/lang, xml:id/id, xml:base, and the namespace of a prefixed attribute. Users can create subclasses of Element and instruct the parser to use them by creating a factory object. Factory objects get the current element stack from the parser as well as the name of the new element, and return an instance based on them. This allows tree nodes to hav[...]

Winnie-the-Pooh in Scots


I have just read, and with great enjoyment, Winnie-the-Pooh in Scots, translated by James Robertson and with the original E. H. Shepard illustrations.
Lang lang syne, a lang while syne noo, aboot Friday past, Winnie-the-Pooh steyed in a forest aw by himsel unner the name o Sanders.

('Whit does "unner the name" mean?' spiers Christopher Robin.

'It means he had the name in gowd letters ower the door and he steyed unner it.'

'Winnie-the-Pooh wisna jist shair,' says Christopher Robin.

'I am noo,' says a gurly [growly] voice.

'Then I'll cairry on," says I.)

The other characters, I should mention, are Wee Grumphie (Piglet), Heehaw (Eeyore, and a much more sensible spelling than "Eeyore" to an American like me), Rabbit, Hoolet (Owl, cf. English howlet, a mixture of howl and owlet, or their French originals), Kanga, and the Bairn Roo. Teeger doesn't come in until The Hoose at Pooh's Neuk, which has just arrived but I haven't read yet.

The book is a delight overall, especially to one as steeped in Pooh as I have always been, and who had Scott, RLS, and Ian Maclaren mixed in with his English reading from a very early age. I suppose there were half-a-dozen or so words that I didn't know the meanings of, as I unfortunately read the book without the marvelous Dictionar o the Scots Leid, the OED for Scots, at hand. I must particularly praise the verse translations, such as this one from Chapter 1, "Where-intil we are introduced tae Winnie-the-Pooh and a wheen Bees, and the Stories stert":

It's a thocht, is it no, that if Bears were Bees,
They'd bigg their bykes at the bottom o trees.
And if that wis the wey o it (if Bees were Bears)
We widna hae tae speel up aw thir stairs.

My favorite moment, however, was at this line in Chapter 4: "These notices had been written by Christopher Robin, who was the only one in the forest who could spell; for Owl, wise though he was in many ways, able to read and write and spell his own name WOL, yet somehow went all to pieces over delicate words like MEASLES and BUTTEREDTOAST." In Robertson's translation, this becomes: "Thae notices had been written oot by Christopher Robin, the ainly yin in the Forest that could spell; for, lang-heidit though Hoolet wis in mony weys, able tae read and write and spell his ain name HOOTEL, for some reason he gaed aw through-ither when it cam to kittle words like MEASLES and BUTTERYBREID."

The next time I'm writing some software that needs a fanciful name, perhaps I'll call it Hootel.