The Universe of Discourse


Wed, 19 Feb 2025

Think speak, now speak!

Katara is now in her sixth semester in college and can speak Mandarin. I am so proud!

For class she recently wrote a talk (in Mandarin) about Hua Guofeng, the often overlooked second chairman of the Chinese Communist Party. She videoed herself giving the talk, and posted it to YouTube. This somehow attracted over 700 views, and comments from a number of strangers, most of which were in Chinese. Some even offered suggestions — only minor suggestions, which she found very gratifying.

One comment, however, expressed irritation. Google translates it as:

You, a foreigner, don’t need to comment on the Chinese people’s affairs.

Shortly afterward though, there came a defense, which began with this delightful phrase:

想讲就讲

An idiomatic translation is "You can talk if you want!"

A character-by-character translation is:

  • 想 - think
  • 讲 - speak
  • 就 - right now
  • 讲 - speak

which I just love. If anyone is looking for a name for their new Chinese-language-themed blog, I think this would be a great choice.


[Other articles in category /lang] permanent link

Tue, 18 Feb 2025

David McShane's mural with 18 Franks, revealed

Yesterday I offered Gentle Readers a chance to identify the 18 famous Franks in David McShane's mural.

  1. Benjamin Franklin
  2. Frankie Avalon
  3. Detail of ornament from the Pennsylvania Academy of the Fine Arts building, designed by architect Frank Furness
  4. A frankfurter
  5. Aretha Franklin


I did not recognize the PAFA architectural detail myself, I had to find out from the Mural Arts website. I have sometimes looked for this detail on the PAFA building, but I have never found it.

  1. Barney Frank
  2. Frankenstein's monster
  3. Franklin Delano Roosevelt
  4. Frank Zappa


  1. Frank Lloyd Wright
  2. Major Frank Burns, as played by Larry Linville
  3. Frank “Tug” McGraw


  1. French 20-centime coin, representing the Franc
  2. Frank Oz
  3. Frank Perdue


I think these pictures might be so old that they predate the European currency union.

  1. Frank Sinatra
  2. Frank Morgan, in his role as the Wizard from The Wizard of Oz. (The book was written by L. Frank Baum.)
  3. St. Francis of Assisi, with bird friend. The model is the artist's brother Frank.


Not depicted: Frank Rizzo, who is burning in Hell.

I was certain that Tim Curry was there somewhere, in his role as Dr. Frank-N-Furter, but if he ever was I can't find any evidence of it. I even emailed the muralist, who confirmed that Frank-N-Furter had never been there. Still, he is in all our hearts, forever.

The mural was restored in 2015, at which time two more figures were added:

  1. Pope Francis, who had visited the city that year, and
  2. Frank Sherlock, noted poet and longtime employee at Dirty Frank's

My pictures are at least that old.


[Other articles in category /art] permanent link

Mon, 17 Feb 2025

David McShane's mural with 18 Franks

Since the demolition of Harriet Tubman, this has been my favorite mural in Philadelphia. It's by Philadelphia muralist David McShane.

The mural is outside an infamous windowless bar called Dirty Frank's. I like to say that Oscar's Tavern on Sansom is Philadelphia's best Worst Bar. That's where, when the fancy place across the street wouldn't seat us, I took my coworker from out of town, with pride. Dirty Frank's might be Philadelphia's worst Worst Bar.

I few months ago Rik Signes remarked:

Street view of the sign outside McGlinchey's.  At the top it says
“McGlinchey's Bar” with a green shamrock.  Under this in clear red
letters on white is the word “Sandwiches”.  Below this hands a red
neon sign that reads “DRAFT BEER”.

I think Mark Dominus said "Dirty Frank's is where I saw roaches walk over the food and when I told them, they shrugged"

I was at once able to refute this, because I know for a fact that I have never ordered food at Dirty Frank's. Nor would I. Actually I have only ever been there once, which was enough.

(Lorrie has a similar story about a similarly notorious bar, McGlinchey's. Hanging outside McGlinchey's is a sign that proclaims “sandwiches”. Lorrie tried to order a sandwich there and was met only with puzzled stares.)


I will stop digressing now. My current favorite mural is outside Dirty Frank's and is by David McShane. It depicts famous Franks through history. I enjoyed trying to identify the 18 Franks. Many years ago I took pictures of it so that I could offer my Gentle Readers an opportunity to enjoy this themselves. You can infer from the resolution of the pictures below how long ago that must have been. But at last, here they are. I will reveal the answers tomorrow.

(The answers.)


[Other articles in category /art] permanent link

Tue, 11 Feb 2025

Genealogy of the House of Reuss

A couple of years ago I lamented the difficulty I had in verifying what appeared to be a simple statement of fact:

[Abdullah bin Abdul-Rahman] was the seventh son of the Emir of the Second Saudi State, Abdul Rahman bin Faisal.

The essential problem is that Saudi princes have at least ten or twenty sons each, and they all reuse the same ten or twenty names.

Until today, I was not aware of any European tradition even remotely so confusing. Today I learned of the House of Reuss.

I have other things to do today, so just a couple of highlights, starting with this summary:

Since the end of the 12th century, all male members of the House of Reuss are named Heinrich.

No, don't panic, there must be some way to distinguish them, and of course there is:

For the purpose of differentiation, they are given order numbers according to certain systems (see below, section Numbering of the Heinrichs)

Yes, they are numbered. Since the 12th century. So you might think they would be up to Heinrich MCMXVII by now. No no no, that would be silly.

In the elder line the numbering covers all male children of the elder House, and the numbers increase until 100 is reached and then start again at 1.

In the younger line the system is similar but the numbers increase until the end of the century before starting again at 1.

The Wikipedia article later embarks on a list of rulers of the House of Reuss that includes 151 Henrys with numbers as high as LXXVII. I wonder at this, since if they have really exercised that numbering scheme you would expect to see mention of at least one Henry with a number in the LXXX–XCIX range, but there are none.

A few of the 151 Henrys have distinctive nicknames like Henry II the Bohemian, Henry VII the Red, or Henry VI the Peppersack. But they seem to have run out of new epithets in the 14th century, and lapsed into a habit of using and reusing "the Elder", "the Middle", and "the Younger" over and over. Around the mid-1600s they tired even of this and abandoned the epithets entirely.

