URLs du Jour


Proverbs 19:12 sycophantically describes the moodiness of kings:

12 A king’s rage is like the roar of a lion,
    but his favor is like dew on the grass.

I would have improved the parallelism with "the purring of a kitten" instead of "dew on the grass". But I guess that's why God didn't hire me to write the Bible.

■ The campus activists/wannabe Torquemadas at AllEyesOnUNH posted their Halloween costume no-nos:

Amusingly, they're getting some flak in the comments due to (a) the political incorrectness of "gypsy" and (b) a discussion about whether dressing in "drag" has anything to do with being transgender.

Me, I'm wondering how someone could come up with a costume that would violate as many of those rules as possible. Liberace in a hijab?

I already linked to this Reason article by Lenore Skenazy and Jonathan Haidt yesterday, but let me quote from it again:

At Yale in 2015, after 13 college administrators signed a letter outlining appropriate vs. inappropriate costume choices for students, the childhood development expert and campus lecturer Erika Christakis suggested that it would be better to allow kids to think for themselves. After all, Halloween is supposed to be about pushing boundaries. "Is there no room anymore for a child or young person to be a little obnoxious…or, yes, offensive?" she wrote. "Have we lost faith in young people's capacity—your capacity—to ignore or reject things that trouble you?"

Apparently, yes. Angry students mobbed her husband, the professor Nicholas Christakis, surrounding him in the courtyard of the residential college where he served as master. They screamed obscenities and demanded he apologize for believing, along with his wife, that college students are in fact capable of handling offensive costumes on Halloween. "Be quiet!" a student shouted at him at one point. "As master, it is your job to create a place of comfort and home for the students!" She did not take kindly to his response that, to the contrary, he sees it as his job to create a space where students can grow intellectually.

As it turns out, Halloween is the perfect Petri dish for observing what we have done to childhood. We didn't think anything was safe enough for young people. And now we are witnessing the results.

Two years later, we'll see if the UNH petri dish works out any different than Yale's.

■ Tyler Cowen does some history in the wake of the Russian purchase of Facebook ads: That was then, this is now, Soviet-Russian media subsidies edition

This is the week of hearings on Facebook ads, as well as Twitter and Google promotion of pro-Putin or sometimes pro-Trump or disruptive ideas.  So far we know that Russia-linked ads on Facebook cost about $100,000, a laughably low number.  Maybe there is much more hidden, but so far I don’t see it.

$100,000 is exactly the amount the Comintern gave in the 1920s to organize a campaign against John L. Lewis leading the mine union.  No, I am not adjusting for inflation, so in real terms the sum in the 20s was much higher.  The Comintern also gave at least $35,000 to start the Daily Worker, again that is a nominal figure from the 1920s.  The American Communist Party received subsidies too.  Many other communist subsidies, media and otherwise, remain hidden or at least uncertain.

Since I am (on occasion) a Commie-hater, I welcome any and all new assistants to the cause of finding Russians under our beds.

■ Andrew Klavan writes on The Trouble With Maggie Haberman. Given the subject matter—Haberman is senior White House correspondent for the New York Times—I'm surprised his article isn't book-length, but:

Maggie Haberman is shocked — shocked — to find that Hillary Clinton's people are dishonest. Some of you may remember Hillary Clinton. This is the woman who lied about her husband's infidelity, her trip to Bosnia, the cause of the Benghazi massacre, her illegal emails and just about everything else she's ever talked about. But when the Clinton people told Haberman that they had nothing to do with the now-infamous Steele dossier filled with dubious Russian dirt on Donald Trump, Maggie apparently bought it hook, line and sinker. "Folks involved in funding this lied about it, and with sanctimony, for a year," she complained on Twitter. Shocked.

Don't worry, Mr. Klavan. Pretty soon Maggie will snap back to her usual attitude of Progressive gullibility.

■ And George Washington’s Church Is Going to Rip Out His Memorial. Really:

The Virginia church that George Washington attended for two decades plans to tear out a memorial to the nation’s first president because the plaque could make some worshipers feel “unsafe or unwelcome.”

I can't help but think they just made a lot more of their parishioners feel unwelcome by this action, but we'll see.

Last Modified 2017-10-30 12:23 PM EST

Funny Money

[Amazon Link]

Another book I bought long ago (circa 2003, I think) for reasons I have long since forgotten. If it was award-nominated, I can't find any record of it. There's a glowing blurb on the front cover from Michael Connelly ("James Swain is the best new writer I have come across."), so that might have been it. I'm not typically seduced by blurbs, though.

Never mind the reasons, it was an enjoyable read. Not quite enough to dump James Swain's seventeen other novels onto my to-be-read pile, but a veritable page-turner.

It is the second book in Swain's "Tony Valentine" series. Tony is an ex-cop from Atlantic City, a recent widower, and runs a consulting service out of his Florida digs, specializing in figuring out how gambling casinos are being ripped off by their patrons and employees. He has a wayward son who keeps making bad choices.

I cast the movie after only reading a few pages: Gregory Jbara, the guy who plays Frank Reagan's assistant Garrett on the TV show Blue Bloods. Don't know why, but he just popped into my head and stayed there while I was reading.

Anyway, Tony's ex-partner gets killed (no spoiler, that's page 8) while he's on the phone with Tony. So: this time it's personal. It's apparently tied in with a casino being taken at blackjack by a gang of scruffy players of European descent. Along the way, Tony meets a beautiful lady professional wrestler, a mobster who's threatening Tony's son, a bunch of Atlantic City cops (clean and dirty), and the Governor of Florida. And many more.

