Content-Type: text/shitpost

Subject: My software had a bug
Path: you​!your-host​!ultron​!gormenghast​!hal9000​!plovergw​!shitpost​!mjd
Date: 2018-10-18T18:10:43
Message-ID: <>
Content-Type: text/shitpost

After I went to publish today's article titled “intestines” I looked at the blog and it wasn't there.

I have several plugins that could block the introduction of an article before it's ready: there might be a .notyet file in the same directory; it might have published: 0 in the article's metadata, and so on. I checked all those and everything looked fine. The article showed up properly in the test version of the blog, but when I build the static version it was never included.

I finally ran the blog software under the debugger. It was indeed selecting the “intestines” article and then one of the plugins was filtering it out. Stepping through the plugins eventually revealed which one was responsible:

package tests;

my $TEST = $ENV{REQUEST_URI} =~ m{^/test};

# Do NOT use this module when blog is in test mode
sub start { ! $TEST }

# Discard posts whose titles contain tests
sub filter {
  my ($pkg, $files) = @_;

  delete $files->{$_} for grep /test/, keys %$files;
  return 1;

The post was being discarded from the live version because “intestines” matches /test/. Sheesh.

I had no idea I had this plugin, which I probably wrote in 2006.

Subject: A modest proposal
Path: you​!your-host​!walldrug​!epicac​!thermostellar-bomb-20​!twirlip​!wescac​!skynet​!m5​!plovergw​!shitpost​!mjd
Date: 2018-10-18T17:46:14
Newsgroup: misc.misc.proposal
Message-ID: <>
Content-Type: text/shitpost

I suggest that the word “baby” be retired from all rock music, except when it is used to refer to an actual baby.

Subject: Intestines
Path: you​!your-host​!walldrug​!epicac​!thermostellar-bomb-20​!twirlip​!am​!plovergw​!shitpost​!mjd
Date: 2018-10-18T17:08:45
Newsgroup: sci.math.intestines
Message-ID: <>
Content-Type: text/shitpost

Here's a list of the words from Webster's Second International Dictionary where the letters in the first half of the word are the same as the letters in the second half:


Subject: Jarring interactions with the computer
Path: you​!your-host​!walldrug​!prime-radiant​!uunet​!asr33​!kremvax​!hal9000​!plovergw​!shitpost​!mjd
Date: 2018-10-16T12:44:26
Newsgroup: misc.surprising-prompts
Message-ID: <>
Content-Type: text/shitpost

I have an interactive program that streamlines the process of shitposting. Today we had the following exchange:

   Edit? [no]  yes
   Commit? [no]  s
   Answer Y or N, dumbass.
   Commit? [no]

I had forgotten that I put that in, and was startled.

I think living with me must be like that a lot of the time, because I live with me, and it is like that a lot of the time.

Subject: The tax sysem as a manual!
Path: you​!your-host​!walldrug​!prime-radiant​!uunet​!asr33​!glados​!extro​!forbin​!berserker​!plovergw​!shitpost​!mjd
Date: 2018-10-16T12:37:30
Message-ID: <>
Content-Type: text/shitpost

It turns out that the U.S. individual tax system has a users’ manual! It is 300 pages long, which is not unreasonable. I have read plenty of 300-page manuals in my time.

It seems tragic that I didn't find out about this thirty years ago, since I am exactly that rare weirdo who would read this manual and find it really useful.

Publication 17

Subject: Bad business idea
Path: you​!your-host​!ultron​!gormenghast​!qwerty​!fpuzhpx​!plovergw​!shitpost​!mjd
Date: 2018-10-15T13:10:17
Message-ID: <>
Content-Type: text/shitpost

Goat-scented air fresheners

Subject: Today I learned…
Path: you​!your-host​!ultron​!uunet​!batcomputer​!plovergw​!plovervax​!shitpost​!mjd
Date: 2018-10-15T12:48:49
Message-ID: <>
Content-Type: text/shitpost

Malcolm X and Redd Foxx were lifelong friends. They met when both were working as dishwashers in the same restaurant.

New York Times obituary of Foxx

Wikipedia article on Malcolm X

Subject: Maybe the worst conference talk I've ever been to
Path: you​!your-host​!ultron​!uunet​!asr33​!skynet​!m5​!plovergw​!shitpost​!mjd
Date: 2018-10-14T20:35:07
Newsgroup: talk.mjd.accessibility
Message-ID: <>
Content-Type: text/shitpost

I've been to some crappy conference talks, let me tell you. And usually they're crappy in pretty much the same way: too little substance, delivered too late. (This is what led me to invent lightning talks: if the speaker can't get off their thumb and get to the point, then by God we'll get them off the stage and give it to someone who can.)

Anyway, this talk was crappy in a whole new way. It was about designing accessible web sites. The speaker put up his first slide and here's what I saw:

A bearded person is
standing, not far away, at a lectern in front of projection screens.
Displayed on the screens is the first of his talk slides, with a great
deal of blue text in an illegibly small font.

I raised my hand. “Excuse me,” I said. “I can't read that. Can you please make the font bigger?”

“Um, no, I can't.”

So I got up and walked out.

Subject: Software Archaeology
Path: you​!your-host​!wintermute​!wikipedia​!twirlip​!am​!plovergw​!shitpost​!mjd
Date: 2018-10-12T19:00:19
Message-ID: <>
Content-Type: text/shitpost

I have a program that is a wrapper around ssh. It's officially named employer-ssh, and running employer-ssh git looks up the alias monkey in a table to find the real hostname, and then runs ssh There are some other features attached to it also. For example, it makes sure that the VPN is connected before it tries to run ssh.

I never actually invoke it as employer-ssh monkey, though. Instead, I just run monkey, which is a symlink to employer-ssh. The program sees that no argument has been supplied, and infers that monkey is the alias I wanted to use.

It sometimes happens that I need that long hostname in some other context though, and for quite a while the way I would look it up would be to grep the source code of the program:

    % grep monkey $(which monkey)
      monkey )