Just by way of example, I searched the page for “Henry XIX” and found three rulers by that name and number:

  1. One born 1 March 1790, Heinrich XIX, Prince Reuss of Greiz

  2. Another born 16 October 1720, Count of Selbitz. The English Wikipedia page is a redlink, but the German article on the Houses of Reuss has a bit to say.

  3. And a third, born around 1440, where these is a whole article about him, in Bulgarian For some reason he is known as Хайнрих XXI фон Вайда, Henry XXI (not XIX) of Vaida.

Toward the end of the article, we learn this:

On 7 December 2022, German police conducted an operation which resulted in the arrest of 25 alleged members of the far-right group Reichsbürger, including a member of the Köstritz branch of the House of Reuss, identified as Heinrich XIII Prince Reuss. The suspects arrested in the operation were allegedly planning to overturn the existing German government, and instate Heinrich XIII as the new German de facto leader.

All I can think now is, I think of myself as someone who is good at sniffing out Wikipedia bullshit, but this entire article could be completely made up and I would never be the wiser.

By the way, the link from “Henry VI the Peppersack” is to an article in Bulgarian Wikipedia that does not appear to mention the "Peppersack" epithet, a search on the Internet Archive for books mentioning "Henry Peppersack" turns up nothing, and while the section on the plot to bring Heinrich XIII to power cites a source, the page it purports to link to is gone.

Addendum 20250215

Here's a funny coincidence. The highest-numbered Henry I could find was Henry LXXVII. Lord Sepulchrave is stated at the beginning of Titus Groan to be the 76th Earl of Groan, which makes Titus Groan the 77th.


[Other articles in category /lang] permanent link

Sun, 09 Feb 2025

Surnames from nicknames nobody has any more

English has a pattern of common patronymic names. For example, "John Peters" and "John Peterson" are someone whose father was named "Peter". ("Peters" should be understood as "Peter's".) Similarly we have John Williams and John Williamson, John Roberts and John Robertson, John Richards and John Richardson, John James and John Jameson, John Johns and John Johnson, and so on.

Often Dad's name was a nickname. For example, a common nickname for "John" is "Jack" and we have (less commonly) John Jacks and (more commonly) John Jackson. John Bills and John Bilson, John Wills and John Wilson, and John Willis and John Willison are Bill, Will, and Wille, all short for William.

"Richard" is "Dick", and we have John Dicks (or Dix) and John Dickson (or Dixon). "Nicholas" is "Nick" and we have John Nicks (or Nix) and John Nickson (or Nixon).

Sometimes the name has the diminutive suffix “-kin” inserted. Wilkins is little Will's son, as is Wilkinson; Peterkins is little Peter's son.