It's a lot of fun, and there's a nice twisty revelation in the penultimate chapter that I seriously did not see coming.

My Book Picker (and Unpicker)

[2019/11/11 Update: sources moved to https://github.com/punsalad/projects/tree/master/bookpicker_simple GitHub]

[2018/07/03 Update: A newer version is described here. I'm leaving this description, and the scripts it describes, in place, though, because it's simpler.]

Another example of the mental aberration that causes me to write Perl scripts to solve life's little everyday irritants. In this case two little irritants:

  1. I noticed that I had a lot of books on my shelves, acquired long past, that I never got around to reading. Either because (a) they were dauntingly long and dense (I'm thinking about Infinite Jest by David Foster Wallace); or because (b) they just fell through the cracks. Both poor excuses, but there you are.

  2. I sometimes want to methodically read a series of books in a particular order.

In other words, I needed a way to bring diligence and organization to my previous chaotic and sloppy reading habits.

Here's how I went about scripting that:

I conceptualized my "to be read" books as a collection of book stacks, like the picture at (your) right (except more of them). Each stack is a list of books:

  1. either organized around a specific theme (usually an author) or is a catchall (e.g. "non-fiction"); and

  2. maintained in the order I want to read them. (This goes back to the issue mentioned above: sometimes a series really "should" be read in publishing order, for example C.J. Box's novels featuring protagonist Joe Pickett.)

The implementation of this concept: each stack is a .list file in my Linux directory ~/var/reading_lists. As I type, sixteen of them:

(pas@oakland) ~/var/reading_lists: ls -l *.list
-rw------- 1 pas pas 183 Oct 20 17:47 amber.list
-rw------- 1 pas pas  41 May 17 18:05 asimov.list
-rw------- 1 pas pas 242 Jul 25 06:09 box.list
-rw------- 1 pas pas  93 Oct  9 12:27 connelly.list
-rw------- 1 pas pas  43 Sep  7 10:28 conservative_lit_101.list
-rw------- 1 pas pas  75 Sep 17 13:32 docford.list
-rw------- 1 pas pas  46 Jun 30 11:12 elmore.list
-rw------- 1 pas pas  83 Mar 29  2016 francis.list
-rw------- 1 pas pas 266 Oct 28 06:52 genfic.list
-rw------- 1 pas pas  65 Apr 13  2017 monkeewrench.list
-rw------- 1 pas pas 144 Oct 16 17:11 moore.list
-rw------- 1 pas pas 199 Oct 25 13:47 mystery.list
-rw------- 1 pas pas 523 Oct 16 13:12 nonfic.list
-rw------- 1 pas pas  56 Jul 18 15:04 reacher.list
-rw------- 1 pas pas 333 Aug 30 15:37 sci-fi.list
-rw------- 1 pas pas  45 Jun 11 15:50 winslow.list

Each list has one or more lines:

(pas@oakland) ~/var/reading_lists: wc -l *.list
   6 amber.list
   1 asimov.list
  11 box.list
   3 connelly.list
   1 conservative_lit_101.list
   5 docford.list
   4 elmore.list
   2 francis.list
   8 genfic.list
   4 monkeewrench.list
   5 moore.list
   6 mystery.list
  13 nonfic.list
   2 reacher.list
   9 sci-fi.list
   2 winslow.list
  82 total

… and each line in each file contains a different book title. Example with elmore.list, a list I created in lieu of watching the six seasons of Justified on Amazon Prime for the fourth time.

(pas@oakland) ~/var/reading_lists: cat elmore.list
Riding the Rap
Fire in the Hole

I.e., four books written by the late Elmore Leonard where Raylan Givens appears as a character.

The picking algorithm is simple and "works for me". When it's time to choose the next book to be read from this agglomeration, I pick a pile "at random" and take the book from the "top of the pile" (i.e., the one named in the first line of the file).

There is one more little tweak: the "random" pick is weighted by the length of the list. So (for example) since there are 82 books total in all lists above, and the nonfic.list has 13 lines, a book from that list would be picked with probability 1382. (Note the probabilities calculated this way add up to 1, the probability that some book from pile will be picked.)

That's not as hard as it might sound. I'd pseudocode the algorithm like this:

Given: N lists (indexed 0..N-1) with Bi books in the ith list…

Let T be the total number of books in the lists, B0 + B1 + … + BN-1

Pick a random number r between 0 and T-1.

i = 0
while (r >= Bi)
     r -= Bi

… and on loop exit i will index the list picked.

So: the "picking" script, bookpicker, is here. Notes:

  • You just run the script with no arguments or options.

  • I left "debugging" print statements in.

  • You're responsible for maintaining the lists; no blank/duplicate lines, etc.

  • For the "picked" list, the script writes a smaller file with the picked title missing. The old list is saved with a .old appended to the name. That's important, because next…

One last little gotcha: the randomization is sometimes a little too random. Specifically, sometimes after reading a book by a certain author, the picking script picks… the next book in the list by the same author. I don't want that. Variety is better.

So  there's also a script to "undo" a previous pick, bookpicker_unpick. If you run it before any other changes are made to the list files, it will find the most-recently-modified .list file, and "restore" the corresponding .list.old file. The script, is here.

Last Modified 2019-11-11 6:31 AM EST