This had been bugging me for a while, and I had the idea of giving the program a flag so that instead of running ssh it would just print out the full hostname. After several months, I finally got around to putting in that feature.

Or I tried to. I found it had been there all along:

    % monkey what      

This mode also makes it skip the part where it deals with the VPN.

I don't know what to conclude from this.


Subject: Stuff I'm not tired of yet
Path: you​!your-host​!walldrug​!epicac​!thermostellar-bomb-20​!central-scrutinizer​!fpuzhpx​!plovergw​!shitpost​!mjd
Date: 2018-10-11T18:39:25
Message-ID: <>
Content-Type: text/shitpost

“Fucking x, how does it work?”

(Most recently, fucking (-> e), how does it work?)

Subject: Phrases I would like to revive
Path: you​!your-host​!ultron​!uunet​!batcomputer​!plovergw​!ploverhub​!shitpost​!mjd
Date: 2018-10-10T14:27:40
Newsgroup: rec.pets.terms
Message-ID: <>
Content-Type: text/shitpost

Let's all refer to computers as “giant electronic brains”.

Subject: Lingua Franca?
Path: you​!your-host​!walldrug​!epicac​!thermostellar-bomb-20​!twirlip​!am​!plovergw​!plover​!shitpost​!mjd
Date: 2018-10-07T09:24:32
Message-ID: <>
Content-Type: text/shitpost

By about 1500, Scots was the lingua franca of Scotland.

What a weird sentence. Did the person who wrote this think about what they were writing? Maybe they did, and they thought it was funny, or maybe they just charged ahead. I honestly don't know.

(Original source)

Subject: SMFO
Path: you​!your-host​!walldrug​!epicac​!thermostellar-bomb-20​!twirlip​!wescac​!berserker​!plovergw​!shitpost​!mjd
Date: 2018-10-07T00:12:31
Newsgroup: comp.protocols.tcp-ip.smfo
Message-ID: <>
Content-Type: text/shitpost

A concrete utility hole cover in a
sidewalk.  My feet, wearing sandals, are also visible.  The cover is
labeled ‘SMFO’

A scan of an excerpt from a
book. It reads: “What is s-m-f-o?” asked Mother.  “Better,” said
Frances. “Good-bye.  I will be out of town visiting Alice for two
weeks, and I will be back for dinner.”

Subject: Orogeny orogeny orogeny
Path: you​!your-host​!wintermute​!uunet​!batcomputer​!plovergw​!ploverhub​!shitpost​!mjd
Date: 2018-10-06T21:22:09
Newsgroup: sci.math.orogeny
Message-ID: <>
Content-Type: text/shitpost

Wikipedia informs me:

The orogeny of an orogen is only part of the orogen's orogenic cycle.

Subject: Why are there Mayan numerals in MacArthur Park?
Path: you​!your-host​!wintermute​!hardees​!m5​!plovergw​!ploverhub​!shitpost​!mjd
Date: 2018-10-04T00:37:46
Newsgroup: talk.bizarre.mayan-numerals
Message-ID: <>
Content-Type: text/shitpost

This is MacArthur Park the Westlake area of Los Angeles.

These pillars are made of some sort of steel, with holes cut in them in what are evidently Mayan numerals. (Bars are fives, dots are ones, and those hamburger football things are zeroes. Groups of bars and dots composed vertically in a base-20 system.)