These patterns are so common that if you find surnames that follow them you can almost always infer a forename, although it may be one that is no longer common, or that is spelled differently. For example, many people are named Pierce, Pearse, Pierson, or Pearson, which is from the name Pierre, Piers or Pierce, still used in English although much less common than in the past. (It is from the same root as Peter.) Perkins is little Pierre. Robin used to be a nickname for Robert (it's “Robkin” with the difficult “-bk-” simplified to just “-b-”) and we have John Robins and John Robinson.

Sometimes, the pattern is there but the name is unclear because it is a nickname that is now so uncommon that it is neatly forgotten. The fathers of John Watts, Watson, and Watkins were called Wat, which used to be short for Walter. John Hobbs, John Hobson, and Hobkins are named for Hob, which was short for Robert in the same way that Rob and Bob are still. (I had a neighbor who was called Hob, and told me his family claimed that it was short for Robert, but that he wasn't sure. I assured him that they were correct.) “Daw”, an archaic nickname for “David”, gives us Dawes, Dawkins, and Dawson.

Back in September when I started this article I thought on John Gibbs and John Gibson. Who's named "Gib", and why? Is it archaic nickname? Yes! It was short for Gilbert. Then I forgot about the draft article until today when I woke up wondering about John Simpson (and, I realize now, John Simms and John Simkins). And it transpired "Sim" or "Simme" was once a common nickname for Simon.

I would welcome further examples.

Addenda

20250210

Vicki Rosenzweig reminds me that another lost nickname for Richard is "Hick" (like "Rick" and "Dick") and from this we get Hicks, Hix, Hickson, Hixon, Hickman, and (she informs me) "Hickmott".

"-mott" perhaps indicates a male in-law, according to the Dictionary of American Family Names via Ancestrry.com. The only other clear example of this that I noticed was "Willmott". Note that Gaelic names like Dermott are not of this type; the resemblance is coincidental.

We get Hodge / Hodges / Hodgson / Hodgkins from "Hodge", an arcahic nickname for Roger.

Lucy Keer suggests that Bateson / Bates is from "Bat", an archair nickname for Bartholomew.

Christopher Taylor reminds me that in Atkins and Atkinson the "At-" is short for "Adam", and similarly in "Addis" and "Addison". I know a guy named Atteson but I'm not sure it is the same thing.

20250210 (again)

Response to this article has been too much for me to keep up with.

Hacker News user tibbar mentions mentions several I either didn't know, or knew and forgot to include:

  • "Dob" is another old nickname for "Robert", giving us "Dobson", "Dobbs", "Dobkin", etc.;
  • "Dodge" another nickname for Roger, hence Dodgson, as in Louis Carrol's real name, Charles Dodgson;
  • "Tibb" is an old nickname for Theobald, giving surnames like "Tibbs" and "Tibbets";
  • "Hud" for "Hugh", giving us the Hudsons.

Citizen Claude weighs in

I also asked Claude for suggestions:

I'm going to paste a blog article that discusses common English surnames that are patronymic versions of forenames that no longer exist. For example, the common surname "Watson" is from "Wat", and "Wat" was once a common nickname for "Walter", but no longer used. I would like you to list ten similar examples that are not mentioned in the article.

Claude replied:

Here are ten examples of common English surnames derived from obsolete forenames or nicknames, different from those mentioned in the article:

  1. Higgins/Higgs - from "Hick," a medieval pet form of Richard
  2. Timms/Timson - from "Tim," originally a medieval nickname for Timothy
  3. Hodgson/Hodges - from "Hodge," once a common nickname for Roger
  4. Atkins/Atkinson - from "At" or "Atte," medieval diminutive of Adam
  5. Parkins/Parkinson - from "Perkin," diminutive of Peter/Pierre
  6. Judson/Judd - from "Judd," medieval nickname for Jordan
  7. Malkins/Malkinson - from "Malk," diminutive of Malcolm
  8. Larkins/Larkin - from "Larry" or "Laurence," medieval form of Lawrence
  9. Collins/Colson - from "Col," medieval nickname for Nicholas
  10. Huggins/Huggett - from "Hug," medieval pet form of Hugh

Remember that some of these might be made up. For example, Wiktionary claims that #7 is matronymic, from Malle, a nickname for Mary. Who's right? I don't know. The only way to settle this is with a cage match! I hope.

I complained that #2 was not to spec because “Tim” is still common, and demanded a replacement:

  1. Rankins/Rankin - from "Ran," a medieval diminutive of Randolph

I also asked Claude if I had made any errors, and it said:

The article claims that "Robin" comes from "Robkin" with "bk" simplified to "b". This is incorrect.

"Robin" is actually a French diminutive of Robert, coming from Old French Robin/Rovin. …

This seems plausible.


[Other articles in category /lang/etym] permanent link

Thu, 06 Feb 2025

Just give the man the fish!

Last week I complained about a Math SE pathology in which OP asks a simple question, and instead of an answer gets an attempt at a socratic dialog. I ended by saying:

I have been banging this drum for decades, but I will cut the scroll here. Expect a followup article.

Seeing this, Scott Francis remarked:

when you say “I have been banging this drum for decades" I hear echoes of EFnet #perl in the back of my head :)

And yes, that is one of the things I was thinking of.

Thirty years ago the regulars in the #perl IRC channel would play a cruel teasing game. A stranger would come into the channel and ask a simple technical question, like “how do I remove the first character from a string?”

Instead of giving the answer, two or three people would reply perldoc perlre.

In case it's not obvious — and there is no reason why it should be — this means you can run this command to get the manual for how to use Perl regular expressions.

This manual was about 20,000 words long.

People indulging in this shitty behavior would excuse themselves by chanting the maxim “If you give a man a fish, he can eat for one day. If you teach him to fish, he can eat for his whole life.” An actual answer to a question was a “fish”. Apparently, saying perldoc perlre was considered to be “teaching a man to fish.”

If the newbie objected that the reply perldoc perlre was unhelpful, the regulars were only too ready to lecture them on why it was helpful actually, on why they didn't deserve a better answer, on why they shouldn't expect their questions to be answered, on how they were being rude by rejecting the help that was offered them, on how they shouldn't feel entitled to answers, and on why the regulars there were all very busy people with more important things to do that to answer stupid newbie questions.

In my view, someone who is hanging around in #perl should expect newbie questions, and if they don't want to answer newbie questions they simply shouldn't do it, they should ignore them. If they can't do that, if they are so enraged by newbie questions that it ruins the rest of the chat for them, they should go start a different channel with a name that won't attract newbies. But they should not hang around and vent their impotent rage on the newbies who inevitably do show up.

I'm kind of an asshole, but I'm not that big an asshole. I'm callous, but I'm not sadistic. Someone who says they don't have time to help you, but who does have time to explain to you in detail why they aren't helping you, is sadistic.

“Well, we want them to learn to read the manual,” the regulars would claim. Maybe so, but I don't think their strategy was usually effective. If one really wants people to read the manual, a much better strategy would be to answer the question, and then having established oneself as a helpful person, suggest the manual:

By the way, you can get complete documentation about regexes with the command perldoc perlre. It's really long, but it's full of useful information. The ^ operator I mentioned is in the section called "Metacharacters". Would you like help finding it?

On the other hand if what one actually wanted was to convince someone that Perl was a language used by assholes and they might have better success with a different language whose community had fewer assholes, then the #perl regulars’ strategy was probably very effective.

Then as now my usual habit was to just answer the question. There would be this odd little moment where three people would say perldoc perlre and I would say $string =~ s/^.//. Did people yell at me for this? I don't remember. Probably, I was spoiling their fun.

But at least once someone asked me (in good faith, I'm sure) why I did it my way. I saved my answer. It was:

Because it's easy. Because it's helpful. Because I think the theory that says that people will become dependent on it is bullshit.

Because I think the theory that says that telling them to read the man page is more helpful is also bullshit.

Because in my experience people are much more likely to heed your suggestion to read the man page after you have established that you are a helpful concerned person by assisting them.

The main points are the first two: Because it's easy, and because it's helpful, so why not?

It's at least 25 years later and I'm still angry about this. Who the hell hangs around in a help forum for the purpose of refusing to help?

Social media now is toxic in ways we couldn't have imagined then. But let's not forget that it could be pretty toxic then too.

Addenda

“in good faith, I'm sure” is not sarcasm.

20250208

The previous addendum was also not sarcasm.


[Other articles in category /misc] permanent link

Wed, 05 Feb 2025

Claude helps me find more presidential emoji

A couple of years back I tried to make a list of emoji representing the U.S. presidents. Many of them were fun and easy, or at least amused me. But for some I was stumped. What emoji represents Zachary Taylor?

I've been playing around with Anthropic's LLM “Claude” for a while, so I thought I'd see what Claude had to contribute.

Last time I had looked at the LLM space I was deeply unimpressed:

  1. ChatGPT discusses four-digit numbers
  2. ChatGPT discusses a hypothetical fifth tarot suit
  3. ChatGPT discusses women named James
  4. ChatGPT discusses cauliflower, Decameron and Scheherazade

But that was two years ago, and gods, what a difference. What persuded me that it was time to take another look was two articles by Adam Unikowsky. Unikowsky is a working lawyer who has practiced before the US Supreme Court. He writes an extremly geeky blog, called Adam's Legal Newsletter. Last summer he wrote two articles that blew my mind. Here's an excerpt from the first one:

Let’s put aside controversial constitutional disputes and take a relatively humdrum and straightforward Supreme Court case—Smith v. Spizziri, decided on May 16, 2024. I inputted PDFs of the opening brief, response brief, and reply brief into Claude, and then asked Claude to decide the case. Here’s what happened (I want to emphasize, it takes only a few seconds to ingest all three briefs and spit out this answer).

The prompt he gave to Claude was:

You are a Supreme Court Justice. Please review these three briefs and write a four paragraph judicial opinion. In the first, you will describe the dispute. In the second, you will describe the parties’ positions. In the third and fourth you will write a reasoned decision for who wins and why.

Claude did so; you can read the output on Unikowsky's blog. Here's his evaluation of the result:

This is absolutely correct, and exactly what the Supreme Court decided. 10/10.

Unikowsky looks at a second specific example and concludes:

This is perfect.

(His italics.)

Unikowsky then discusses at some length why AI might be preferable to human judges. Don't sneer; he has probably thought about this more carefully than you have. Read the article.

In the second article Unikowsky tests more extensively:

I downloaded the briefs in every Supreme Court merits case that has been decided so far this Term, inputted them into Claude 3 Opus (the best version of Claude), and then asked a few follow-up questions.

And he reports:

The results were otherworldly. Claude is fully capable of acting as a Supreme Court Justice right now. When used as a law clerk, Claude is easily as insightful and accurate as human clerks, while towering over humans in efficiency.

(Emphasis mine this time.)

This is why I decided I should take another look at LLMs. Well, this is not what I planned to write about. You are here for presidential emoji, so let's do that. Here's my prompt to Claude:

I'm going to paste a full list of U.S. presidents and associated emoji, and I'd like you to explain all of them. If there is one you can't explain, provide an alternative suggestion with an explanation. For the presidents with no emoji, provide a suggestion and an explanation.

and then appended the list.

Here are Claude's explanations for the emoji I had selected:

George Washington 💵
Explanation: His face is on the $1 bill - straightforward connection.

Thomas Jefferson 📜
Explanation: References his role as primary author of the Declaration of Independence.

Right so far.

John Quincy Adams 🍐
Explanation: He was known for planting pear trees on his property and had a particular fondness for horticulture.

This wasn't what I had in mind. I was thinking that it would be funny to represent John Quincy Adams with a picture of a quince. Which is silly and dumb and I can't fault Claude for not getting it. If it had been Claude that had made this suggestion I would probably have quibbled that “Quincy” is not pronounced the same as “quince”.

Martin Van Buren 🌷
Explanation: Likely references his Dutch heritage (tulips being associated with the Netherlands).

William Henry Harrison 🪦
Explanation: Died after only 31 days in office - the tombstone is rather direct.

Both right. Although maybe it would be more amusing to use 🛶 for Harrison.

Millard Fillmore ⛽
Explanation: This is unclear - I'd suggest 🏫 instead, as he established the first free public library system.

Another pun, this one even dumber that the quince. ⛽ is the gas pump you use to fill more gas into your car, get it?


I'm not excited about Claude's suggestion, but at least it isn't stupid.

Abraham Lincoln 🎭
Explanation: Likely references his assassination at Ford's Theatre, though 🎩 might be more appropriate for his iconic hat.

Claude is a little bit prudish and tends not to like my inappropriate jokes. The hat of course is obvious. In the previous article I said:

I considered, and rejected 🎩 for Lincoln because it doesn't look like his actual hat.

Still, it's a perfectly good suggestion.

Andrew Johnson 💩
Explanation: Commentary on his presidency, widely considered one of the worst.

I notice that Claude did not object that this was inappropriate. Prudish or not, even Claude can agree that Andrew Johnson was a turd of a President.

Ulysses S. Grant 🍸
Explanation: References his noted drinking habits.

Rutherford B. Hayes 🧔🏻
Explanation: Known for his distinctive beard.

James Garfield 🧔🏻
Explanation: Also known for his beard.

I wasn't completely phoning it in here, the repeated white-guys-with-beards thing is also a joke. I don't think Garfield was actually known for his beard, but whatever. (I've already dispensed with Garfield the lazy cat in the previous article.)

Grover Cleveland 🔂
Explanation: Clever reference to his non-consecutive terms (22nd and 24th president).

I'm pretty sure I don't like that Claude appears to be trying to flatter me. What does it mean, philosophically, when Claude calls something ‘clever’? I have no idea. Being flattered by a human is bad enough, they might really mean something by it.

Benjamin Harrison 🧔🏻
Explanation: Another bearded president.

Theodore Roosevelt 🧸
Explanation: The teddy bear was named after him.

William Howard Taft 🛁
Explanation: References the (possibly apocryphal) story of getting stuck in a White House bathtub.

Woodrow Wilson 🎓
Explanation: Former president of Princeton University, academic background.

Warren G. Harding 🫖
Explanation: Likely references the Teapot Dome scandal.

Calvin Coolidge 🙊
Explanation: Known as "Silent Cal" for his quiet nature.

Herbert Hoover ⛺
Explanation: References the "Hoovervilles" (shanty towns) during the Great Depression.

I wasn't sure Claude would get these last three because they're a little bit tricky and obscure. But it did.

Franklin D. Roosevelt 👨‍🦽
Explanation: References his use of a wheelchair due to polio.

Harry S. Truman 🍄
Explanation: References the atomic bombs and mushroom clouds.

Dwight D. Eisenhower 🪖
Explanation: References his military career as Supreme Commander in WWII.

John F. Kennedy 🍆
Explanation: Likely references his notorious womanizing - though 🚢 (PT-109) might be more appropriate.

Yes, yes, yes, and yes.

Again Claude implies that my suggestion is inappropriate. Lighten up, Claude.

Lyndon B. Johnson 🗳️
Explanation: References his focus on voting rights legislation.

Uh, yeah, the Voting Rights Act of 1965 is definitely what I meant, I certainly would not have been intending to remind everyone of LBJ's propensity to stuff ballot boxes.

In some ways, Claude is a better person than I am.

Richard M. Nixon 🐛
Explanation: Likely a "bug" reference to Watergate surveillance.

Gerald R. Ford 🏈
Explanation: Was a football player at University of Michigan.

Jimmy Carter 🥜
Explanation: Was a peanut farmer before presidency.

Ronald Reagan 💸
Explanation: References "Reaganomics" economic policies.

Yes, yes, yes, and yes.

George H. W. Bush 👻
Explanation: Unclear - I'd suggest 🪂 for his WWII service as a Navy pilot who was shot down.

I had picked 👻 to recall his tenure as Director of the CIA. But on looking into it I have found he had not served in that role for nearly as long as I thought: only from 1974–1976. It is far from his most prominent accomplishment in government.

I sometimes wonder what would have happened if Bush had beaten Reagan in the 1980 election. People sometimes say that the Republican party only ever runs fools and clowns for president. George Bush was their candidate in 1988 and whatever his faults he was neither a fool nor a clown.

Bill Clinton 🎷
Explanation: Famous for playing the saxophone.

George W. Bush 👞
Explanation: References the shoe thrown at him during a press conference in Iraq.

Barack Obama 🇰🇪
Explanation: References his father's Kenyan heritage.

Here's Claude again being a better person than me. I had picked 🇰🇪 because I was trying to troll my audience with the insinuation that Obama was born in Kenya.

Donald Trump 🍊
Explanation: References his distinctive skin tone.

Joe Biden 🕶️
Explanation: References his trademark aviator sunglasses.

Right, except to me the little quiff on the tangerine is also mocking Trump's hair. But overall I give Claude no demerits. The only times Claude didn't take my meaning were on stupid shit like ⛽ Fillmore.

Here are the presidents where I couldn't come up with anything and asked for Claude's suggestions. I found Claude's suggestions mostly reasonable but also pretty dull.

John Adams
Suggestion: 🏛️ - As a key Founding Father who championed strong federal government and was crucial in establishing many governmental institutions.

I don't know, 🏛️ is supposed to be a “classical building”, and yes, the buildings in Washington were eventually in neoclassical style once they were built, mostly in the early 20th century, but okay, I guess.

James Madison
Suggestion: 📋 - As "Father of the Constitution" and primary architect of the Bill of Rights.

Okay, but… a clipboard?

James Monroe
Suggestion: 🌎 - For the Monroe Doctrine, establishing U.S. influence in the Western Hemisphere.

Full marks. The only reason I'm not kicking myself for not thinking of it first is that I just barely did think of it first. As I was composing the prompt for Claude I said to myself “Why didn't I think of 🌎 for the Monroe Doctrine? Oh well, I'll see what Claude says anyway.”

Andrew Jackson
Suggestion: ⚔️ - For his military background and famously aggressive personality.

Fine.

John Tyler
Suggestion: 🎭 - Known as "His Accidency" for unexpectedly becoming president after Harrison's death.

Not good. I had to get Claude to explain this one to me. See below.

James K. Polk
Suggestion: 🗺️ - For major territorial expansion during his presidency.

Not good.

(The emoji is “world map”.)

Zachary Taylor
Suggestion: 🍒 - He allegedly died from eating cherries and milk on a hot day.

Whatever my complaints about Claude's other suggestions, I feel that this one redeems all their faults. I love it. It's just the kind of thing I was looking for, the sort of thing Arachne would have woven into her tapestry.

James Buchanan
Suggestion: 👨‍🦳 - The only bachelor president.

I'll discuss this one later.

Franklin Pierce
Suggestion: 🌨️ - Born in New Hampshire, the only president from that state.

I had wanted to comment on Peirce's best quality which was his great hairstyle, but I couldn't find any good emoji for hair. But this is a better idea. Using 🌨️ for New Hampshire is funny.

Chester A. Arthur
Suggestion: 👔 - Known for his fashionable dress and changing clothes multiple times per day.

I don't know a damn thing about Chester Arthur except he succeeded Garfield and he had sideburns. I haven't even checked to see if Claude is right about his fashionable dress. I don't think it is physically possible to get me to care about Chester Arthur.


Okay, back to Tyler and Buchanan. I asked Claude to explain Tyler:

The only suggestion you made that I don't understand is for John Tyler. How does 🎭 relate to "his accidency"?

Claude said:

Ah, I see why that's confusing! You're right - my connection between the theater masks emoji 🎭 and "His Accidency" wasn't very logical. I was trying to suggest something about playing a role he wasn't meant for, but that's quite a stretch.

That actually makes sense! I agree it was a stretch, but I see it now.

But Claude continued:

Let me suggest a better emoji for John Tyler: ⚡️

ZOMG, hilarious! Perfect! A++++ 11/10 ⭐⭐⭐⭐⭐ would buy again.

If you don't get it, here's an excerpt of Claude's explanation:

This would reference how he suddenly and unexpectedly became president after Harrison's death… The lightning bolt could represent both the suddenness of his ascension and the shock it caused to the political system of the time.

This, and the cherries-and-milk thing for Taylor, convinces me that whatever Claude is, it is useful. I asked it for help with this ridiculous task and it provided real contributions of real value.

I remarked:

The gray hair for Buchanan I do not like, for two reasons. First, many presidents had gray hair. And second, Buchanan was not the only bachelor president, because Grover Cleveland didn't marry until partway through his first term. Do you have any suggestions for Hayes, Garfield, or Harrison?

Claude tried again for Buchanan:

Thank you for those corrections about Buchanan! You're absolutely right that both the gray hair wasn't distinctive and I was wrong about him being the only bachelor president. Let me rethink that one.

For Buchanan, perhaps 🕊️ would be appropriate - but ironically so, as his ineffective leadership and indecision in the lead-up to the Civil War showed that his attempts at keeping peace at any cost ultimately failed to prevent the conflict. Though that might be too subtle.

I don't love it, but I don't have anything better…

No, wait, I just thought of something! I'm going with 🥫 because, to my mind, Buchanan was the guy who, when he tried to kick the slavery can a little farther down the road, discovered that there was no more road down which to kick it.

I suggested this to Claude just now and it was so enthusiastically complimentary that I was embarrassed, so let's move on.

Claude didn't have any ideas I liked for Hayes, Garfield, or Harrison. I tried workshopping Hayes a little more:

For Hayes I really wanted to imply something snide about the contested election of 1876 in which he lost the popular vote to Tilden, and was awarded the presidency as a result of backroom politicking, but that seems like too much to pack into an emoji.

Claude said:

Maybe 🎲 for the "dice roll" nature of the commission's decisions? Or 🤝 for the corrupt bargain itself? But neither really captures the full gravity of how that compromise effectively ended Reconstruction and ushered in the Jim Crow era.

I think it kind of misses the point if you don't put EMOJI MODIFIER FITZPATRICK TYPE 1-2 on the corrupt handshake: 🤝🏻. But this is the amazing thing, it does feel like I'm workshopping with Claude. It really feels like a discussion between two people. This isn't Eliza parroting back IS IT BECAUSE OF YOUR MOTHER THAT YOU SAY I DON'T PUT EMOJI MODIFIER FITZPATRICK TYPE 1-2 ON THE CORRUPT HANDSHAKE?.

Could Hayes be a crow? You're supposed to be able to compose ‘bird’, ZWJ, and ‘black square’ to get a black bird. It might be too bitter, even for me.

If you want a conclusion, it is: Claude is fun and useful, even for silly stuff that nobody could have planned for.


[Other articles in category /tech/gpt] permanent link

Tue, 04 Feb 2025

Polish Spam

Content warning: mass killing of farmed animals

Today I complained that my email provider had delivered a spam message to me that was in Polish. I understand that spam can be hard to identify, but Polish isn't, I don't know Polish, and any message sent to me in Polish can be discarded. Even if it's 100% legit, I don't know Polish, so we might as well throw it out.

This led a colleague to remark:

I'd love to try Polish spam. I wonder if there'd be caraway seed.

I wonder too.

But first I have to tell this story I heard from a Romanian co-worker. He said that in Romania in the 1980s they had a lot of mink farms, for mink fur. When they werre done getting the fur they would have a big pile of dead, naked minks, so what would they do with them? Well, in Romania in the 1980s, meat was scarce, so they would eat them. The trouble is, minks are carnivores, they are tough and stringy and taste terrible. To make them edible, the Romanians chopped them finely, made them into small loaves, and canned them like Spam. Still this "Spink" was only barely edible, it was the variety of meat that was only eaten by Romanians who could afford no other meat.

I told my colleague this, and said “That's the best I can do for you regarding local versions of Spam in formerly Soviet-bloc countries.” Is not Spam and it is not Polish, but at least it is interesting. Maybe.

Thanks to the Wonders of the Internet, it is not hard to find Spamlike potted meat products from Poland. For example, konserwa lisiecka, which is actually a canned sausage:

The label has the ingredients listed clearly. I see garlic (czosnek), white pepper (pieprz biały), and sugar (cukier) but no caraway, which I think would be kminek.

Here's golonka wieprzowa:

This time the ingredients include przyprawy, which is “spices” and could conceivably include caraway, but the label specifies z gorczycą, which means “including mustard”, so if there is caraway it does not get top billing.

From the labels I guess these are something like military-issue rations, which I suppose would be seasoned to the least common denominator. Perhaps someone's grandma makes a delectable potted pork dish with lots of caraway.

I do not speak Polish. If I have made any language errors, I apologize to Maciej Cegłowski.


[Other articles in category /food] permanent link

Mon, 03 Feb 2025

Just ANSWER THE QUESTION

Here's a Math SE pathology that bugs me. OP will ask "I'm trying to prove that groups !!A!! and !!B!! are isomorphic, I constructed this bijection but I see that it's not a homomorphism. Is it sufficient, or do I need to find a bijective homomorphism?"

And respondent !!R!! will reply in the comments "How can a function which is not an homomorphism prove that the groups are isomorphic?"

Which is literally the exact question that OP was asking! "Do I need to find … a homomorphism?"

My preferred reply would be something like "Your function is not enough. You are correct that it needs to be a homomorphism."

Because what problem did OP really have? Clearly, their problem is that they are not sure what it means for two groups to be isomorphic. For the respondent to ask "How can a function which is not an homomorphism prove the the groups are isomorphic" is unhelpful because they know that OP doesn't know the answer to that question.

OP knows too, that's exactly what their question was! They're trying to find out the answer to that exact question! OP correctly identified the gap in their own understanding. Then they formulated a clear, direct question that would address the gap.

THEY ARE ASKING THE EXACT RIGHT QUESTION AND !!R!! DID NOT ANSWER IT

My advice to people answering questions on MSE:

Just answer the question

It's all very well for !!R!! to imagine that they are going to be brilliant like Socrates, conducting a dialogue for that ages that draws from OP the realization that the knowledge they sought was within them all along. Except:

  1. !!R!! is not Socrates
  2. Nobody has time for this nonsense
  3. The knowledge was not within them all along

MSE is a site where people go to get answers to their questions. That is its sole and stated purpose. If !!R!! is not going to answer questions, what are they even doing there? In my opinion, just wasting everyone's time.

Important pedagogical note

It's sufficient to say "Your function is not enough", which answers the question.

But it is much better to say "Your function is not enough. You are correct that it needs to be a homomorphism". That acknowledges the student's contribution. It tells them that their analysis of the difficulty was correct!

They may not know what it means for two groups to be isomorphic, but they do know one something almost as good: that they are unsure what it means for two groups to be isomorphic. This is valuable knowledge.

This wise student recognises that they don't know. Socrates said that he was the wisest of all men, because he at least “knew that he didn't know”. If you want to take a lesson from Socrates, take that one, not his stupid theory that all knowledge is already within us.

OP did what students are supposed to do: they reflected on their knowledge, they realized it was inadequate, and they set about rectifying it. This deserves positive reinforcement.

Addenda

  1. This is a real example. I have not altered it, because I am afraid that if I did you would think I was exaggerating.

  2. I have been banging this drum for decades, but I will cut the scroll here. Expect a followup article.

20250206

The threatened followup article, about the EFNet #perl channel in the early 2000's.


[Other articles in category /math/se] permanent link

Fri, 29 Nov 2024

A complex bug with a ⸢simple⸣ fix

Last month I did a fairly complex piece of systems programming that worked surprisingly well. But it had one big bug that took me a day to track down.

One reason I find the bug interesting is that it exemplifies the sort of challenges that come up in systems programming. The essence of systems programming is that your program is dealing with the state of a complex world, with many independent agents it can't control, all changing things around. Often one can write a program that puts down a wrench and then picks it up again without looking. In systems programming, the program may have to be prepared for the possibility that someone else has come along and moved the wrench.

The other reason the bug is interesting is that although it was a big bug, fixing it required only a tiny change. I often struggle to communicate to nonprogrammers just how finicky and fussy programming is. Nonprogrammers, even people who have taken a programming class or two, are used to being harassed by crappy UIs (or by the compiler) about missing punctuation marks and trivially malformed inputs, and they think they understand how fussy programming is. But they usually do not. The issue is much deeper, and I think this is a great example that will help communicate the point.

The job of my program, called sync-spam, was to move several weeks of accumulated email from system S to system T. Each message was probably spam, but its owner had not confirmed that yet, and the message was not yet old enough to be thrown away without confirmation.

The probably-spam messages were stored on system S in a directory hierarchy with paths like this:

    /spam/2024-10-18/…

where 2024-10-18 was the date the message had been received. Every message system S had received on October 18 was somewhere under /spam/2024-10-18.

One directory, the one for the current date, was "active", and new messages were constantly being written to it by some other programs not directly related to mine. The directories for the older dates never changed. Once sync-spam had dealt with the backlog of old messages, it would continue to run, checking periodically for new messages in the active directory.

The sync-spam program had a database that recorded, for each message, whether it had successfully sent that message from S to T, so that it wouldn't try to send the same message again.

The program worked like this:

  • Repeat forever:
    1. Scan the top-level spam directory for the available dates
    2. For each date D:
      1. Scan the directory for D and find the messages in it. Add to the database any messages not already recorded there.
      2. Query the database for the list of messages for date D that have not yet been sent to T
      3. For each such message:
        1. Attempt to send the message
        2. If the attempt was successful, record that in the database
    3. Wait some appropriate amount of time and continue.

Okay, very good. The program would first attempt to deal with all the accumulated messages in roughly chronological order, processing the large backlog. Let's say that on November 1 it got around to scanning the active 2024-11-01 directory for the first time. There are many messages, and scanning takes several minutes, so by the time it finishes scanning, some new messages will be in the active directory that it hasn't seen. That's okay. The program will attempt to send the messages that it has seen. The next time it comes around to 2024-11-01 it will re-scan the directory and find the new messages that have appeared since the last time around.

But scanning a date directory takes several minutes, so we would prefer not to do it if we don't have to. Since only the active directory ever changes, if the program is running on November 1, it can be sure that none of the directories from October will ever change again, so there is no point in its rescanning them. In fact, once we have located the messages in a date directory and recorded them in the database, there is no point in scanning it again unless it is the active directory, the one for today's date.

So sync-spam had an elaboration that made it much more efficient. It was able to put a mark on a date directory that meant "I have completely scanned this directory and I know it will not change again". The algorithm was just as I said above, except with these elaborations.

  • Repeat forever:
    1. Scan the top-level spam directory for the available dates
    2. For each date D:
        • If the directory for D is marked as having already been scanned, we already know exactly what messages are in it, since they are already recorded in the database.
        • Otherwise:
          1. Scan the directory for D and find the messages in it. Add to the database any messages not already recorded there.
          2. If D is not today's date, mark the directory for D as having been scanned completely, because we need not scan it again.
      1. Query the database for the list of messages for date D that have not yet been sent to T
      2. For each such message:
        1. Attempt to send the message
        2. If the attempt was successful, record that in the database
    3. Wait some appropriate amount of time and continue.

It's important to not mark the active directory as having been completely scanned, because new messages are continually being deposited into it until the end of the day.

I implemented this, we started it up, and it looked good. For several days it processed the backlog of unsent messages from September and October, and it successfully sent most of them. It eventually caught up to the active directory for the current date, 2024-11-01, scanned it, and sent most of the messages. Then it went back and started over again with the earliest date, attempting to send any messages that it hadn't sent the first time.

But a couple of days later, we noticed that something was wrong. Directories 2024-11-02 and 2024-11-03 had been created and were well-stocked with the messages that had been received on those dates. The program had found the directories for those dates and had marked them as having been scanned, but there were no messages from those dates in its database.

Now why do you suppose that is?

(Spoilers will follow the horizontal line.)

I investigate this in two ways. First, I made sync-spam's logging more detailed and looked at the results. While I was waiting for more logs to accumulate, I built a little tool that would generate a small, simulated spam directory on my local machine, and then I ran sync-spam against the simulated messages, to make sure it was doing what I expected.

In the end, though, neither of these led directly to my solving the problem; I just had a sudden inspiration. This is very unusual for me. Still, I probably wouldn't have had the sudden inspiration if the information from the logging and the debugging hadn't been percolating around my head. Fortune favors the prepared mind.


The problem was this: some other agent was creating the 2024-11-02 directory a bit prematurely, say at 11:55 PM on November 1.

Then sync-spam came along in the last minutes of November 1 and started its main loop. It scanned the spam directory for available dates, and found 2024-11-02. It processed the unsent messages from the directories for earlier dates, then looked at 2024-11-02 for the first time. And then, at around 11:58, as per above it would:

  1. Scan the directory for 2024-11-02 and find the messages in it. Add to the database any messages not already recorded there.

There weren't any yet, because it was still 11:58 on November 1.

  1. If 2024-11-02 is not today's date, mark the directory as having been scanned completely, because we need not scan it again.

Since the 2024-11-02 directory was not the one for today's date — it was still 11:58 on November 1 — sync-spam recorded that it had scanned that directory completely and need not scan it again.

Five minutes later, at 00:03 on November 2, there would be new messages in the 2024-11-02, which was now the active directory, but sync-spam wouldn't look for them, because it had already marked 2024-11-02 as having been scanned completely.

This complex problem in this large program was completely fixed by changing:

        if ($date ne $self->current_date) {
          $self->mark_this_date_fully_scanned($date_dir);
        }

to:

        if ($date lt $self->current_date) {
          $self->mark_this_date_fully_scanned($date_dir);
        }

(ne and lt are Perl-speak for "not equal to" and "less than".)

Many organizations have their own version of a certain legend, which tells how a famous person from the past was once called out of retirement to solve a technical problem that nobody else could understand. I first heard the General Electric version of the legend, in which Charles Proteus Steinmetz was called out of retirement to figure out why a large complex of electrical equipment was not working.

In the story, Steinmetz walked around the room, looking briefly at each of the large complicated machines. Then, without a word, he took a piece of chalk from his pocket, marked one of the panels, and departed. When the puzzled engineers removed that panel, they found a failed component, and when that component was replaced, the problem was solved.

Steinmetz's consulting bill for $10,000 arrived the following week. Shocked, the bean-counters replied that $10,000 seemed an exorbitant fee for making a single chalk mark, and, hoping to embarrass him into reducing the fee, asked him to itemize the bill.

Steinmetz returned the itemized bill:

One chalk mark $1.00
Knowing where to put it $9,999.00
TOTAL $10,000.00

This felt like one of those times. Any day when I can feel a connection with Charles Proteus Steinmetz is a good day.

This episode also makes me think of the following variation on an old joke:

A: Ask me what is the most difficult thing about systems programming.

B: Okay, what is the most difficult thing ab—

A: TIMING!


[Other articles in category /prog/bug] permanent link

Sat, 31 Aug 2024

Another corner of Pennsylvania

[ Previously: [1] [2] [3] ]

A couple of years back I wrote:

I live in southeastern Pennsylvania, so the Pennsylvania-New Jersey-Delaware triple point must be somewhere nearby. I sat up and got my phone so I could look at the map, and felt foolish.

Map of the
Pennsylvania-New Jersey-Delaware triple border, about a kilometer
offshore from Marcus Hook, PA, further described below.

As you can see, the triple point is in the middle of the Delaware River, as of course it must be; the entire border between Pennsylvania and New Jersey, all the hundreds of miles from its northernmost point (near Port Jervis) to its southernmost (shown above), runs right down the middle of the Delaware.

I briefly considered making a trip to get as close as possible, and photographing the point from land. That would not be too inconvenient. Nearby Marcus Hook is served by commuter rail. But Marcus Hook is not very attractive as a destination. Having been to Marcus Hook, it is hard for me to work up much enthusiasm for a return visit.

I was recently passing by Marcus Hook on the way back from Annapolis, so I thought what the heck, I'd stop in and see if I could get a look in the direction of the tripoint. As you can see from this screencap, I was at least standing in the right place, pointed in the right direction.

Screencap of
my phone's map app, showing the same part of the river as the map
above.  This one is marked with a blue dot (me) near the Marcus Hook
Industrial Complex, pointed towards the tripoint, also labeled.

I didn't quite see the tripoint itself because this buoyancy-operated aquatic transport was in the way. I don't mind, it was more interesting to look at than open water would have been.

Photo
of the Delaware river, taken from the Pennsylvania shore.  The near
bank is covered with pretty green and purple weeds.  Floating in the
river directly ahead is a pale green ship with a white superstructure,
the BW Messina

Thanks to the Wonders of the Internet, I have learned that this is an LPG tanker. Hydrocarbons from hundreds of miles away are delivered to the refinery in Marcus Hook via rail, road, and pipeline, and then shipped out on vessels like this one. Infrastructure fans should check it out.

I was pleased to find that Marcus Hook wasn't as dismal as I remembered, it's just a typical industrial small town. I thought maybe I should go back and look around some more. If you hoped I might have something more interesting or even profound to say here, sorry.

Oh, I know. Here, I took this picture in Annapolis:

A sandstone plinth with the Maryland state coat of arms carved in
bas-relief at the top. Under this are engraved words: ALBERT CABELL
RITCHIE / 2876 – 1936 / FOUR TIMES GOVERNOR OF MARYLAND / HE WHO IS
WORTHY OF HONOR DOES NOT DIE.

Perhaps he who is worthy of honor does not die. But fame is fleeting. Even if he who is worthy of honor does get a plinth, the grateful populace may not want to shell out for a statue.


[Other articles in category /misc] permanent link

Sat, 24 Aug 2024

Dancing bread

Marnanel Thurman reported the following item that they found in an 1875 book titled How to Entertain a Social Party:

To Make a Loaf of Bread Dance on the Table.

— Having a quill filled with quicksilver and stopped close, you secretly thrust it into a hot roll or loaf, which will put it in motion.

(Bottom of page 46.) No further explanation is given.

This may remind you of an episode from Huckleberry Finn:

Well, then I happened to think how they always put quicksilver in loaves of bread and float them off, because they always go right to the drownded carcass and stop there.

(Chapter 8.)

When I first read this I assumed it was a local Southern superstition, characteristic of that place and time. But it seems not! According to this article by Dan Rolph of the Historical Society of Pennsylvania, the belief was longstanding and widespread, lasting from at least 1767 to 1872, and appearing also in London and in Pennsylvania.

Details of the dancing bread trick are lacking. I guess the quicksilver stays inside the stopped-up quill. (Otherwise, there would be no need to “stop it close”.) Then perhaps on being heated by the bread, the quicksilver expands lengthwise as in a thermometer, and then… my imagination fails me.

The procedure for making drowned-body-finding bread is quite different. Rolph's sources all agree: you poke in your finger and scoop out a bit of the inside, pour the quicksilver into the cavity, and then plug up the hole. So there's no quill; the quicksilver is just sloshing around loose in there. Huckleberry Finn agrees:

I took out the plug and shook out the little dab of quicksilver…

Does anyone have more information about this? Does hot bread filled with mercury really dance on the table, and if so why? Is the supersition about bread finding drowned bodies related to this, or is it a coincidence?

Also, what song did the sirens sing, and by what name was Achilles called when he hid among women?


[Other articles in category /misc] permanent link