<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss'><id>tag:blogger.com,1999:blog-11807812</id><updated>2009-11-24T12:43:03.058-05:00</updated><title type='text'>Recycled Knowledge</title><subtitle type='html'>by John Cowan &amp;lt;&lt;a href="mailto:cowan@ccil.org"&gt;cowan@ccil.org&lt;/a&gt;&amp;gt;</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://recycledknowledge.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11807812/posts/default'/><link rel='alternate' type='text/html' href='http://recycledknowledge.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/11807812/posts/default?start-index=26&amp;max-results=25'/><author><name>John Cowan</name><uri>http://www.blogger.com/profile/11452247999156925669</uri><email>cowan@ccil.org</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>245</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-11807812.post-977972959239186996</id><published>2009-11-06T04:14:00.000-05:00</published><updated>2009-11-06T04:14:43.216-05:00</updated><title type='text'>More of my blather</title><content type='html'>If, Ghu help you, you want to see a lot the stuff I'm posting as blog comments rather than saving for my own blog, then &lt;a href="http://backtype.com/johnwcowan"&gt;this amazing search engine&lt;/a&gt; is your friend.&amp;nbsp; If you, too, post a lot of comments, go to &lt;a href="http://backtype.com/"&gt;their home page&lt;/a&gt; and set up your own profile, giving them the "web address" you use to post, and everyone can see many of the places you are posting to as well.&amp;nbsp; Very, very nice.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11807812-977972959239186996?l=recycledknowledge.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://recycledknowledge.blogspot.com/feeds/977972959239186996/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11807812&amp;postID=977972959239186996' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11807812/posts/default/977972959239186996'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11807812/posts/default/977972959239186996'/><link rel='alternate' type='text/html' href='http://recycledknowledge.blogspot.com/2009/11/more-of-my-blather.html' title='More of my blather'/><author><name>John Cowan</name><uri>http://www.blogger.com/profile/11452247999156925669</uri><email>cowan@ccil.org</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08813191556311604399'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11807812.post-6689674958472185638</id><published>2009-10-24T22:39:00.000-04:00</published><updated>2009-10-24T22:39:11.763-04:00</updated><title type='text'>More female programmers</title><content type='html'>&lt;p&gt;I tried to post this comment to a public site, but failed repeatedly.  The topic of the original post isn't relevant to my comment, which was in response to a comment that read, in its entirety:&lt;/p&gt;

&lt;p&gt;&lt;i&gt;Why would we would want more female programmers?&lt;/i&gt;&lt;/p&gt;

&lt;p&gt;My answer:&lt;/p&gt;

&lt;p&gt;The world needs more effectively mobilized brains.  We can't afford to constrain ourselves on what size or shape or color the bodies are that house those brains.  Also, diversity is good in itself: it improves flexible response, and it's silly to throw away a cheap source of diversity.&lt;/p&gt;

&lt;p&gt;A major U.S. university with a strong CS program (I am contractually prevented from naming it) that had female CS undergraduate admissions in the single digits year after year was able to raise their admission to the same rate as other engineering programs by changing &lt;i&gt;just one thing&lt;/i&gt;: they no longer gave people who already had programming experience preferential admission.  There have been no changes in the overall performance of the student body in the years since.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11807812-6689674958472185638?l=recycledknowledge.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://recycledknowledge.blogspot.com/feeds/6689674958472185638/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11807812&amp;postID=6689674958472185638' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11807812/posts/default/6689674958472185638'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11807812/posts/default/6689674958472185638'/><link rel='alternate' type='text/html' href='http://recycledknowledge.blogspot.com/2009/10/more-female-programmers.html' title='More female programmers'/><author><name>John Cowan</name><uri>http://www.blogger.com/profile/11452247999156925669</uri><email>cowan@ccil.org</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08813191556311604399'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11807812.post-8295395574793355300</id><published>2009-10-22T19:19:00.000-04:00</published><updated>2009-10-22T19:19:02.035-04:00</updated><title type='text'>"Omnilingual"</title><content type='html'>&lt;p&gt;This is to announce my &lt;a href="http://www.ccil.org/~cowan/omnilingual.html"&gt;edited version&lt;/a&gt; of H. Beam Piper's classic story of linguistic archaeology on Mars, "Omnilingual".  Why edit a classic?  Here's my Editor's Introduction:&lt;/p&gt;

&lt;p&gt;H. Beam Piper's 1956 story "Omnilingual" is one of the few, and
still one of the best, science fiction stories in which the science is
linguistic archaeology.  While the meat of the story holds up marvelously
fifty years later, the particulars are firmly rooted in the 1950s.
Everyone smokes like a chimney &amp;mdash; on Mars!  The women are called
girls, and their gender is mentioned at every conceivable opportunity.
All the work is still done with pencil and paper and sketching boards
and looseleaf notebooks.&lt;/p&gt;