But why? What do the numbers signify?

The LA Parks and Recreation web site for MacArthur Park features these pillars prominently, but offers no explanation. Does anyone know what is up?

Subject: The heavy metal umlaut
Path: you​!your-host​!ultron​!brain-in-a-vat​!berserker​!plovergw​!shitpost​!mjd
Date: 2018-09-27T02:30:17
Message-ID: <>
Content-Type: text/shitpost

It seems clear that the heavy metal umlaut was first discovered by Blue Öyster Cult, although some claim, implausibly, that its invention by Mötorhead was an independent one. Blue Öyster Cult's album of that same title was released in 1972; Mötorhead was not convened until 1975.

But as far as I know nobody has suggested that both groups were anticipated by, and perhaps even inspired by, Häagen-Dazs, which dates to 1961.

Subject: Sheesh
Path: you​!your-host​!ultron​!uunet​!asr33​!hardees​!triffid​!gormenghast​!extro​!goatrectum​!plovergw​!shitpost​!mjd
Date: 2018-09-25T20:25:50
Message-ID: <>
Content-Type: text/shitpost

I just wrote a program that didn't do anything when I ran it.

It's because the main loop had:

 if len(base_word) < 6 or len(base_word) > 5:

That 5 should have been a 7.

Now it has me thinking about what programming language designs would enable the programming system to notice that error and issue a warning “Hey, you wrote a test, but it can never return false”.

Maybe instead of some sort of briliant static analysis, what we need instead is an eaasy dynamic analysis: “Hey, here's a list of tests in your program that always had the same result.”

Has someone outfitted Eclipse or some other IDE to annotate your program after each run with pastel shades showing which parts were actually exercised and which were never run? That seems like it could be useful.

Subject: More cooking improvisation
Path: you​!your-host​!wintermute​!glados​!extro​!goatrectum​!plovergw​!shitpost​!mjd
Date: 2018-09-25T05:46:21
Newsgroup: sci.math.improvised-cooking
Message-ID: <>
Content-Type: text/shitpost

Yesterday I was going to do the grocery shopping and Katara said she wanted beef in cubes. So I bought a chunk of beef roast, cubed it, and fried it on the skillet. Katara often surprises me by rejecting what I think is lovely food, but so far she has never rejected straight fried meat with salt and pepper. Okay, whatever, at least it's easy.

We also had some yellow squashes in the refrigerator so I decided to cook those. I made Toph tell me whether to turn them into discs or spears (discs) and then I cooked them in oil in a cast-iron frying pan, with some salt. I thought I would probably add a little soy sauce or something to them a later on but while they were cooking I remembered that we had paneer in the freezer. Toph had asked for it a couple of weeks before but hadn't specified what she wanted done with it. I didn't want it to just sit there forever, and this seemed like as good a time as any to use it. So I cubed up the paneer and put it in with the squash, and then because it was paneer I put in some cumin and cardamom and turmeric powder.

I liked it, and the kids ate a lot of it, so I suppose that counts as a success.

This is a very typical example of how I cook. This style really suits me. I'm good at improvising and not good at planning. I buy things at the store that I think I might want to cook later, and then I forget about them. But then I look in the refrigerator for ingredients and hey, look, yellow squashes. Okay, we can have yellow squash, fine. Sometimes I feel like that guy in Memento, sending myself messages through time.

One drawback of this style of cooking: when you make something you like, you can't always make it a second time. How much turmeric did I put in? Uh, I'm not sure. A few shakes? I made an awesome turkey and potato stew in 1995 that I really wish I could duplicate. But I don't remember how I did it.

Another drawback: sometimes toward the end I realize what I should have done back at the beginning and then it's too late. For example, onions. If you want to put in onions you have to commit to them ahead of time because they take so long too cook. If I had known ahead of time that I was going to put cumin and paneer into the squash I would have cooked it in ghee instead of in vegetable oil. Oh well, maybe next time.

And sometimes I become indecisive at a crucial moment and ruin the food. But in the worst case, there is always peanut butter.

Subject: I learned a new word!
Path: you​!your-host​!ultron​!ihnp4​!hal9000​!plovergw​!shitpost​!mjd
Date: 2018-09-24T01:17:03
Newsgroup: rec.pets.fagocitization
Message-ID: <>
Content-Type: text/shitpost


I wrote:

I hope to phagocytize this word into my own vocabulary, immediately and with peaceful aplomb.

I didn't do it immediately, but I did get it in there!

Subject: Good work, Mr. Dominus!
Path: you​!your-host​!ultron​!ihnp4​!grey-area​!fpuzhpx​!plovergw​!shitpost​!mjd
Date: 2018-09-19T16:48:31
Newsgroup: alt.mjd.good-design
Message-ID: <>
Content-Type: text/shitpost

Today I went to push some Git branch to a private Git repository, and I received the following reply:

# You are trying to push 0 commits that have 'wip' in their messages!
The naughty commits are:
#   6a9a5e0c970
#   24eddb9721b
#   ba286d92d29
#   da6a115165a
#   d06caa5d8c4
#   ee4a2baf8c6
#   9be7089ec1a
#   4868c296c65

Oh, crap, it must be some experimental hook I put into the remote repo. Unfinished from the looks of it. (Because of “0 commits”. A bug that obvious and unavoidable must mean that the work was half-baked.)

So I thought grumpily that I would to have to get into the remote machine and disable the hook…

And then I saw that the message ended with:

    #   (Use git-push --no-verify to evade this check.)

Oh, thanks! Useful!

And because of that, I realized that it was actually a local hook, .git/hooks/pre-push in fact. So I just opened the editor and fixed the bug. And then I used --no-verify, which was the right thing in that circumstance.

I forget stuff a lot, and putting in this sort of hint really helps me when I fall foul of my own incomplete work, months after I have forgotten it. It's like a gift from my past self, and getting them also motivates me to try to send more such gifts to my future selves.

Subject: Useful life hack
Path: you​!your-host​!walldrug​!prime-radiant​!berserker​!plovergw​!shitpost​!mjd
Date: 2018-09-17T19:00:12
Message-ID: <>
Content-Type: text/shitpost

A few weeks ago I had a clogged inkjet cartridge and the instructions online suggested soaking it in a diluted solution rubbing alcohol. But I couldn't find the rubbing alcohol because Toph had taken it for a project.

But for some reason my wife keeps a bottle of cheap vodka in the liquor cabinet. I don't drink vodka, and she doesn't drink at all, so it had just been sitting there uselessly. And hey, that's what vodka is, it's nothing but 40% ethanol solution. So I warmed some up in the microwave and soaked the cartridge in it, which cleaned it right up.

That reminds me I used to have a friend whose relatives in Tennessee would send him their homemade moonshine. He used it to clean the heads on his tape recorder.

Subject: New t-shirt
Path: you​!your-host​!walldrug​!epicac​!thermostellar-bomb-20​!skordokott​!mechanical-turk​!goatrectum​!plovergw​!shitpost​!mjd
Date: 2018-09-17T16:56:28
Newsgroup: misc.root-cause
Message-ID: <>
Content-Type: text/shitpost

Subject: Today I learned…
Path: you​!your-host​!wintermute​!wikipedia​!twirlip​!batcomputer​!plovergw​!shitpost​!mjd
Date: 2018-09-14T20:25:41
Message-ID: <>
Content-Type: text/shitpost

How is it that mushrooms can appear so suddenly overnight or immediately after a rainstorm? It turns out that the fungus organism builds the mushroom structure ahead of time. All the cells are there, properly assembled, but very small, in a form called a primordium. When enough water is available, the fungus pumps it into the cells, inflating them like water balloons, and the mushroom pops up.

It's been very damp in Philadelphia of late.

The trunk of a tree, arising from
a missing patch in the sidewalk, with several columns of bracket
fungus protruding from its various sides. Close-up ground-level picture of
a cluster small, light brown mushrooms that have sprung up in the
mulch in a planter.

Subject: Speech-to-text oddity of the day
Path: you​!your-host​!walldrug​!epicac​!thermostellar-bomb-20​!twirlip​!am​!plovergw​!plover​!shitpost​!mjd
Date: 2018-09-14T18:18:42
Newsgroup: talk.bizarre.speech-to-text
Message-ID: <>
Content-Type: text/shitpost

While driving, I often remember things I wanted to write up for the blog, and I ask my phone to take a note, which it converts into email. Later I see the email and remember what I wanted to write up.

Sometimes speech-to-text produces interesting results. This time I asked it to remind me to write up the article about the prime mnemonic system that didn't work. But the email it sent said:

Don't forget to write up the article about the prime and demonic system that didn't work

Subject: We have scare quotes
Path: you​!your-host​!walldrug​!prime-radiant​!computer​!glados​!extro​!forbin​!brain-in-a-vat​!am​!plovergw​!shitpost​!mjd
Date: 2018-09-12T15:34:11
Message-ID: <>
Content-Type: text/shitpost

Tony Finch suggests that we could use ⸢square quotes⸣ as scare quotes. I will adopt this suggestion forthwith.