&lt;p&gt;My edits, then, are intended to modernize the work, to help the
2009 reader not stumble over the details.  Notebooks are computerized;
sketchbooks have been replaced by tablets.  Gender equality and the
metric system are taken for granted.  Smoking isn't even &lt;i&gt;mentioned&lt;/i&gt;.
I wedged in a mention of the Classic Maya decipherment of the 1980s (a
counterexample to the story's thesis!), but let one of the characters
dismiss it as irrelevant.  I set the story, as Piper did, forty years in
the future, but that is now 2049 rather than 1996.  There are fewer This
Is Science Fiction flags, so "Earth" instead of "Terra", "U.N." instead of
"Federation Government".&lt;/p&gt;

&lt;p&gt;Piper's Mars and his Martians are completely impossible based on
what we know of Mars today.  Rather than trying to change all that,
which would have involved wholesale destruction and re-invention, I
have changed the planet's name to Ares after the Greek rather than the
Roman god of war.  The intention is to suggest someplace analogous to
Mars as we know it in 2009, but different in detail.  The atmosphere on Ares is
thin, but breathable with supplementary oxygen; the humidity, while low,
supports plenty of life forms.  As for the too-human Martians (or Areans),
I have made them an offshoot of &lt;i&gt;Homo sapiens&lt;/i&gt; whose presence on
the fourth planet from the sun remains a mystery.&lt;/p&gt;

&lt;p&gt;However, the characters, the plot, the underlying logic remain the
same.  Hopefully I haven't damaged the story too much in trying to adjust
it to modern taste.  Those who prefer the original form can easily find
it at &lt;a href="http://www.gutenberg.org/files/19445/19445-h/19445-h.htm"&gt;Project Gutenberg&lt;/a&gt;, who provided the public-domain base text from
which this revision was made.  They also have the original Frank Kelly
Freas drawings, which I didn't feel right about using -- they were made
in the 1950s, too, and no longer seemed to fit the revised text.&lt;/p&gt;

&lt;p&gt;Read and enjoy!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11807812-8295395574793355300?l=recycledknowledge.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://recycledknowledge.blogspot.com/feeds/8295395574793355300/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11807812&amp;postID=8295395574793355300' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11807812/posts/default/8295395574793355300'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11807812/posts/default/8295395574793355300'/><link rel='alternate' type='text/html' href='http://recycledknowledge.blogspot.com/2009/10/omnilingual.html' title='&quot;Omnilingual&quot;'/><author><name>John Cowan</name><uri>http://www.blogger.com/profile/11452247999156925669</uri><email>cowan@ccil.org</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08813191556311604399'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11807812.post-2385483425951755611</id><published>2009-10-16T16:03:00.000-04:00</published><updated>2009-10-16T16:03:42.137-04:00</updated><title type='text'>Fragments</title><content type='html'>&lt;p&gt;David Moser's relentlessly self-referential story &lt;a href="http://consc.net/misc/moser.html"&gt;"This Is the Title of This Story, Which Is Also Found Several Times in the Story Itself"&lt;/a&gt; begins simply enough with the fairly ordinary sentence "This is the first sentence of this story."  

&lt;p&gt;But by the fourth paragraph, a harbinger of what is to come: "Introduces, in this paragraph, the device of sentence fragments. A sentence fragment. Another. Good device. Will be used more later."

&lt;p&gt;True enough.  "Incest. The unspeakable taboo. The universal prohibition. Incest. And notice the sentence fragments? Good literary device. Will be used more later."


&lt;p&gt;A later passage from the same increasingly disconnected tale:  "Bizarre. A sentence fragment. Another fragment. Twelve years old. This is a sentence that. Fragmented. And strangling his mother. Sorry, sorry. Bizarre. This. More fragments. This is it. Fragments. The title of this story, which. Blond. Sorry, sorry. Fragment after fragment. Harder. This is a sentence that. Fragments. Damn good device."

&lt;p&gt;
Still further down: "The purpose. Of this paragraph. Is to apologize. For its gratuitous use. Of. Sentence fragments. Sorry. "

&lt;p&gt;
And then: "Or this sentence fragment? Or three words? Two words? &lt;i&gt;One?&lt;/i&gt;"

&lt;p&gt;
Getting near the end: "By the throat. Harder. Harder, harder."

&lt;p&gt;
Lastly: "This is."

&lt;p&gt;
Read.  The whole thing.  Worthwhile.  NSFW, technically.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11807812-2385483425951755611?l=recycledknowledge.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://recycledknowledge.blogspot.com/feeds/2385483425951755611/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11807812&amp;postID=2385483425951755611' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11807812/posts/default/2385483425951755611'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11807812/posts/default/2385483425951755611'/><link rel='alternate' type='text/html' href='http://recycledknowledge.blogspot.com/2009/10/fragments.html' title='Fragments'/><author><name>John Cowan</name><uri>http://www.blogger.com/profile/11452247999156925669</uri><email>cowan@ccil.org</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08813191556311604399'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11807812.post-3369387398529255364</id><published>2009-10-01T11:16:00.002-04:00</published><updated>2009-10-01T11:20:53.119-04:00</updated><title type='text'>Why Are PHBs Stupid?</title><content type='html'>Mark Liberman on Language Log &lt;a href="http://languagelog.ldc.upenn.edu/nll/?p=1780"&gt;asks&lt;/a&gt;:


&lt;blockquote&gt;
However we decide to define "manager", this group is certainly now
the object of a complex of negative stereotypes. When and how did this
start?



I don't know, and I welcome suggestions.  These attitudes may be
connected to the antique European aristocratic disdain for those who
are "in trade", and to the (I think related) modern intellectual
disdain for the world of business.  These attitudes seem to have been
imported from the intelligentsia into  industry through the medium of
engineers and especially programmers, who (at least at lower levels)
maintain a very different culture from the "suits" in finance,
marketing, product planning, and so on.

&lt;/blockquote&gt;
I think Mark's right to speak of "engineers and especially programmers", and I think the key phrase is "maintain a very different culture".  Historically, the boss that most people dealt with was the foreman, which the OED defines in the relevant sense as "the principal workman; specifically, one who has charge of a department of work."  You began by doing the work, and if you got good at it, you ended up telling other people with less experience or less competence how to do it instead.  This could go right up to the top: Thomas Edison began as an inventor, and wound up running a huge "invention factory", the first modern industrial research lab.&lt;br/&gt;&lt;br/&gt;

Two factors undermined this, though: the sense that promoting high-quality workmen instead of continuing to take advantage of their work made no sense, and the idea that management was or could be a profession abstracted from the particular work being managed.  The first factor appeared particularly strongly in computer programming because of the huge disparity in productivity: the best programmers are literally two orders of magnitude more productive than the average.  Losing a top steelworker to foremanship might cost the company the labor of 2-3 standard steelworkers, but losing the productivity of 100 merely competent programmers seemed insane. And of course geeks tend to like their jobs, and to be uninterested in (and incompetent at) people-managing.  Companies had to deal with the widespread appearance of workers who did not want to be promoted, ever.&lt;br/&gt;&lt;br/&gt;

At the same time, the rise of the MBA spread the meme among the suits that managing people was a learned profession like law or medicine or engineering, where you primarily apply what you have learned from books, courses, etc. to the requirements of the job.  Before that, management had always been seen as a job, like digging ditches or being President of the United States: you can prepare for it to some extent, but mostly you do a job by applying whatever you have to whatever you need to do.&lt;br/&gt;&lt;br/&gt;

Making management a profession was arguable; the associated notion that you could manage workers with no understanding of what they did was a disaster.  Computer programmers were in the forefront of knowing what had happened: they quickly saw that their bosses had no idea of how the work was done, the necessary conditions for doing it, or the difference between what could be done, what could be done with extraordinary effort, and what could not be done at all.  The boss had always been seen as a mean fellow (after all, he tells you what to do and can fire you), but now he also appeared clueless and even stupid, someone who could not be made to understand no matter what.

&lt;blockquote&gt;
None of the early citations in the OED, nor the quotes that I find
in LION, seem to reflect the modern Dilbertian managerial stereotype.
That stereotype clearly predates Dilbert — but when did it arise? and
where did it come from?&lt;br/&gt;&lt;br/&gt;

In this context, we have to return to Andrew's question: What is a
manager, anyhow?  By now, I suppose that the Dilbert empire employs a
certain number of people, whom Scott Adams in some sense manages — does
he thereby consider himself a "manager" in the relevant sense?

&lt;/blockquote&gt;
Scott Adams is not only a manager now, he has always been one by training: he was an economics major, not any kind of scientist or engineer, and he got an MBA before he worked with his first geek.  He is extraordinarily observant (especially for an MBA, I add snarkily) and he actually does grasp how geeks think, but despite appearances he basically sees them from the outside.  When I discovered this, the shock was so great that I started to see him as an outsider mocking my culture rather than an insider mocking its excesses (though to be sure &lt;i&gt;Dilbert&lt;/i&gt; is harder on suits than on nerds), and I lost interest in the strip completely.&lt;br/&gt;&lt;br/&gt;

(Note: Even though Mark says he's been a manager since 1980, I think that industrial research and academia still basically run on the old model, and therefore their managers, including him, are mostly exempt from the trend I am reporting here.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11807812-3369387398529255364?l=recycledknowledge.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://recycledknowledge.blogspot.com/feeds/3369387398529255364/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11807812&amp;postID=3369387398529255364' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11807812/posts/default/3369387398529255364'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11807812/posts/default/3369387398529255364'/><link rel='alternate' type='text/html' href='http://recycledknowledge.blogspot.com/2009/10/why-are-phbs-stupid.html' title='Why Are PHBs Stupid?'/><author><name>John Cowan</name><uri>http://www.blogger.com/profile/11452247999156925669</uri><email>cowan@ccil.org</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08813191556311604399'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11807812.post-6759127436401428223</id><published>2009-09-21T15:41:00.000-04:00</published><updated>2009-09-21T15:41:48.465-04:00</updated><title type='text'>Common Lisp symbols bound in more than one namespace</title><content type='html'>&lt;br /&gt;
These are the Common Lisp symbols which are bound in more than one namespace:&amp;nbsp; for example, &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;+&lt;/span&gt; is both a function (addition) and a variable (the most recent form evaluated by the REPL).&amp;nbsp; The links point into the Common Lisp Hyperspec.&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.lispworks.com/documentation/HyperSpec/Body/a_st.htm#ST" rel="DEFINITION"&gt;&lt;b&gt;*&lt;/b&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.lispworks.com/documentation/HyperSpec/Body/a_pl.htm#PL" rel="DEFINITION"&gt;&lt;b&gt;+&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.lispworks.com/documentation/HyperSpec/Body/a__.htm#-" rel="DEFINITION"&gt;&lt;b&gt;-&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.lispworks.com/documentation/HyperSpec/Body/a_sl.htm#SL" rel="DEFINITION"&gt;&lt;b&gt;/&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.lispworks.com/documentation/HyperSpec/Body/a_abort.htm#abort" rel="DEFINITION"&gt;&lt;b&gt;abort&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.lispworks.com/documentation/HyperSpec/Body/a_and.htm#and" rel="DEFINITION"&gt;&lt;b&gt;and&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.lispworks.com/documentation/HyperSpec/Body/a_atom.htm#atom" rel="DEFINITION"&gt;&lt;b&gt;atom&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.lispworks.com/documentation/HyperSpec/Body/a_bit.htm#bit" rel="DEFINITION"&gt;&lt;b&gt;bit&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.lispworks.com/documentation/HyperSpec/Body/a_ch.htm#character" rel="DEFINITION"&gt;&lt;b&gt;character&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.lispworks.com/documentation/HyperSpec/Body/a_comple.htm#complex" rel="DEFINITION"&gt;&lt;b&gt;complex&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.lispworks.com/documentation/HyperSpec/Body/a_cons.htm#cons" rel="DEFINITION"&gt;&lt;b&gt;cons&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.lispworks.com/documentation/HyperSpec/Body/a_contin.htm#continue" rel="DEFINITION"&gt;&lt;b&gt;continue&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.lispworks.com/documentation/HyperSpec/Body/a_eql.htm#eql" rel="DEFINITION"&gt;&lt;b&gt;eql&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.lispworks.com/documentation/HyperSpec/Body/a_error.htm#error" rel="DEFINITION"&gt;&lt;b&gt;error&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.lispworks.com/documentation/HyperSpec/Body/a_float.htm#float" rel="DEFINITION"&gt;&lt;b&gt;float&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.lispworks.com/documentation/HyperSpec/Body/a_fn.htm#function" rel="DEFINITION"&gt;&lt;b&gt;function&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.lispworks.com/documentation/HyperSpec/Body/a_lambda.htm#lambda" rel="DEFINITION"&gt;&lt;b&gt;lambda&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.lispworks.com/documentation/HyperSpec/Body/a_list.htm#list" rel="DEFINITION"&gt;&lt;b&gt;list&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.lispworks.com/documentation/HyperSpec/Body/a_logica.htm#logical-pathname" rel="DEFINITION"&gt;&lt;b&gt;logical-pathname&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.lispworks.com/documentation/HyperSpec/Body/a_member.htm#member" rel="DEFINITION"&gt;&lt;b&gt;member&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.lispworks.com/documentation/HyperSpec/Body/a_method.htm#method-combination" rel="DEFINITION"&gt;&lt;b&gt;method-combination&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.lispworks.com/documentation/HyperSpec/Body/a_mod.htm#mod" rel="DEFINITION"&gt;&lt;b&gt;mod&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.lispworks.com/documentation/HyperSpec/Body/a_muffle.htm#muffle-warning" rel="DEFINITION"&gt;&lt;b&gt;muffle-warning&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.lispworks.com/documentation/HyperSpec/Body/a_nil.htm#nil" rel="DEFINITION"&gt;&lt;b&gt;nil&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.lispworks.com/documentation/HyperSpec/Body/a_not.htm#not" rel="DEFINITION"&gt;&lt;b&gt;not&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.lispworks.com/documentation/HyperSpec/Body/a_null.htm#null" rel="DEFINITION"&gt;&lt;b&gt;null&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.lispworks.com/documentation/HyperSpec/Body/a_or.htm#or" rel="DEFINITION"&gt;&lt;b&gt;or&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.lispworks.com/documentation/HyperSpec/Body/a_pn.htm#pathname" rel="DEFINITION"&gt;&lt;b&gt;pathname&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.lispworks.com/documentation/HyperSpec/Body/a_ration.htm#rational" rel="DEFINITION"&gt;&lt;b&gt;rational&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.lispworks.com/documentation/HyperSpec/Body/a_setf.htm#setf" rel="DEFINITION"&gt;&lt;b&gt;setf&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.lispworks.com/documentation/HyperSpec/Body/a_store_.htm#store-value" rel="DEFINITION"&gt;&lt;b&gt;store-value&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.lispworks.com/documentation/HyperSpec/Body/a_string.htm#string" rel="DEFINITION"&gt;&lt;b&gt;string&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.lispworks.com/documentation/HyperSpec/Body/a_t.htm#t" rel="DEFINITION"&gt;&lt;b&gt;t&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.lispworks.com/documentation/HyperSpec/Body/a_type.htm#type" rel="DEFINITION"&gt;&lt;b&gt;type&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.lispworks.com/documentation/HyperSpec/Body/a_use_va.htm#use-value" rel="DEFINITION"&gt;&lt;b&gt;use-value&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.lispworks.com/documentation/HyperSpec/Body/a_values.htm#values" rel="DEFINITION"&gt;&lt;b&gt;values&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.lispworks.com/documentation/HyperSpec/Body/a_vector.htm#vector" rel="DEFINITION"&gt;&lt;b&gt;vector&lt;/b&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11807812-6759127436401428223?l=recycledknowledge.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://recycledknowledge.blogspot.com/feeds/6759127436401428223/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11807812&amp;postID=6759127436401428223' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11807812/posts/default/6759127436401428223'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11807812/posts/default/6759127436401428223'/><link rel='alternate' type='text/html' href='http://recycledknowledge.blogspot.com/2009/09/common-lisp-symbols-bound-in-more-than.html' title='Common Lisp symbols bound in more than one namespace'/><author><name>John Cowan</name><uri>http://www.blogger.com/profile/11452247999156925669</uri><email>cowan@ccil.org</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08813191556311604399'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11807812.post-3781370832739021083</id><published>2009-05-24T15:18:00.000-04:00</published><updated>2009-05-24T15:18:42.563-04:00</updated><title type='text'>Two Kinds</title><content type='html'>There's two kinds of people in the world: those who divide the world into two kinds of people, and those who don't.&lt;br /&gt;
&lt;br /&gt;
There's three kinds of people in the world, those who can count and those who can't.&lt;br /&gt;
&lt;br /&gt;
There's 10 kinds of people on the world, those who can do binary and those who can't.&lt;br /&gt;
&lt;br /&gt;
There's 10 kinds of people in the world, those who understand trinary, those who don't understand trinary, and those who mistake it for binary.&lt;br /&gt;
&lt;br /&gt;
And, of course, there's two kinds of people in the world, those who can tell a joke, and those who can't.&lt;br /&gt;
&lt;br /&gt;
Or perhaps there are really three kinds, those who can tell a joke, those who can't, and those who can but run it into the ground.&lt;br /&gt;
&lt;br /&gt;
But &lt;a href="http://en.wikipedia.org/wiki/Little_Anthony_and_the_Imperials"&gt;Little Anthony and the Imperials&lt;/a&gt; said it &lt;a href="http://www.lyricstime.com/little-anthony-two-people-in-the-world-lyrics.html"&gt;best&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11807812-3781370832739021083?l=recycledknowledge.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://recycledknowledge.blogspot.com/feeds/3781370832739021083/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11807812&amp;postID=3781370832739021083' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11807812/posts/default/3781370832739021083'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11807812/posts/default/3781370832739021083'/><link rel='alternate' type='text/html' href='http://recycledknowledge.blogspot.com/2009/05/two-kinds.html' title='Two Kinds'/><author><name>John Cowan</name><uri>http://www.blogger.com/profile/11452247999156925669</uri><email>cowan@ccil.org</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08813191556311604399'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11807812.post-4215916699632442648</id><published>2009-05-09T03:37:00.003-04:00</published><updated>2009-05-09T03:38:54.903-04:00</updated><title type='text'>No more anonymous comments; sorry.</title><content type='html'>I just had to clear out about 100 anonymous spam comments, and Blogger doesn't make that easy.  So no more anonymous comments.

Sorry.

But you &lt;i&gt;can&lt;/i&gt; still comment on any posting, no matter how old.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11807812-4215916699632442648?l=recycledknowledge.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://recycledknowledge.blogspot.com/feeds/4215916699632442648/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11807812&amp;postID=4215916699632442648' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11807812/posts/default/4215916699632442648'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11807812/posts/default/4215916699632442648'/><link rel='alternate' type='text/html' href='http://recycledknowledge.blogspot.com/2009/05/no-more-anonymous-comments-sorry.html' title='No more anonymous comments; sorry.'/><author><name>John Cowan</name><uri>http://www.blogger.com/profile/11452247999156925669</uri><email>cowan@ccil.org</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08813191556311604399'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11807812.post-8263517991929154430</id><published>2008-12-26T18:26:00.001-05:00</published><updated>2008-12-26T18:49:18.446-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='verse dorian'/><title type='text'>Recycled Nursery Rhymes and Songs for Secular Babies</title><content type='html'>Here are a few things I sing to Dorian (who is now six months old) along with more conventional fare like "Guten Abend, gute' Nacht" (the Brahms Lullaby), "You Are My Sunshine", and "Veni, veni Emmanuel":&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;Air: Three Blind Mice&lt;/i&gt;&lt;br /&gt;
Dor-i-an, Dor-i-an&lt;br /&gt;
See who I am, see who I am,&lt;br /&gt;
I am the Drool- and the Burpinator,&lt;br /&gt;
I am the Fart- and the Poopinator,&lt;br /&gt;
I am the Squeal- and the Howlinator,&lt;br /&gt;
I'll be baaaack, I'll be baaaack.&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;Air: Puttin' on the Ritz&lt;/i&gt;&lt;br /&gt;
Who's that baby, what is he doin'&lt;br /&gt;
He's my grandson, he is a-chewin'&lt;br /&gt;
Dor-i-an . . . Chewin' on his bib.&lt;br /&gt;
&lt;br /&gt;
Who's that baby, where is he goin'&lt;br /&gt;
I don't know and there is no knowin'&lt;br /&gt;
Dor-i-an . . . Chewin' on his bib.&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;Air: Jesus Loves Me&lt;/i&gt;&lt;br /&gt;
Grandpa loves me, this I know,&lt;br /&gt;
'Cause his caring tells me so,&lt;br /&gt;
Little me with him belongs,&lt;br /&gt;
Till I'm bold and brave and strong.&lt;br /&gt;
&lt;br /&gt;
Yes, Grandpa loves me (3x)&lt;br /&gt;
His caring tells me so.&lt;br /&gt;
&lt;br /&gt;
(This gets changed to Grandma or Mommy or even Grownups on occasion.)&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;Air: Deck the Halls&lt;/i&gt;&lt;br /&gt;
Fast away the bottle's draining,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;Do-do-do-do-do, do-do-ri-an.&lt;br /&gt;
 On the bib the drips are raining,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;Do-do-do-do-do, do-do-ri-an.&lt;br /&gt;
Soon the back we will be pounding,&lt;br /&gt;
 &amp;nbsp;&amp;nbsp;Do-do-do, do-do-do, Do-ri-an.&lt;br /&gt;
And the burps will be resounding,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;Do-do-do-do-do, do-do-ri-an.&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;Air: Tell Me Why&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;/i&gt;Tell me why the stars do shine,&lt;br /&gt;
Tell me why the ivy twines,&lt;br /&gt;
Tell me why the sky's so blue,&lt;br /&gt;
Tell me, oh tell me, just why I love you.&lt;br /&gt;
&lt;br /&gt;
Nuclear fusion makes stars to shine,&lt;br /&gt;
Tropism makes the ivy twine,&lt;br /&gt;
Scattering makes the sky so blue,&lt;br /&gt;
Gonadal hormones are why I love you.&lt;br /&gt;
&lt;br /&gt;
(This is the only one I didn't make up myself.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11807812-8263517991929154430?l=recycledknowledge.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://recycledknowledge.blogspot.com/feeds/8263517991929154430/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11807812&amp;postID=8263517991929154430' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11807812/posts/default/8263517991929154430'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11807812/posts/default/8263517991929154430'/><link rel='alternate' type='text/html' href='http://recycledknowledge.blogspot.com/2008/12/recycled-nursery-rhymes-and-songs-for.html' title='Recycled Nursery Rhymes and Songs for Secular Babies'/><author><name>John Cowan</name><uri>http://www.blogger.com/profile/11452247999156925669</uri><email>cowan@ccil.org</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08813191556311604399'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11807812.post-1575384630964324412</id><published>2008-10-14T00:27:00.007-04:00</published><updated>2009-06-02T16:34:12.543-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xml'/><title type='text'>Converting Restricted XML to Good-Quality JSON</title><content type='html'>Here's some ideas for converting restricted forms of XML to good-quality JSON.

The restrictions are as follows:

&lt;ul&gt;&lt;li&gt;The XML can't contain mixed content (elements with both children/attributes and text).&lt;/li&gt;

&lt;li&gt;The XML cannot depend on the order of child elements with distinct names (order dependence in children with the same name is okay).&lt;/li&gt;

&lt;li&gt;There can't be any attributes with the same name as child elements.&lt;/li&gt;

&lt;li&gt;There can't be any elements or attributes that differ only in their namespace names.&lt;/li&gt;&lt;/ul&gt;

You also need to know the following things for each child element:

&lt;ul&gt;&lt;li&gt;Whether it &lt;small&gt;MUST&lt;/small&gt; appear at most once (a singleton element) or &lt;small&gt;MAY&lt;/small&gt; appear more than once (a multiplex element).&lt;/li&gt;

&lt;li&gt;Whether it only contains text (an element with simple type) or child elements and/or attributes (an element with complex-type).&lt;/li&gt;&lt;/ul&gt;

Now, to convert the XML to JSON, apply these rules recursively:

&lt;ul&gt;&lt;li&gt;A singleton element of simple type, and likewise an attribute, is converted to a JSON simple value: a number or boolean if syntactically possible, otherwise a string.&lt;/li&gt;

&lt;li&gt;A multiplex object of simple type is converted to a JSON array of simple values.&lt;/li&gt;

&lt;li&gt;A singleton element of complex type is converted to a JSON object that maps the local names of child elements and attributes to their content.  Namespace names are discarded.&lt;/li&gt;

&lt;li&gt;A multiplex element of complex type is mapped to a JSON array of JSON objects that map the local names of child elements and attributes to their content.  Namespace names are discarded.&lt;/li&gt;&lt;/ul&gt;

Comments are very welcome.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11807812-1575384630964324412?l=recycledknowledge.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://recycledknowledge.blogspot.com/feeds/1575384630964324412/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11807812&amp;postID=1575384630964324412' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11807812/posts/default/1575384630964324412'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11807812/posts/default/1575384630964324412'/><link rel='alternate' type='text/html' href='http://recycledknowledge.blogspot.com/2008/10/restricted-xml-to-good-quality-json.html' title='Converting Restricted XML to Good-Quality JSON'/><author><name>John Cowan</name><uri>http://www.blogger.com/profile/11452247999156925669</uri><email>cowan@ccil.org</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08813191556311604399'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11807812.post-2301921790428411405</id><published>2008-09-17T18:42:00.004-04:00</published><updated>2008-09-17T18:48:37.529-04:00</updated><title type='text'>I before E except after C</title><content type='html'>&lt;p&gt;Here's a better version of the little poem.  I don't know who wrote it; I touched it up a bit for better rhythm:&lt;/p&gt;

&lt;p&gt;When &lt;span style="font-style: italic;"&gt;IE&lt;/span&gt; and &lt;span style="font-style: italic;"&gt;EI&lt;/span&gt; both say&lt;span style="font-style: italic;"&gt;&lt;span style="font-style: italic;"&gt; &lt;/span&gt;EE&lt;/span&gt;,&lt;br/&gt;

Who can tell which it should be?&lt;br/&gt;

After &lt;span style="font-style: italic;"&gt;C&lt;/span&gt;, use &lt;span style="font-style: italic;"&gt;E&lt;/span&gt; then &lt;span style="font-style: italic;"&gt;I&lt;/span&gt;;&lt;br/&gt;

Otherwise &lt;span style="font-style: italic;"&gt;IE&lt;/span&gt; will apply.&lt;br/&gt;

Some exceptions we may note&lt;br/&gt;

Which one needs to learn by rote:&lt;br/&gt;

&lt;span style="font-style: italic;"&gt;Protein&lt;/span&gt;, &lt;span style="font-style: italic;"&gt;caffeine&lt;/span&gt;, &lt;span style="font-style: italic;"&gt;weird&lt;/span&gt;, and &lt;span style="font-style: italic;"&gt;seize&lt;/span&gt;,&lt;br/&gt;

And in the U.S., &lt;span style="font-style: italic;"&gt;leisure&lt;/span&gt;, please.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11807812-2301921790428411405?l=recycledknowledge.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://recycledknowledge.blogspot.com/feeds/2301921790428411405/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11807812&amp;postID=2301921790428411405' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11807812/posts/default/2301921790428411405'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11807812/posts/default/2301921790428411405'/><link rel='alternate' type='text/html' href='http://recycledknowledge.blogspot.com/2008/09/i-before-e-except-after-c.html' title='I before E except after C'/><author><name>John Cowan</name><uri>http://www.blogger.com/profile/11452247999156925669</uri><email>cowan@ccil.org</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08813191556311604399'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11807812.post-7610624774661747320</id><published>2008-07-01T23:57:00.001-04:00</published><updated>2008-07-01T23:58:23.996-04:00</updated><title type='text'>Dorian pictures</title><content type='html'>See the &lt;a href="http://www.flickr.com/photos/7731152@N03/tags/dorian/"&gt;tagged Flickr photostream&lt;/a&gt;.  I will add to this.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11807812-7610624774661747320?l=recycledknowledge.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://recycledknowledge.blogspot.com/feeds/7610624774661747320/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11807812&amp;postID=7610624774661747320' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11807812/posts/default/7610624774661747320'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11807812/posts/default/7610624774661747320'/><link rel='alternate' type='text/html' href='http://recycledknowledge.blogspot.com/2008/07/dorian-pictures.html' title='Dorian pictures'/><author><name>John Cowan</name><uri>http://www.blogger.com/profile/11452247999156925669</uri><email>cowan@ccil.org</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08813191556311604399'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11807812.post-7004138381624540688</id><published>2008-06-18T23:16:00.003-04:00</published><updated>2008-06-18T23:51:48.379-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='verse dorian'/><title type='text'>Dorian Sion Cowan</title><content type='html'>&lt;p&gt;My grandson Dorian was born at 9:08 PM yesterday, June 17, 2008 (New York time).  He weighed 9 lb 0.9 oz (4110 g) at birth, and was 22 inches (56 cm) long.  And he is the Best Baby In The World.&lt;/p&gt;

&lt;p&gt;(Well, when I say that, I make a mental reservation in favor of Irene, Dorian's mommy, who is now almost 21 but was certainly the Best Baby in her day.)&lt;/p&gt;

&lt;p&gt;Baby and mother are doing wonderfully well -- Dorian is starting to breastfeed very nicely, and already knows a great many Proto-Indo-European roots.  Irene's Caesarean incision is still very sore, and the IV is in her hand, not her arm, which makes handling him a little awkward for her.  Her best friends have been hovering around the two of them, and so have Gale and I as far as we have been able.  They will be coming home Friday morning.&lt;/p&gt;

&lt;p&gt;Anyhow, I sang him a lullaby the night he was born, not that he needed it -- he was pretty well drifting off anyhow.  But even though my voice was cracking, I needed to sing it to him.  It's by &lt;a href="http://en.wikipedia.org/wiki/Fred_Small"&gt;Fred Small&lt;/a&gt;, and is called &lt;a href="http://lyricsplayground.com/alpha/songs/e/everythingpossible.shtml"&gt;"Everything Possible"&lt;/a&gt;. This is the slightly altered version of the chorus that Dorian actually got:

&lt;p&gt;You can be anybody you want to be,&lt;br /&gt;
You can love whomever you will.&lt;br /&gt;
You can travel any country where your heart leads,&lt;br /&gt;
And know I will love you still.&lt;br /&gt;
You can live by yourself, you can gather friends around,&lt;br /&gt;
Or find one special one,&lt;br /&gt;
And the only measure of your words and your deeds&lt;br /&gt;
Is the love you leave behind you when you're gone.&lt;/p&gt;

&lt;p&gt;And this is the second song he heard from me, this morning when I stopped by to see him:&lt;/p&gt;

&lt;p&gt;Rockabye Dorian, on the tree-top&lt;br /&gt;
When you are fed, your poop will go plop&lt;br /&gt;
When you have plopped, your diaper we'll change&lt;br /&gt;
And then you'll be cleaned up and happy again.&lt;/p&gt;

&lt;p&gt;Okay, it doesn't quite rhyme, but it's &lt;i&gt;his&lt;/i&gt;.&lt;/p&gt;

&lt;p&gt;&lt;i&gt;Dorian, if you are reading this, you already know your grandfather is a crazy old man who embarrasses the hell out of people.  You'll live this one down too.&lt;/i&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11807812-7004138381624540688?l=recycledknowledge.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://recycledknowledge.blogspot.com/feeds/7004138381624540688/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11807812&amp;postID=7004138381624540688' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11807812/posts/default/7004138381624540688'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11807812/posts/default/7004138381624540688'/><link rel='alternate' type='text/html' href='http://recycledknowledge.blogspot.com/2008/06/dorian-sion-cowan.html' title='Dorian Sion Cowan'/><author><name>John Cowan</name><uri>http://www.blogger.com/profile/11452247999156925669</uri><email>cowan@ccil.org</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08813191556311604399'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11807812.post-1723619286372266081</id><published>2008-05-04T15:04:00.002-04:00</published><updated>2008-05-04T15:05:09.550-04:00</updated><title type='text'>Essentialist Explanations, 14th edition</title><content type='html'>As always, posted &lt;a href="http://www.ccil.org/~cowan/essential.html"&gt;here&lt;/a&gt;.  We are getting close to 1000 entries -- keep them coming in!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11807812-1723619286372266081?l=recycledknowledge.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://recycledknowledge.blogspot.com/feeds/1723619286372266081/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11807812&amp;postID=1723619286372266081' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11807812/posts/default/1723619286372266081'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11807812/posts/default/1723619286372266081'/><link rel='alternate' type='text/html' href='http://recycledknowledge.blogspot.com/2008/05/essentialist-explanations-14th-edition.html' title='Essentialist Explanations, 14th edition'/><author><name>John Cowan</name><uri>http://www.blogger.com/profile/11452247999156925669</uri><email>cowan@ccil.org</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08813191556311604399'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11807812.post-656658563579578471</id><published>2008-04-25T02:11:00.002-04:00</published><updated>2008-04-25T02:24:42.127-04:00</updated><title type='text'>Eulogy</title><content type='html'>&lt;p&gt;The following was said of &lt;a href="http://en.wikipedia.org/wiki/David_Ricardo"&gt;David Ricardo&lt;/a&gt; by &lt;a href="http://en.wikipedia.org/wiki/Maria_Edgeworth"&gt;Maria Edgeworth&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;I never argued or discussed a question with any person who argues more fairly, or less for victory and more for truth.  He gives full weight to every argument brought against him, and seems not to be on any side of the question for one instant longer than the conviction of his mind is on that side.  It seems quite indifferent to him whether you find the truth or whether he finds it, provided it be found.&lt;/blockquote&gt;

&lt;p&gt;Or more concisely:  He wanted to &lt;i&gt;be&lt;/i&gt; right, whether or not he &lt;i&gt;had been&lt;/i&gt; right.&lt;/p&gt;

&lt;p&gt;Ricardo died at fifty-one.  I myself am almost fifty, and if I were to die next year, I hope as much could truthfully be said of me.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11807812-656658563579578471?l=recycledknowledge.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://recycledknowledge.blogspot.com/feeds/656658563579578471/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11807812&amp;postID=656658563579578471' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11807812/posts/default/656658563579578471'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11807812/posts/default/656658563579578471'/><link rel='alternate' type='text/html' href='http://recycledknowledge.blogspot.com/2008/04/eulogy.html' title='Eulogy'/><author><name>John Cowan</name><uri>http://www.blogger.com/profile/11452247999156925669</uri><email>cowan@ccil.org</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08813191556311604399'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11807812.post-8553363026788419371</id><published>2008-03-19T10:30:00.002-04:00</published><updated>2008-03-19T10:50:37.664-04:00</updated><title type='text'>On the word "bumblebee"</title><content type='html'>&lt;p&gt;The story of the word &lt;i&gt;bumblebee&lt;/i&gt; is curious, but (contra &lt;a href="http://heideas.blogspot.com/2006/03/hippo-birdie-to-this-blog.html"&gt;Mr. Burns of the &lt;i&gt;Simpsons&lt;/i&gt;&lt;/a&gt;) certainly doesn't lead back to a form like &lt;i&gt;bumbled bee&lt;/i&gt;, in the way that &lt;i&gt;ice cream&lt;/i&gt; leads back to &lt;i&gt;iced cream&lt;/i&gt;, or the American form &lt;i&gt;skim milk&lt;/i&gt; descends from the form &lt;i&gt;skimmed milk&lt;/i&gt; still current elsewhere.  The &lt;i&gt;bee&lt;/i&gt; part is transparent, and there is a Middle English verb &lt;i&gt;bomb(e)len&lt;/i&gt;,  meaning to make a humming sound, presumably of imitative origin.  So there you are.&lt;/p&gt;

&lt;p&gt;However, it's clear that the older form was &lt;i&gt;humble-bee&lt;/i&gt;, where &lt;i&gt;hum(b)le&lt;/i&gt; is an intensive of &lt;i&gt;hum&lt;/i&gt;, which is also presumably of imitative origin.  Whether &lt;i&gt;bumblebee&lt;/i&gt; is a new coinage based on  &lt;i&gt;bombelen&lt;/i&gt;, or whether it is an alteration of &lt;i&gt;humble-bee&lt;/i&gt; by dissimilation, or a mixture of both, it's impossible to say.&lt;/p&gt;

&lt;p&gt;But when we look in &lt;a href="http://starling.rinet.ru/cgi-bin/response.cgi?root=config&amp;morpho=0&amp;basename=%5Cdata%5Cie%5Cpokorny&amp;first=1&amp;text_root=kem-&amp;method_root=substring&amp;text_meaning=&amp;method_meaning=substring&amp;text_ger_mean=&amp;method_ger_mean=substring&amp;text_grammar=&amp;method_grammar=substring&amp;text_comments=&amp;method_comments=substring&amp;text_derivative=&amp;method_derivative=substring&amp;text_material=&amp;method_material=substring&amp;text_ref=&amp;method_ref=substring&amp;text_seealso=&amp;method_seealso=substring&amp;text_pages=&amp;method_pages=substring&amp;text_any=&amp;method_any=substring&amp;sort=number"&gt;Pokorny&lt;/a&gt;'s etymological dictionary of Indo-European for &lt;i&gt;hum&lt;/i&gt;, we see it under the root &lt;i&gt;kem²-&lt;/i&gt;, as expected by &lt;a href="http://en.wikipedia.org/wiki/Grimm%27s_law"&gt;Grimm's Law&lt;/a&gt;, and with Lithuanian reflexes in &lt;i&gt;k-&lt;/i&gt; and Slavic ones in &lt;i&gt;ch-&lt;/i&gt; that also refer to humming noises and bees.  That certainly does not sound imitative to me -- the sharp sound of [k] is nothing like a bee hum, which has no beginning and no end.  So in the end the obvious imitative nature of &lt;i&gt;bumblebee&lt;/i&gt; leads to &lt;a href="http://www.phrases.org.uk/meanings/31000.html"&gt;a riddle wrapped in a mystery inside an enigma&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;And there remains at least one dangling oddity:  Pokorny also lists an Old Persian -- at least I think that's what "Ai." means -- reflex meaning "yak".  Yaks grunt (as the Linnaean name &lt;i&gt;Bos grunniens&lt;/i&gt; indicates), they don't hum, and what is Old Persian doing with an inherited word for "yak" anyhow?  English, like most modern languages, has borrowed its word from Tibetan.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11807812-8553363026788419371?l=recycledknowledge.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://recycledknowledge.blogspot.com/feeds/8553363026788419371/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11807812&amp;postID=8553363026788419371' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11807812/posts/default/8553363026788419371'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11807812/posts/default/8553363026788419371'/><link rel='alternate' type='text/html' href='http://recycledknowledge.blogspot.com/2008/03/on-word-bumblebee.html' title='On the word &quot;bumblebee&quot;'/><author><name>John Cowan</name><uri>http://www.blogger.com/profile/11452247999156925669</uri><email>cowan@ccil.org</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08813191556311604399'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11807812.post-580495910782642573</id><published>2008-03-03T14:22:00.004-05:00</published><updated>2008-04-20T20:08:09.463-04:00</updated><title type='text'>Elements or attributes?</title><content type='html'>Here's my contribution to the "elements vs. attributes" debate:&lt;br&gt;&lt;br&gt;General points:&lt;br&gt;&lt;br&gt;&lt;ol&gt;&lt;li&gt;Attributes are more restrictive than elements, and all designs have some elements, so an all-element design is simplest -- which is not the same as best.&lt;br&gt;&lt;br&gt;&lt;/li&gt;&lt;li&gt;In a tree-style data model, elements are typically represented internally as nodes, which use more memory than the strings used to represent attributes.  Sometimes the nodes are of different application-specific classes, which in many languages also takes up memory to represent the classes.&lt;br&gt;&lt;br&gt;&lt;/li&gt;&lt;li&gt;When streaming, elements are processed one at a time (possibly even piece by piece, depending on the XML parser you are using), whereas all the attributes of an element and their values are reported at once, which costs memory, particularly if some attribute values are very long.&lt;br&gt;&lt;br&gt;&lt;/li&gt;&lt;li&gt;Both element content and attribute values need to be escaped, so escaping should not be a consideration in the design.&lt;br&gt;&lt;br&gt;&lt;/li&gt;&lt;li&gt;In some programming languages and libraries, processing elements is easier; in others, processing attributes is easier.  Beware of using ease of processing as a criterion.  In particular, XSLT can handle either with equal facility.&lt;br&gt;&lt;br&gt;&lt;/li&gt;&lt;li&gt;If a piece of data should usually be shown to the user, use an element; if not, use an attribute.  (This rule is often violated for one reason or another.)&lt;br&gt;&lt;br&gt;&lt;/li&gt;&lt;li&gt;If you are extending an existing schema, do things by analogy to how things are done in that schema.&lt;br&gt;&lt;br&gt; &lt;/li&gt;&lt;li&gt;Sensible schema languages, meaning &lt;a title="RELAX NG" href="http://www.relaxng.org" id="ex1o"&gt;RELAX NG&lt;/a&gt;, treat elements and attributes symmetrically.  &lt;a title="Older" href="http://en.wikipedia.org/wiki/Document_Type_Definition" id="jlk5"&gt;Older&lt;/a&gt; and &lt;a title="XML Schema" href="http://www.w3.org/TR/2004/REC-xmlschema-0-20041028/" id="h2c3"&gt;cruder&lt;/a&gt; schema languages tend to have better support for elements.&lt;/li&gt;&lt;/ol&gt;&lt;br&gt;Using elements:&lt;br&gt;&lt;br&gt;&lt;ol&gt;&lt;li&gt;If something might appear more than once in a data model, use an element rather than introducing attributes with names like &lt;i&gt;part1, part2, part3&lt;/i&gt; ....&lt;br&gt;&lt;br&gt;&lt;/li&gt;&lt;li&gt;If order matters between two pieces of data, use elements for them: attributes are inherently unordered.&lt;br&gt;&lt;br&gt;&lt;/li&gt;&lt;li&gt;If a piece of data has, or might have, its own substructure, use it in an element: getting substructure into an attribute is always messy.  Similarly, if the data is a constituent part of some larger piece of data, put it in an element.&lt;br&gt;&lt;br&gt;&lt;/li&gt;&lt;li&gt;An exception to the previous rule: multiple whitespace-separated tokens can safely be put in an attribute.  In principle, the separator can be anything, but schema-language validators are currently only able to handle whitespace, so it's best to stick with that.&lt;br&gt;&lt;br&gt;&lt;/li&gt;&lt;li&gt;If a piece of data extends across multiple lines, use an element: XML parsers will change newlines in attribute values into spaces.&lt;br&gt;&lt;br&gt;&lt;/li&gt;&lt;li&gt;If a piece of data is in a natural language, put it in an element so you can use the xml:lang attribute to label the language being used.  Some kinds of natural-language text, like Japanese, also require &lt;a title="annotations" href="http://www.w3.org/TR/2001/REC-ruby-20010531" id="pa2f"&gt;annotations&lt;/a&gt; that are conventionally represented using child elements; right-to-left languages like Hebrew and Arabic may similarly require child elements to manage &lt;a title="bidirectionality" href="http://www.w3.org/TR/2001/REC-ruby-20010531" id="ehyv"&gt;bidirectionality&lt;/a&gt; properly.&lt;/li&gt;&lt;/ol&gt;&lt;br&gt;Using attributes:&lt;br&gt;&lt;br&gt;&lt;ol&gt;&lt;li&gt;If the data is a code from an enumeration, code list, or controlled vocabulary, put it in an attribute if possible.  For example, language tags, currency codes, medical diagnostic codes, etc. are best handled as attributes.&lt;br&gt;&lt;br&gt;&lt;/li&gt;&lt;li&gt;If a piece of data is really metadata on some other piece of data (for example, representing a class or role that the main data serves,  or specifying a method of processing it), put it in an attribute if possible.&lt;br&gt;&lt;br&gt;&lt;/li&gt;&lt;li&gt;In particular, if a piece of data is an ID (either a label or a reference to a label elsewhere in the document) for some other piece of data, put the identifying piece in an attribute.  When it's a label, use the name &lt;i&gt;xml:id&lt;/i&gt; for the attribute.&lt;br&gt;&lt;br&gt;&lt;/li&gt;&lt;li&gt;Hypertext references (hrefs) are conventionally put in attributes.&lt;br&gt;&lt;br&gt;&lt;/li&gt;&lt;li&gt;If a piece of data is applicable to an element and any descendant elements unless it is overridden in some of them, it is conventional to put it in an attribute.  Well-known examples are &lt;i&gt;xml:lang&lt;/i&gt;, &lt;i&gt;xml:space&lt;/i&gt;, &lt;i&gt;xml:base&lt;/i&gt;, and namespace declarations.&lt;br&gt;&lt;br&gt;&lt;/li&gt;&lt;li&gt;If terseness is really the &lt;i&gt;most&lt;/i&gt; important thing, use attributes, but consider gzip compression instead -- it works very well on documents with highly repetitive structures.&lt;/li&gt;&lt;/ol&gt;&lt;br&gt;Michael Kay says:&lt;br&gt;&lt;br&gt;&lt;div&gt;Beginners always ask this question.&lt;br&gt;Those with a little experience express their opinions passionately.&lt;br&gt;Experts tell you there is no right answer.&lt;br&gt;&lt;br&gt;I say:&lt;br&gt;&lt;br&gt; Newbies always ask:&lt;br&gt;      &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;"Elements or attributes?&lt;br&gt; Which will serve me best?"&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Those who know roar like lions;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Wise hackers smile like tigers.&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--a &lt;a title="tanka" href="http://en.wikipedia.org/wiki/Waka_%28poetry%29#Tanka" id="s3k3"&gt;tanka&lt;/a&gt;, or extended haiku&lt;br&gt;&lt;br&gt;Final words:&lt;br&gt;&lt;br&gt;Break &lt;i&gt;any or all&lt;/i&gt; of these rules rather than create a crude, arbitrary, disgusting mess of a design if that's what following them slavishly would give you.  In particular, random mixtures of attributes and child elements are hard to follow and hard to use, though it often makes good sense to use both when the data clearly fall into two different groups such as simple/complex or metadata/data.&lt;br&gt;&lt;/div&gt;&lt;br&gt;&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11807812-580495910782642573?l=recycledknowledge.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://recycledknowledge.blogspot.com/feeds/580495910782642573/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11807812&amp;postID=580495910782642573' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11807812/posts/default/580495910782642573'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11807812/posts/default/580495910782642573'/><link rel='alternate' type='text/html' href='http://recycledknowledge.blogspot.com/2008/03/elements-or-attributes.html' title='Elements or attributes?'/><author><name>John Cowan</name><uri>http://www.blogger.com/profile/11452247999156925669</uri><email>cowan@ccil.org</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08813191556311604399'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11807812.post-6086560591727200321</id><published>2008-02-07T15:44:00.001-05:00</published><updated>2008-02-07T16:10:05.908-05:00</updated><title type='text'>Which characters are excluded in XML 5th Edition names?</title><content type='html'>&lt;p&gt;The list of allowed name characters in the XML 1.0 Fifth Edition looks pretty miscellaneous.  The clue to what's really going on is that unlike the rule of earlier XML 1.0 versions, where everything not permitted was forbidden, now everything that is not forbidden is permitted.  (I emphasize that this is only about &lt;i&gt;name&lt;/i&gt; characters: every character is and always has been permitted in running text and attribute values except the ASCII controls.)&lt;/p&gt;

&lt;p&gt;So what's forbidden, and why?&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;The ASCII control characters and their 8-bit counterparts.  Obviously.&lt;/li&gt;

&lt;li&gt;The ASCII and Latin-1 symbolic characters, with the exceptions of hyphen, period, colon, underscore, and middle dot, which have always been permitted in XML names.  These characters are commonly used as syntax delimiters either in XML itself or in other languages, and so are excluded.&lt;/li&gt;

&lt;li&gt;The Greek question mark, which looks like a semicolon and is canonically equivalent to a regular semicolon.&lt;/li&gt;

&lt;li&gt;The General Punctuation block of Unicode, with the exceptions of the zero-width joiner, zero-width non-joiner, undertie, and character-tie characters, which are required in certain languages to spell words correctly.  Various kinds of blank spaces and assorted punctuation don't make sense in names.&lt;/li&gt;

&lt;li&gt;The various Unicode symbols blocks reserved for "pattern syntax", from U+2190 to U+2BFF.  These characters should never appear in identifiers of any sort, as they are reserved for use as syntactic delimiters in future languages that exploit non-ASCII syntax.  Many are assigned, some are not.&lt;/li&gt;

&lt;li&gt;The Ideographic Description Characters block, which is used to describe (not create) uncoded Chinese characters.&lt;/li&gt;

&lt;li&gt;The surrogate code units (which don't correspond to Unicode characters anyhow) and private-use characters.  Using the latter, in names or otherwise, is very bad for interoperability.&lt;/li&gt;

&lt;li&gt;The Plane 0 non-characters at U+FDD0 to U+FDEF, U+FFFE, and U+FFFF.  The non-characters on the other planes are allowed, not because they are a good idea, but to simplify implementation.&lt;/li&gt;&lt;/ul&gt;

&lt;p&gt;Note that the undertie and character tie, the European digits 0-9, and the diacritics in the Combining Characters block are not permitted at the start of a name.  Other characters could have sensibly been excluded, particularly combining characters that don't happen to be in the Combining Characters block, but it simplifies implementation to permit them.&lt;/p&gt;

&lt;p&gt;This list is intentionally sparse.  The new &lt;a href="http://www.w3.org/TR/2008/PER-xml-20080205/#sec-suggested-names"&gt;Appendix J&lt;/a&gt; gives a simplified set of non-binding suggestions for choosing names that are actually sensible.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11807812-6086560591727200321?l=recycledknowledge.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://recycledknowledge.blogspot.com/feeds/6086560591727200321/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11807812&amp;postID=6086560591727200321' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11807812/posts/default/6086560591727200321'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11807812/posts/default/6086560591727200321'/><link rel='alternate' type='text/html' href='http://recycledknowledge.blogspot.com/2008/02/which-characters-are-excluded-in-xml.html' title='Which characters are excluded in XML 5th Edition names?'/><author><name>John Cowan</name><uri>http://www.blogger.com/profile/11452247999156925669</uri><email>cowan@ccil.org</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08813191556311604399'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11807812.post-1873980162253596155</id><published>2008-02-06T16:56:00.000-05:00</published><updated>2008-02-06T17:00:52.420-05:00</updated><title type='text'>Who do I work for?</title><content type='html'>&lt;p&gt;Well, a company that provides an email service with about 10&lt;sup&gt;7&lt;/sup&gt; users, and a calendar service with about 10&lt;sup&gt;6&lt;/sup&gt; users, and a news syndicate with about 10&lt;sup&gt;4&lt;/sup&gt; sources, and a video sharing facility that displays about 10&lt;sup&gt;8&lt;/sup&gt; video views a day, and an image index with about 10&lt;sup&gt;9&lt;/sup&gt; images.  And it connects about 10&lt;sup&gt;5&lt;/sup&gt; advertisers with about 10&lt;sup&gt;5&lt;/sup&gt; online publishers and 10&lt;sup&gt;3&lt;/sup&gt; offline ones, and provides online wallets for about 10&lt;sup&gt;6&lt;/sup&gt; buyers and 10&lt;sup&gt;5&lt;/sup&gt; sellers, and is localized in about 10&lt;sup&gt;2&lt;/sup&gt; interface languages, and employs about 10&lt;sup&gt;4&lt;/sup&gt; people, and is rated 10&lt;sup&gt;0&lt;/sup&gt; in the list of best companies to work for.  And it is not best known for any of these things.&lt;/p&gt;

&lt;p&gt;Who are they?&lt;/p&gt;

&lt;p&gt;10&lt;sup&gt;100&lt;/sup&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11807812-1873980162253596155?l=recycledknowledge.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://recycledknowledge.blogspot.com/feeds/1873980162253596155/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11807812&amp;postID=1873980162253596155' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11807812/posts/default/1873980162253596155'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11807812/posts/default/1873980162253596155'/><link rel='alternate' type='text/html' href='http://recycledknowledge.blogspot.com/2008/02/who-do-i-work-for.html' title='Who do I work for?'/><author><name>John Cowan</name><uri>http://www.blogger.com/profile/11452247999156925669</uri><email>cowan@ccil.org</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08813191556311604399'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11807812.post-8936897475668088758</id><published>2008-02-06T11:07:00.000-05:00</published><updated>2008-02-06T11:38:47.360-05:00</updated><title type='text'>Justice at last, part two</title><content type='html'>&lt;p&gt;The &lt;a href="http://www.w3.org/TR/2008/PER-xml-20080205"&gt;Fifth Edition&lt;/a&gt; of &lt;a href="http://www.w3.org/TR/REC-xml/"&gt;XML 1.0&lt;/a&gt; is now a &lt;a href="http://www.w3.org/2005/10/Process-20051014/tr.html#q76"&gt;Proposed Edited Recommendation&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;So what, you say.  Ho hum, you say.  A bunch of errata folded in to a new edition, you say.  No real change &lt;i&gt;here&lt;/i&gt;, you say.&lt;/p&gt;

&lt;p&gt;But no, not at all, but quite otherwise.  There's a &lt;i&gt;big&lt;/i&gt; change here, assuming this PER gets past the W3C membership vote and becomes a full W3C Recommendation.   There's something happening here, and what it is is eminently clear.&lt;/p&gt;

&lt;p&gt;Justice is coming at last to XML 1.0.&lt;/p&gt;

&lt;p&gt;For a long time, the characters used in the markup of an XML document -- element names, attribute names, processing instruction targets, and so on -- have been limited to those that were allowed in Unicode 2.0, which was issued in July 1996.  If you wanted your element names in English, or French, or Arabic, or Hindi, or Mandarin Chinese, all was good.  But if you wanted them in the national languages of Sri Lanka, or Eritrea, or Cambodia, or in Cantonese Chinese, to say nothing of lots and lots of minority languages, you were simply out of luck -- forever.&lt;/p&gt;

&lt;p&gt;Not fair, people.&lt;/p&gt;

&lt;p&gt;I tried fixing this the right way, by pushing the &lt;a href="http://www.w3.org/XML/Core/"&gt;XML Core WG&lt;/a&gt; of the W3C to issue &lt;a href="http://www.w3.org/TR/xml11/"&gt;XML 1.1&lt;/a&gt;.  It acquired some additional cruft along the way, some good, some in hindsight bad.  It was roundly booed and even more roundly ignored.  In particular, at least one 800-pound gorilla voted against it at W3C and refused to implement it.&lt;/p&gt;

&lt;p&gt;Now it's being done the wrong way.  We are simply extending the set of legal name characters to almost every Unicode character, relying on document authors and schema authors not to be idiots about it.  Is that an incompatible change to  XML 1.0 well-formedness?  Hell yes.  Is any existing XML 1.0 document going to become &lt;i&gt;not&lt;/i&gt; well-formed?  Hell no.  We learned our lesson on that one.&lt;/p&gt;

&lt;p&gt;Who supports this?  I won't name names, but XML parser authors and distributors from gorillas to gibbons have been consulted in advance this time, and there are no screaming objections.  Some will probably provide an option to turn Fifth Edition support on, others will turn it on by default.  Unlike XML 1.1 support, this is actually a simplification: the big table of legal characters in &lt;a href="http://www.w3.org/TR/REC-xml/#CharClasses"&gt;Appendix B&lt;/a&gt; just isn't needed any more.&lt;/p&gt;

&lt;p&gt;"Hot diggity (or however you say that in &lt;a href=""&gt;Amharic&lt;/a&gt;).  When can I start using this?"  Not so fast.  First the W3C has to vote it in -- if they don't, all bets are off.  Then implementations have to spread through the XML ecosystem, including not only development but deployment.  It'll take years.  But it only has to be done once, for all the writing systems that aren't in Unicode yet will all Just Work when they do get implemented.&lt;/p&gt;

&lt;p&gt;Ask not what you can do for XML, but what XML can do for you.&lt;/p&gt;

&lt;p&gt;It's morning in the world.&lt;/p&gt;

&lt;p&gt;(Oh yes:  Send comments before 16 May 2008 to &lt;a href="mailto:xml-editor@w3.org"&gt;&lt;i&gt;xml-editor@w3.org&lt;/i&gt;&lt;/a&gt;.)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11807812-8936897475668088758?l=recycledknowledge.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://recycledknowledge.blogspot.com/feeds/8936897475668088758/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11807812&amp;postID=8936897475668088758' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11807812/posts/default/8936897475668088758'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11807812/posts/default/8936897475668088758'/><link rel='alternate' type='text/html' href='http://recycledknowledge.blogspot.com/2008/02/justice-at-last-part-two.html' title='Justice at last, part two'/><author><name>John Cowan</name><uri>http://www.blogger.com/profile/11452247999156925669</uri><email>cowan@ccil.org</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08813191556311604399'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11807812.post-4361173512171333308</id><published>2008-02-06T10:50:00.001-05:00</published><updated>2008-02-06T11:06:15.341-05:00</updated><title type='text'>Justice at last</title><content type='html'>&lt;p&gt;There was an old man from &lt;a href="http://en.wikipedia.org/wiki/Nantucket%2C_Massachusetts"&gt;Nantucket&lt;/a&gt;&lt;br/&gt;
Who kept all his cash in a bucket.&lt;br/&gt;
&amp;#xA0;&amp;#xA0;&amp;#xA0;But his daughter Nan&lt;br/&gt;
&amp;#xA0;&amp;#xA0;&amp;#xA0;Ran away with a man&lt;br/&gt;
And as for the bucket, Nantucket.&lt;/p&gt;

&lt;p&gt;The pair of them went to &lt;a href="http://en.wikipedia.org/wiki/Manhasset%2C_New_York"&gt;Manhasset&lt;/a&gt;,&lt;br/&gt;
The man and his Nan with the asset.&lt;br/&gt;
&amp;#xA0;&amp;#xA0;&amp;#xA0;Pa followed them there&lt;br/&gt;
&amp;#xA0;&amp;#xA0;&amp;#xA0;But they left in a tear&lt;br/&gt;
And as for the asset, Manhasset.&lt;/p&gt;

&lt;p&gt;He followed them next to &lt;a href="http://en.wikipedia.org/wiki/Pawtucket%2C_Rhode_Island"&gt;Pawtucket&lt;/a&gt;,&lt;br/&gt;
Nan and her man and the bucket.&lt;br/&gt;
&amp;#xA0;&amp;#xA0;&amp;#xA0;Pa said to the man,&lt;br/&gt;
&amp;#xA0;&amp;#xA0;&amp;#xA0;"You can &lt;i&gt;keep&lt;/i&gt; my sweet Nan",&lt;br/&gt;
But as for the bucket, Pawtucket.&lt;/p&gt;

&lt;p&gt;(This works best if you pronounce "Pa" as "paw", assuming you make any difference between the two -- in New England, there definitely is.  If your "aw" sounds like "ah", you can hear the "aw" sound the rest of us use by saying "Awwwwwwwwww!")&lt;/p&gt;

&lt;p&gt;Here's the trio's route:&lt;br/&gt;
&amp;#xA0;&amp;#xA0;&amp;#xA0;note the doubling back&lt;br/&gt;
&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;to avoid pursuit.&lt;/p&gt;

&lt;iframe width="425" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="http://maps.google.com/maps?f=d&amp;amp;hl=en&amp;amp;geocode=&amp;amp;saddr=Nantucket,+MA&amp;amp;daddr=Manhasset,+NY+to:Pawtucket,+RI&amp;amp;mra=ps&amp;amp;mrcr=0,1&amp;amp;sll=41.39497,-71.96248&amp;amp;sspn=2.83512,6.767578&amp;amp;ie=UTF8&amp;amp;om=0&amp;amp;ll=41.39497,-71.96248&amp;amp;spn=2.83512,6.767578&amp;amp;output=embed&amp;amp;s=AARTsJp8rAfC1A0QevxFnzeGHIS6UwcMUg"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;small&gt;&lt;a href="http://maps.google.com/maps?f=d&amp;amp;hl=en&amp;amp;geocode=&amp;amp;saddr=Nantucket,+MA&amp;amp;daddr=Manhasset,+NY+to:Pawtucket,+RI&amp;amp;mra=ps&amp;amp;mrcr=0,1&amp;amp;sll=41.39497,-71.96248&amp;amp;sspn=2.83512,6.767578&amp;amp;ie=UTF8&amp;amp;om=0&amp;amp;ll=41.39497,-71.96248&amp;amp;spn=2.83512,6.767578&amp;amp;source=embed" style="color:#0000FF;text-align:left"&gt;View Larger Map&lt;/a&gt;&lt;/small&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11807812-4361173512171333308?l=recycledknowledge.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://recycledknowledge.blogspot.com/feeds/4361173512171333308/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11807812&amp;postID=4361173512171333308' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11807812/posts/default/4361173512171333308'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11807812/posts/default/4361173512171333308'/><link rel='alternate' type='text/html' href='http://recycledknowledge.blogspot.com/2008/02/justice-at-last.html' title='Justice at last'/><author><name>John Cowan</name><uri>http://www.blogger.com/profile/11452247999156925669</uri><email>cowan@ccil.org</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08813191556311604399'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11807812.post-7202508345953099835</id><published>2008-01-31T00:57:00.000-05:00</published><updated>2008-01-31T01:01:52.515-05:00</updated><title type='text'>Taggle, a TagSoup in C++, available now</title><content type='html'>&lt;p&gt;A company called &lt;a href="http://www.jezuk.co.uk"&gt;JezUK&lt;/a&gt;  has released &lt;a href="http://www.jezuk.co.uk/arabica/log?id=3591"&gt;Taggle&lt;/a&gt;, which is a straight port of TagSoup 1.2 to C++.  It's a part of &lt;a href="http://www.jezuk.co.uk/arabica"&gt;Arabica&lt;/a&gt;, a C++ XML toolkit providing SAX, DOM, XPath, and partial XSLT.  I have no connection with JezUK (except apparently as source of inspiration).&lt;/p&gt;

&lt;p&gt;The author says the code is alpha-quality now, so he'd appreciate lots of testers to shake out bugs.  C++ users, go to it!  Having a C++ port will be a real enhancement for TagSoup.&lt;/p&gt;

&lt;p&gt;The code is currently in public Subversion: you can fetch it with &lt;kbd&gt;svn co svn://jezuk.dnsalias.net/jezuk/arabica/branches/tagsoup-port&lt;/kbd&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11807812-7202508345953099835?l=recycledknowledge.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://recycledknowledge.blogspot.com/feeds/7202508345953099835/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11807812&amp;postID=7202508345953099835' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11807812/posts/default/7202508345953099835'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11807812/posts/default/7202508345953099835'/><link rel='alternate' type='text/html' href='http://recycledknowledge.blogspot.com/2008/01/taggle-tagsoup-in-c-available-now.html' title='Taggle, a TagSoup in C++, available now'/><author><name>John Cowan</name><uri>http://www.blogger.com/profile/11452247999156925669</uri><email>cowan@ccil.org</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08813191556311604399'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11807812.post-7489259128400231915</id><published>2008-01-10T02:53:00.000-05:00</published><updated>2008-01-10T02:56:35.678-05:00</updated><title type='text'>Revised home page</title><content type='html'>&lt;p&gt;I've rewritten my home page at &lt;a href="http://www.ccil.org/~cowan"&gt; &lt;i&gt;http://www.ccil.org/~cowan&lt;/i&gt;&lt;/a&gt;. Some interesting old things that were on my site but had no pointers from there now have little writeups, and I've reorganized it a bit -- but it's still the ultimate minimalist home page, no pictures or graphics.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11807812-7489259128400231915?l=recycledknowledge.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://recycledknowledge.blogspot.com/feeds/7489259128400231915/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11807812&amp;postID=7489259128400231915' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11807812/posts/default/7489259128400231915'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11807812/posts/default/7489259128400231915'/><link rel='alternate' type='text/html' href='http://recycledknowledge.blogspot.com/2008/01/revised-home-page.html' title='Revised home page'/><author><name>John Cowan</name><uri>http://www.blogger.com/profile/11452247999156925669</uri><email>cowan@ccil.org</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08813191556311604399'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11807812.post-4534807299512533466</id><published>2008-01-05T12:22:00.000-05:00</published><updated>2008-01-07T15:45:39.155-05:00</updated><title type='text'>TagSoup 1.2 released at long last</title><content type='html'>&lt;p&gt;There are a great many changes, most of them fixes for long-standing bugs, in this release.  Only the most important are listed here; for the rest, see the CHANGES file in the source distribution.  Very special thanks to Jojo Dijamco, whose intensive efforts at debugging made this release a usable upgrade rather than a useless mass of undetected bugs.&lt;/p&gt;

&lt;ul&gt;

&lt;li&gt;&lt;p&gt;As noted above, I have changed the license to Apache 2.0.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;The default content model for bogons (unknown elements) is now ANY rather than EMPTY.  &lt;b&gt;This is a breaking change&lt;/b&gt;, which I have done only because there was so much demand for it.  It can be undone on the command line with the &lt;code&gt;--emptybogons&lt;/code&gt; switch, or programmatically with &lt;code&gt;parser.setFeature(Parser.emptyBogonsFeature, true)&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;The processing of entity references in attribute values has finally been fixed to do what browsers do.  That is, a reference is only recognized if it is properly terminated by a semicolon; otherwise it is treated as plain text.  This means that URIs like &lt;code&gt;foo?cdown=32&amp;amp;cup=42&lt;/code&gt; are no longer seen as containing an instance of the &amp;cup; character (whose name happens to be &lt;code&gt;cup&lt;/code&gt;).&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Several new switches have been added:

&lt;ul&gt;

&lt;li&gt;&lt;p&gt;&lt;code&gt;--doctype-system&lt;/code&gt; and &lt;code&gt;--doctype-public&lt;/code&gt; force a &lt;code&gt;DOCTYPE&lt;/code&gt; declaration to be output and allow setting the system and public identifiers.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;code&gt;--standalone&lt;/code&gt; and &lt;code&gt;--version&lt;/code&gt; allow control of the XML declaration that is output.  (Note that TagSoup's XML output is always version 1.0, even if you use &lt;code&gt;--version=1.1&lt;/code&gt;.)&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;code&gt;--norootbogons&lt;/code&gt; causes unknown elements not to be allowed as the document root element.  Instead, they are made children of the default root element (the &lt;code&gt;html&lt;/code&gt; element for HTML).&lt;/p&gt;&lt;/li&gt;

&lt;/ul&gt; &lt;li&gt;&lt;p&gt;The TagSoup core now supports character entities with values above U+FFFF.  As a consequence, the HTML schema now supports all 2,210 standard character entities from the &lt;a href="http://www.w3.org/TR/2007/WD-xml-entity-names-20071214"&gt; 2007-12-14 draft of XML Entity Definitions for Characters&lt;/a&gt;, except the 94 which require more than one Unicode character to represent.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;The SAX events &lt;code&gt;startPrefixMapping&lt;/code&gt; and &lt;code&gt;endPrefixMapping&lt;/code&gt; are now being reported for all cases of foreign elements and attributes.&lt;/li&gt;

&lt;li&gt;&lt;p&gt;All bugs around newline processing on Windows should now be gone.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;A number of content models have been loosened to allow elements to appear in new and non-standard (but commonly found) places.  In particular, tables are now allowed inside paragraphs, against the letter of the W3C specification.&lt;/p&gt;

&lt;li&gt;&lt;p&gt;Since the &lt;code&gt;span&lt;/code&gt; element is intended for fine control of appearance using CSS, it should never have been a restartable element.  This very long-standing bug has now been fixed.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;The following non-standard elements are now at least partly supported: &lt;code&gt;bgsound&lt;/code&gt;, &lt;code&gt;blink&lt;/code&gt;, &lt;code&gt;canvas&lt;/code&gt;, &lt;code&gt;comment&lt;/code&gt;, &lt;code&gt;listing&lt;/code&gt;, &lt;code&gt;marquee&lt;/code&gt;, &lt;code&gt;nobr&lt;/code&gt;, &lt;code&gt;rbc&lt;/code&gt;, &lt;code&gt;rb&lt;/code&gt;, &lt;code&gt;rp&lt;/code&gt;, &lt;code&gt;rtc&lt;/code&gt;, &lt;code&gt;rt&lt;/code&gt;, &lt;code&gt;ruby&lt;/code&gt;, &lt;code&gt;wbr&lt;/code&gt;, &lt;code&gt;xmp&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;In HTML output mode, boolean attributes like &lt;code&gt;checked&lt;/code&gt; are now output as such, rather than in XML style as &lt;code&gt;checked="checked"&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Runs of &amp;lt; characters such as &amp;lt;&amp;lt; and &amp;lt;&amp;lt;&amp;lt; are now handled correctly in text rather than being transformed into extremely bogus start-tags.&lt;/p&gt;&lt;/li&gt;

&lt;/ul&gt;


&lt;p&gt;&lt;a href="http://www.ccil.org/~cowan/XML/tagsoup/tagsoup-1.2.jar"&gt;Download&lt;/a&gt; the TagSoup 1.2 jar
file here.  It's about 87K long.&lt;br/&gt;
&lt;a href="http://www.ccil.org/~cowan/XML/tagsoup/tagsoup-1.2-src.zip"&gt;Download&lt;/a&gt; the full TagSoup 1.2 source here.  If you don't have zip, you can use jar to unpack it.  &lt;br/&gt;
&lt;a href="http://www.ccil.org/~cowan/XML/tagsoup/CHANGES"&gt;Download&lt;/a&gt; the current CHANGES file here.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11807812-4534807299512533466?l=recycledknowledge.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://recycledknowledge.blogspot.com/feeds/4534807299512533466/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11807812&amp;postID=4534807299512533466' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11807812/posts/default/4534807299512533466'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11807812/posts/default/4534807299512533466'/><link rel='alternate' type='text/html' href='http://recycledknowledge.blogspot.com/2008/01/tagsoup-12-released-at-long-last.html' title='TagSoup 1.2 released at long last'/><author><name>John Cowan</name><uri>http://www.blogger.com/profile/11452247999156925669</uri><email>cowan@ccil.org</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08813191556311604399'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11807812.post-4692234762491482351</id><published>2007-08-19T10:17:00.000-04:00</published><updated>2007-08-19T11:09:40.628-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='verse'/><title type='text'>Down vs. across</title><content type='html'>&lt;p&gt;This turn-of-the-eighteenth-century poem reads one way down, another way across.  The "down" version was politically orthodox back in the reign of &lt;a href="http://en.wikipedia.org/wiki/George_I_of_Great_Britain"&gt;George I&lt;/a&gt;, whereas the "across" version represented treasonous &lt;a href="http://en.wikipedia.org/wiki/Jacobitism"&gt;Jacobite&lt;/a&gt; sympathies.&lt;/p&gt;

&lt;table&gt;&lt;tr&gt;&lt;td&gt;I love with all my heart&lt;/td&gt;&lt;td&gt;                The Tory party here&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;The Hanoverian part&lt;/td&gt;&lt;td&gt;                     Most hateful doth appear&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;And for their settlement&lt;/td&gt;&lt;td&gt;                I ever have denied&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;My conscience gives consent&lt;/td&gt;&lt;td&gt;             To be on James's side&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Most glorious is the cause&lt;/td&gt;&lt;td&gt;              To be with such a king&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;To fight for George's laws&lt;/td&gt;&lt;td&gt;              Will Britain's ruin bring&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;This is my mind and heart&lt;/td&gt;&lt;td&gt;               In this opinion I&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Though none should take my part&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/td&gt;&lt;td&gt;         Resolve to live and die&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11807812-4692234762491482351?l=recycledknowledge.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://recycledknowledge.blogspot.com/feeds/4692234762491482351/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11807812&amp;postID=4692234762491482351' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11807812/posts/default/4692234762491482351'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11807812/posts/default/4692234762491482351'/><link rel='alternate' type='text/html' href='http://recycledknowledge.blogspot.com/2007/08/down-vs-across.html' title='Down vs. across'/><author><name>John Cowan</name><uri>http://www.blogger.com/profile/11452247999156925669</uri><email>cowan@ccil.org</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08813191556311604399'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>5</thr:total></entry></feed>