Published on . Updated on .

This is my incubator. It’s easy to build up a body of work if you keep a collection of limbs.


They say “truckie,” not “trucker,” as seen in Sydney Tunnels Have Giant Water Holograms.


(2020-08-06, 12:15:30-0700 to 2020-08-06, 12:22:41-0700)

Ubasute (姥捨て, “abandoning an old woman”, also called obasute and sometimes oyasute 親捨て “abandoning a parent”) is the rare, old[1] practice of senicide in Japan, whereby an infirm or elderly relative was carried to a mountain, or some other remote, desolate place, and left there to die.[2] According to the Kodansha Illustrated Encyclopedia of Japan, ubasute “is the subject of legend, but… does not seem ever to have been a common custom”.[1]

Ha. I notice that “姥捨て” begins with kanji whch, when read in Mandarin, are homophonous to 老舍. The meaning is not similar in the first character (“lao” in the author’s name means “forever, always, eternally”) but it could be (as “lao” can, in sufficiently compressed contexts, directly indicate an old person). As for the second character, 捨, it’s a variant of 舍; they have the same meaning of “giving up, relinquishing”.

I am no help on the hiragana glyph which comes after the two kanji in “ubasute”. my wild guess is that it’s either verbing the noun “old woman/grandmother abandonment”, or nouning the verb “to abandon an old woman/grandmother”.

Dream of Dang Village

A parody mash-up for the ages: combine the American cartoon King of the Hill with Yan Lianke’s tragic novel Dream of Ding Village.

Sexagenary Cycle Programming Library

Code for converting between Gregorian and Chinese year numbers already exists. Wikipedia highlights the current year on the sexegenary cycle list, and somebody programmed that. But, all the same, I can amuse myself by thinking about it.

Things to be defined would include:


When I come across an unfamiliar phrase, especially one that’s metaphorical, it’s useful to be able to search text documents, on the web or elsewhere, for regular expressions matching that phrase.

I’d like to begin building my own repository of documents to run such searches against, as well as write a program to run them against websites like the Chinese Text Project, Gu Shi Wen (“Ancient Poetry and Literature”), Jukuu, and Zdic.

For a user interface, the ability to run searches comes first. Then, the ability to save information from a search into a memorization flashcard. Further improvements: the interrelated concepts of searching with (limited) regexps and other special operators (see; saving and re-running searches; saving (list (parameters) (API version)) to the user’s local storage or offering to download it as a file… a way that produces premade regexps for different purposes, or the ability to save and re-run searches.

As for development techniques, this seems like a fit for a server application. I send it queries, it works, it sends back results. I could run the application on my local computer for my own purposes (a strategy of which I am growing fond), and providing the search tools to other people is as simple as running the app on my own VPS.

What I Use

Software, tools, and services. Search keyword: “uses this.”


“They also serve who wrinkle and are gone.”

“Action” Drew Jackson Text Message Extraction

Items originating in messages to Drew, archived here:

Potential Courses

Workout Weight Progression


Novice weightlifters are typically encouraged to use one weight until they can perform a certain number of reps, then go to the next-biggest weight and repeat. This straightforward approach, called linear progression, is the standard recommendation for those new to weight training.

I’ve noticed, however, that the total weight moved per set (which I’ll call “poundage”) in linear progression can vary dramatically between total pounds moved in a set, at weight W, of the maximum number of reps R, and a set of 1 or 2 reps at the next highest weight2. For example, 1x50 = 50 poundage, and 2x50 = 100 poundage: both of which are lower than 3x45 = 135 poundage. The linear progression can be shown by executing the following only-slightly-pseudocode, and if we graphed the poundage values in the result list, we’d see spikes up and down as the lifter moved from one 5-pound increment to the next:

    ((weights (range 45 50 ... 225))
    (reps '(1 2 3 4 5))
        (dolist (weight weights)
            (dolist (rep reps)
                (let ((poundage (* weight rep)))
                    (push poundage result))))

However, if we sort result (and add some extra code to match each poundage with its values for weight and rep), we would have a weight progression which is smoother than the linear approach. I don’t know whether or not this smooth progression would actually be more efficient for a novice, since periodic resets to a lower poundage are valuable for sustained progress3.

Chinese Notes

Translation Interface


Two windows next to each other, one of which shows usage instances for the word under, or around, the cursor.

Part of the challenge of creating an interface to help with Chinese translation lies in defining the extent of a word. For example, when a verb and an object (e.g. 吃东西 ), is combined with a two-character complement4 (e.g. 起来), the result, 吃起东西来, does not contain “起来” as a substring, because two-character complements get split up to follow both verb and object. Any digital dictionary or reference system concerned with usage examples will have to account for this fact of Chinese grammar, and contain the knowledge that, despite the results of affixation, this can be considered an occurrence of the “起来” complement.

Pronunciations with Few Characters


There are some pronunciations which are possible pinyin syllables but which are not associated with any words in the language, such as “hiong” or “jung”. But even more interesting, to my mind, are those syllables which exist but are associated with few characters.

Setting aside a special case, as of 2019-09-23 I believe the existing syllable with the fewest associated characters is miu4, which as far as I know is a reading for just three characters: 谬, 缪, and 唒. Of these, I’ve only seen dictionary entries for the first two, and the word 荒谬 is the most likely word in which you will see one of these characters in the wild.

The special case is 佛 fo2 “Buddha”. Technically there are other characters with this pronunciation, but they are variants of the original (whereas the characters pronounced miu4 all have distinct etymologies.) I call this a special case because, unlike miu4, where by historical accident there are no other characters currently pronounced that way, the lack of other characters pronounced fo2 is due to the intersection of religious conviction and traditional Chinese naming taboos.

2020-02-24T11:14:42-0800: A syllable with even fewer associated characters than miu4 is shei2, which AFAIK is associated only with the interrogative pronoun shei2 “who”.

2020-07-19T19:20:46-0700: The Mandarin syllable “ne” (any tone) is associated with only three characters. One such character, associated with ne5, is the particle 呢. The meaning is hard to pin down (it occurs in question sentences and when listing items), but it’s as common as can be. The other two characters are pronounced ne4; these are 讷 “speak slowly; inarticulate” and the radical 疒 “sick, sickness”. I’ve never heard this last one referred to as ne4, which is its name as a Kangxi radical; in everyday speech, it is called 病字旁, “the radical in 病” (which also means “sick, sickness”).

Isn’t Chinese fascinating?

Which Mandarin Romanization Notation Should I Use?

Here is the case for using gei3 instead of standard Pinyin gěi.



Decision: Standardize on gei3-type citations for source material. Can use scripts in the build process to automate find-replace for publishing. I don’t care about academic or legal standards right now, and any Chinese linguistics writing I do will probably not be for laymen.

Tabbing Through Tones with MacOS Chinese Input


MacOS Chinese input allows you to cycle through the tones with TAB. I just discovered this after years of (begrudgingly) using this input method. Harrumph! They could have put the tones on the number keys to kill two birds with one stone:

  1. Number -> tone is a straightforward, well-known mapping, so I wouldn’t have had to discover this at random
  2. It would have forced them to find a smarter, more ergonomic way of letting me pick candidates, rather than having to lift my fingers from the letter keys to identify every single character I want to use.

Simple but Uncommon Chinese Characters

2019-11-14. Update 2020-07-16T18:58:31-0700.

There are Chinese characters which are structurally simple, but not in common use today.

A perfect example is 屾 shen1, a literary term which means “并列的两座山” (“two mountains side by side”.) This is one of relatively few characters that is actually ideographic, i.e. has a shape depicting the real-world concept it represents. This is because 屾 shen1 is made up of two side-by-side copies of the character for mountain, 山 shan1. Two mountains side-by-side in the character; “two mountains side-by-side” for the meaning.

Below are other characters which have piqued my interest.

Notable Characters


Just a dumping ground for characters that are peculiar.

New Chinese Name

Surname list with well over 250 entries, including two-character ones:

Surname candidate syllables: [zhang zheng zhong zhai zhan jing]. Candidate characters:

“M”-initial candidate syllables: [ma man mang mai mu mi miao miu mao men meng mei]. Candidate characters:

“W”-initial candidate syllables: [wa wan wang wu wo wei weng]. Candidate characters:

Python code to query MDBG:

item = "ma" # search for characters pronounced ma (any tone)
import requests

Corpus of Chinese Recordings

There’s some website I’ve used before which contained a bunch of people speaking topolects (fangyan) or reading MSM with a topolect accent. Can’t find the thing now, of course.

What’s Up With Gei

Besides its verbal use, 给, with the reading gei3, is also (roughly speaking) “near-obligatory case marker for indirect object”.

But 给 has at least one other use, as the example 把什么东西给烧了 demonstrates. The function of 给 here seems similar to the usage of 弄 and 搞 with complements like 对 and 好, e.g. 弄好/搞好 “improve; put right”.

I think there may be other nuances related to animate nouns, too. I’ll keep an eye out.

2020-02-24T11:29:29-0800 - while translating “Iron Bull and Sick Duck”, I found some examples of this phenomenon to copy into here. TODO.

2020-05-14T13:31:00-0700 - Aha! The AllSet Chinese Grammar wiki contends that this is a passive construction. It all makes sense now. (Be warned that AllSet occasionally offers quite poor English translations, like these.)

Website Improvements

2020-02-04T17:36:44-0800, and beyond

Hakyll Notes


The function Hakyll.Web.HTML.relativizeUrls (at is defined in terms of the helper function relativizeUrlsWith, which is itself defined in terms of Hakyll.Web.HTML.withUrls:

withUrls :: (String -> String) -> String -> String Apply a function to each URL on a webpage.

If I want to do anything to all the URLS on a page (such as extract them for sending Webmentions), this could be a good starting point.

I don’t want to use Hakyll forever, but while I’m still stuck with it, see the file aherrmann-hakyll-tips.txt (not you, Reader: this is a note for me) for some useful code, copied from Aherrmann.

Videogame Idea

There are two modes to this game. Mode 1 is played in a 3rd-person or 1st-person perspective (I think 1st-person would be more satisfying.) On your turn, you swing your sword toward the enemy’s body. The motion of the sword can be precisely controlled, as can the hit location; part of the game skill is hitting a “juicy” place on your enemy.

Mode 2 begins as your sword impacts the enemy. The game speed slows down, and a picture-in-picture appears, showing a magnified view of the part of the enemy that you hit. You guide the sword blade through the enemy body part, with the overall direction of your blade determined by the angle of your sword stroke and other such factors. Your time is limited by the size of the body part because your blade is passing through them (perhaps it might be possible for the blade to get stuck, ending your Mode 2 turn early.) You’re trying to do something: either deal damage to the interior of the body part by destroying the “chunks” inside, or navigating the torturous path between the chunks in order to sever the body part. Dealing damage is easier, but it only weakens the limb instead of severing it.

Different parts of the body could present different obstacles, or special unique points. There might be a special “bisect” move available if you swing your sword at the top of the enemy’s head and successfully navigate their whole body; hitting the heart or stomach or intestines might do something special, if those are even modeled at all; etc.

Lisp Notes


The reason Lisp is special is because you can TURN OFF semantics.

(+ 1 1) is pure form. (+ 1 1) is syntax. (+ 1 1) is a syntactic expression: it has structure.

But, until we evaluate it, it doesn’t have meaning. [It might appear to be “add one and one,” but in a programming language7 focused on bits and bytes, (+ 1 1) might well be the command to put together two bits, resulting in 11.]

In all the Lisp-family languages I know of, because they are programming languages, and by default the programmer expects to evaluate syntactic expressions, the default notation for an expression which will be evaluated is simpler than that for one which will not be evaluated.

The notation given above is the traditional notation for an expression which will be evaluated by the Lisp system. (+ 1 1) evalutes to 28.

The notation for an unevaluated expression is ’(+ 1 1). But, “unevaluated” isn’t quite the right word here. It will be more helpful to consider (+ 1 1) as evaluating to itself.

You can think of that single quotation mark like a switch which turns off evaluation. Once that quotation-mark switch is flipped, the following expression no longer means anything. It’s pure syntax. The result of evaluating it will depend on the environment in which it’s evaluated: if you redefine “+” to do subtraction, the result of evaluating (+ 1 1) in that environment will be 0.


(all (anything where the first word in operator position is treated by looking up, within a table, how to output it e.g. (:span (children)) becomes <span>children</span> (anything else gets rendered as normal text into a :p tag or something or something similar) (this s-expression is an example) )

Poetry Nozzle

This was an idea; now it’s just a name.

Computer Notes - Shortcuts

youtube-dl -F $URL shows the choices for video quality when downloading a video from $URL. youtube–dl -f $CHOICE $URL downloads the video at that quality. To automatically get the best quality, use youtube–dl -f best $URL.

macOS / OS X: open a minimized window: (1) Command + Tab until you get the app’s icon. (2) Release Tab; keep holding Command. (3) Hold Option. (4) Release Command and Option. From here.

Gimp: “Shift-q” is Quick Mask. While selecting, use quick mask to paint areas into or out of the selection, by painting in black or white. I would like to learn more about masking features…

HTML <code> tags are for code of any kind, including HTML tags. To mark up a keyboard command, use the <kbd> tag. (:h/t HTML Hell; that link also shows the proper way to mark up a “hamburger” menu icon.)

LaTeX text sizes, from biggest to smallest: \Huge, \huge, \LARGE, \Large, \large, \normalsize (default), \small, \footnotesize, \scriptsize, \tiny

To clear a suggestion from a Firefox text-entry area, highlight the suggestion, and type SHIFT-Del.


When working with nested loops in list comprehensions remember that the for clauses remain in the same order as in our original for loops. Trey Hunner

While == and != are equality operators, is and is not are identity operators.

Python’s is operator asks about the identity of an object: are the two objects on either side of the is operator actually the same exact object.

We’re not just asking are they equal, but are they stored in the same place in memory and in fact refer to the same exact object.


By default, Python’s == operator delegates to is. Meaning unless two variables point to the exact some object in memory, == will return False […] This is true by default… but many objects in Python overload the == operator to do much more useful things when we ask about equality.

Trey Hunner: Unique and Sentinel Values in Python
Derived classes may override methods of their base classes. Because methods have no special privileges when calling other methods of the same object, a method of a base class that calls another method defined in the same base class may end up calling a method of a derived class that overrides it. (For C++ programmers: all methods in Python are effectively virtual.)

Behind the scenes, the for statement calls iter() on the container object. The function returns an iterator object that defines the method next() which accesses elements in the container one at a time. When there are no more elements, next() raises a StopIteration exception which tells the for loop to terminate. You can call the next() method using the next() built-in function; this example shows how it all works


Having seen the mechanics behind the iterator protocol, it is easy to add iterator behavior to your classes. Define an iter() method which returns an object with a next() method. If the class defines next(), then iter() can just return self.

Adapted from Martin Heinz’s blog: In Python […] everything is exported from a module, unless it defines __all__:


def foo():

def bar():

__all__ = ["bar"]

If the above is written in, then my_module import * will only import bar, and not foo. Alternatively, if __all__ is defined as an empty list, that same import statement will raise an AttributeError.

Nonsense Dialogue

    Your skills --
    Your accumulated advancements --
    Have insufficient increasement!

    Upwardified are my upgrades,
    My many masteries --
    That is, my skills!

    Predictably, you are plusless,
    Listless, and lazy!
    You have! No! Skills!

Gifts From Prengubi


On the page of writing where I discovered Prengubi Cjiiiifgh, I found some strange stuff.

I keep these around in case anyone asks after the autism-related work on my resume.

  • echolalia (frequent repetition of a sound, word, or phrase)
  • trouble using or understanding pronouns
  • trouble using or understanding sentence (phrase) structures
  • irregular tone (e.g. atonality; use of rising tone (“uptalk”) at end of sentences which aren’t questions)
  • irregular articulation
  • hard to keep themselves to a certain volume (e.g. hard to use “inside voice”)

Dumb Arithmetic

You can divide 12 into 3rds or 4ths evenly. but if you take 1/3rd from 12 = 4 and add it to 12, you get 16, which you can’t evenly divide into 1/3rds (but you can into 4ths.) If you take 1/4th of 12 = 3 and add it to 12, you get 15, from which you can’t evenly divide into 4ths (but you can into 3rds.)

An Interesting Comment from “Meditations on Moloch”

(original post. August 17, 2014 at 9:43 pm)

Andrew says:

Gorbunova and co. have written a series of fascinating papers comparing cancer across species, with a focus primarily on rodents. Here are a couple of them:

Thoughts arising therefrom:

First: Naked mole rats get exceptional cancer protection from an interaction between unusually large hyaluronan molecules and p16, which provides a redundant pathway (in addition to the p27 pathway, which they share with most other mammals) for enforcing a minimum distance between cells. Blind mole rats, by contrast, get their cancer protection from p53 and Rb working with IFN-β to cause necrotic cell death when cells get too close. Eastern grey squirrels use yet another method. Beavers use telomere shortening, which is common among large mammals but not found in any of the long-lived small rodents.

In other words, there are many ways to get cancer protection. Add redundancy to one of any number of pathways, and you’ve multiplied your cancer protection many-fold.

Second: Mice, rats and voles suffer high mortality from starvation, predation and disease. They also have the feeblest cancer protections among rodents. By contrast, naked mole rats, blind mole rats, eastern grey squirrels and beavers have all found ways to ensure a reliable food supply and protect themselves from predators: Burrowing, jumping through the trees, building lodges, keeping food underground or under water. There’s a strong argument to be made that these things came before they gained additional cancer protections, and were the ultimate cause of the cancer protection.

Why? It’s because avoiding cancer only helps those who die of old age. For mice, rats and voles, the selective signal on an anti-cancer mutations gets lost in the noise of early death from many other causes. It’s only for already long-lived animals, protected from predation and starvation, that cancer prevention leads to more offspring for one individual versus another and allows an anti-cancer mutation to become fixed in a population.

In other words, whales probably avoid cancer because they live a long time.

Ratio of Author Blog Text to Blog Comment Text

Take the ratio of “post length:total comments length” forms a rough measure of “how many words of discussion does Joe Blogger provoke per post? per word of writing? per week?” Would also be worth measuring length of comment chains.

Assorted Websites

Post Office Valentines

Interested customers can write to these Post Offices for postmarks to keep or to share with friends. Enclose a stamped, addressed card or letter in another envelope or box labeled “Valentine re-mailing” and address it to the postmaster of one of the towns listed below. Please allow enough time for postmarking, re-mailing, and delivery.

USPS Website

Here are the towns with names that I like the most, out of about 35:

For Dog Eyes Only

Not in the dresser,
Nor on the couch.

Not in this jacket,
Nor in that pouch.

Not in the bucket,
And not on the chair.

Not in the cabinet.
Not over there.

I'm going stir-crazy:
Is it anywhere?


grep “Ryan” ./_site/*.html

Names of Accent / Diacritic Marks

Problem with Inform 7 “Release Website” Templates

[This has been moved to my Inform page.]

Bitwise Mask

Masking bits to 1

To turn certain bits on, the bitwise OR operation can be used, following the principle that Y OR 1 = 1 and Y OR 0 = Y. Therefore, to make sure a bit is on, OR can be used with a 1. To leave a bit unchanged, OR is used with a 0.

Example: Masking on the higher nibble (bits 4, 5, 6, 7) the lower nibble (bits 0, 1, 2, 3) unchanged.

        10010101   10100101
    OR  11110000   11110000
    =   11110101   11110101

Masking bits to 0

More often in practice bits are “masked off” (or masked to 0) than “masked on” (or masked to 1). When a bit is ANDed with a 0, the result is always 0, i.e. Y AND 0 = 0. To leave the other bits as they were originally, they can be ANDed with 1, since Y AND 1 = Y.

Example: Masking off the higher nibble (bits 4, 5, 6, 7) the lower nibble (bits 0, 1, 2, 3) unchanged.

        10010101   10100101
    AND 00001111   00001111
    =   00000101   00000101

Querying the status of a bit

It is possible to use bitmasks to easily check the state of individual bits regardless of the other bits. To do this, turning off all the other bits using the bitwise AND is done as discussed above and the value is compared with 1. If it is equal to 0, then the bit was off, but if the value is any other value, then the bit was on. What makes this convenient is that it is not necessary to figure out what the value actually is, just that it is not 0.

Example: Querying the status of the 4th bit

        10011101   10010101
    AND 00001000   00001000
    =   00001000   00000000

Wikipedia: Common bitmask functions


Quotes which are not selections from books I’ve read (for those, see here.)

I’ll give you another example of a lifestyle upgrade that does not cost a lot of money. If you go out to restaurants, choose a restaurant you think you’re really going to like. Go to that restaurant, not on the weekend, so say between Monday and Thursday. Go either early, preferably like right when they start for dinner service. Sit by yourself, and again, this is kind of a one-time investment. Go there for a week.

This is also stuff I picked up when I was writing The 4-Hour Chef, because I would go in with a little notebook and I would order a bunch of stuff, and I would take little notes and they’re like, “Who the fuck is this guy?” Right? Number one, the chef typically at that point is not going to be as loaded, not on booze, although that happens too. But on a like, 52 menus open at once, that’s not going to happen at 5:00 or 5:30, so they might take an interest in — the maitre d’ might take an interest in — you. Order all sorts of stuff to try and then tip like 40 percent.

Ramit Sethi: Mm-hmm.

Tim Ferriss: And do that three days in a row, and you are forever a VIP at that restaurant.

Ramit Sethi: Oh, wow. So I liked that little insight. The 40 percent’s not that surprising, but the three days in a row.

Tim Ferriss: Do a couple of days in a row, so people get to know you, you get to know them […] and like, you’re VIP for life., 2020-05-17 09:06

Quite commonly the manuscript’s initial scribe would provide notes to the rubricator in the form of annotations made in the margins of the text. Such notes were effectively indications to “rubricate here” or “add rubric” [… which is important because] a scribe’s annotations to the rubricator can be used along with codicology to establish a manuscript’s history, or provenance.

Rubrication, 2020-09-19T20:15:06-0700

The Baí Zé was encountered by the Yellow Emperor or Huáng Dì while he was on patrol in the east. Thereafter the creature dictated to Huáng Dì a guide to the forms and habits of all 11,520 types of supernatural creatures in the world, and how to overcome their hauntings and attacks. The emperor had this information written down in a book called the Bái Zé Tú (白泽图/白澤圖). This book no longer exists, but many fragments of it survive in other texts.

Bai Ze, 2020-09-18T13:02:15-0700

In much current usage of “experience,” references to structure and history are implied but not made explicit; instead, personal testimony of oppression replaces analysis, and this testimony comes to stand for the experience of the whole group. The fact of belonging to an identity group is taken as authority enough for one’s speech; the direct experience of a group or culture–that is, membership in it–becomes the only test of true knowledge.

The exclusionary implications of this are twofold: all those not of the group are denied even intellectual access to it, and those within the group whose experiences or interpretations do not conform to the established terms of identity must either suppress their views or drop out. An appeal to “experience” of this kind forecloses discussion and criticism and turns politics into a policing operation: the borders of identity are patrolled for signs of nonconformity; the test of membership in a group becomes less one’s willingness to endorse certain principles and engage in specific political actions, less one’s positioning in specific relationships of power, than one’s ability to use the prescribed languages that are taken as signs that one is inherently “of” the group. That all of this isn’t recognized as a highly political process that produces identities is troubling indeed, especially because it so closely mimics the politics of the powerful, naturalizing and deeming as discernably objective facts the prerequisites for inclusion in any group.

Joan Scott, “Multiculturalism and the Politics of Identity”, 1992 [post: 2020-08-29, 14:42]

It’s unhealthy enough for one person in the household to stare at Twitter until tiny pieces of their skull leak through their nose. From personal experience, I can tell you that it only gets trickier when both you and your girlfriend are stuck in the same black hole. And yet, I couldn’t be happier. There is no alternative that would be nearly as fulfilling. After baptizing myself in the media industry for a decade-long struggle, I honestly do not know if I can achieve authentic chemistry with someone who is not relentlessly committed to their digital sickness. I write a newsletter called On Posting, for Christ’s sake. Any hope of getting religion and seeing the bigger picture is long gone. That’s why Megan says she typically dates people who are already established in the media. Once your brain turns opaque and moldy from a banquet of algorithm-assigned doom, it’s literally impossible to communicate with anyone who hasn’t endured the same fate.

On Posting

Five of the six states in the former East Germany – with the exception of the city-state of Berlin – had lower per-capita productivity in 2018 than the West German state with the lowest per-capita productivity, Schleswig-Holstein

Pew Research Center

Jorge Castro, The Ability to Send a Plain Text Email…

You would be shocked at the amount of core contributors to Kubernetes that we routinely find aren’t subscribed to the main mailing list. Sending git formatted patches over email, are you kidding? Most of my open source collaborators aren’t even reading their emails lol.

You don’t send a mail to the list to propose something, you write an enhancement proposal and if you’re nice, you might mention it on a list, but all that activity happens in GitHub. And if you want a meaty discussion you hop onto Zoom and discuss it high bandwidth style with your SIG before moving on. You’re not going to find lengthy discussions about technical features on many of our mailing lists, you’ll find them in the GitHub issues, PR comments, and meeting transcripts.


Watch how Martin Wimpress does a live package update in Ubuntu MATE. That level of interaction with the audience isn’t just the future of OSS development, it’s the present. Our next kernel people, Debian maintainers, library maintainers, and everything inbetween are sitting in places like this and this is how they interact with themselves and their communities. There’s just too much awesome shit in the world for people to slow down to figure out emails and mailman. And if you think this is just about email, wait until you see how much coordination and awesome stuff is happening in Discord. Yep, this is about IRC too, all of it.

Jokes about national rivalry have diminished, for the simple reason that the unknown has diminished. After opening European borders, and harmonizing the economic and legal systems, we have a legible continent where countries can easily and freely compare notes. We don’t need to joke about who would run things best anymore, we can just go look at the COVID numbers.

[…] it reveals humor as a sort of “Romulan Neutral Zone” on the edge of the usual political Overton Window [covering] not just what is acceptable, but also what is currently contested.

[…] This zone consists of ideas which humor is effective at working its magic on. It alters or refutes our worldview with condensed bursts of hidden wisdom or absurdity. But they must be within our grasp to untangle. Humor’s range is subject to its own constraints, such as “Too Soon”, “That’s NOT Funny”, “I’m Going To Hell For Laughing” and “I Don’t Get It”. These are completely subjective limits, which are negotiated and renegotiated between the joke tellers and their audience. If you don’t believe me, take the joke about the 51 straws, and replace “Dutch” with “Jewish”.

But if you think that means the Jews rule over you, you’re refusing to see how these things actually work. What actually rules over you is people’s chronic and miscalibrated fear that you might not be kidding, which occurs in highly variable degrees. This might also be a good explanation for the common saying that if you want to tell people something they don’t want to hear, you need to make them laugh, or they’ll kill you for saying it. Good humor is a successful mental defense against thinking that is too rigid and dogmatic.

The case of Mark Meechan is highly illustrative. This is the Scot who was convicted of “grossly offensive behavior” for teaching his pug-dog to do a Nazi salute, upon hearing “Gas the Jews”. He has always claimed he did it purely to annoy his girlfriend. “Justice” in this case includes a court ruling that “context and intent” are officially irrelevant to the matter, an absolute bombshell in legal precedent. But that’s not the most absurd part. It’s the BBC documentary on the issue afterwards, in which one of the detractors jokingly asks his own cat if it too wants to “Gas the Jews,” before concluding no. By the logic of a British court, he is guilty of the same kind of punishable offense, and the video is the only proof necessary.

Laughing to Transgress, by Steven Wittens

As an example, Ibn Khaldun notes that Al-Masudi and other historians reported that Moses counted the Israelite army as 600,000 or more soldiers. Ibn Khaldun criticizes Al-Masudi for failing to take into account certain logistics, questioning whether Egypt and Syria could have possibly held such a large number of soldiers, or whether an army of that size would be able to march or fight as a unit. He notes that the whole available territory would have been too small for such a large army, and argues that if “it were in battle formation, it would extend” several times “beyond the field of vision.” He questions how two such parties could “fight with each other, or one battle formation gain the upper hand when one flank does not know what the other flank is doing”, and that a coordinated battle movement in such a large group “would hardly be possible”. He argues that the “situation in the present day testifies to the correctness of this statement” since the “past resembles the future more than one drop of water another”. He then compares it to the Persian Sasanian Empire, noting that it was far more vast than the Israelite Kingdom and yet the size of the military of the Sasanian Empire at the Battle of al-Qādisiyyah amounted to 120,000 troops at most (citing the 8th-century historian Sayf ibn Umar).

Wikipedia: Muqaddimah
Far in a wild, unknown to public view,
From youth to age a reverend hermit grew;
The moss his bed, the cave his humble cell,
His food the fruits, his drink the crystal well
Remote from man, with God he pass’d his days,
Prayer all his business—all his pleasure praise.
Thomas Parnell

Competing in its first Roboshow (a robot martial arts competition) is Atom, the 6’1" 400lb reigning champion. Atom, a new model transbot, is the first robot to allow its human companions to control it like a videogame character. It has served all three Cybermasters as a loyal servant, servant, protector, friend and even lover. The human who controls Atom now will be looking forward to showing off his new robot’s martial arts prowess; while he will be hoping not to get kicked too hard in the groin by the fully loaded six inch titanium-alloy shin-guards on his oppositional opponent. Atom has never taken a single blow to the nads during any of his past tournaments. With his human controller controlling his actions like a videogame, it will be difficult for anyone to penetrate Atom’s defenses enough to make contact with the groin.


If you are actually interested in the extension of liberty across the globe— if you are fighting for the freedom of the human race—then it is important to assess what that world actually looks like.

Start here: one in every five humans on this earth is a subject of the Communist Party of China. This Party believes that it is in an “intense, ideological struggle” for survival, and the ideological threats it faces explicitly includes ideas like “separation of powers,” “independent judiciaries,” “human rights,” “Western freedom,”free flow of information on the internet,“”civil society," “total marketization,” “economic liberalism,” and “freedom of the press.” The Party believes that by allowing free markets, free thoughts, and free association into China they would be destroying the source of their power, and with it their ability to lead China into the future. The future they imagine is great: Xi Jinping has described it as “the eventual demise of capitalism and the ultimate victory of socialism.” The central task of the Communist Party of China, he urges, is “building a socialism that is superior to capitalism, and laying the foundation for a future where we will win the initiative and have the dominant position.” Ever ambitious, the Communists even have a date by which they hope to have secured this bid for “the initiative:” 2049.

Tanner Greer

[…] it is conceivable that with a modicum of cleverness and foresight you could start building a system with today’s technology that could evolve smoothly as tomorrow’s technology develops.

The Lessons of Lucasfilm’s Habitat

The leaves fly down, the rain spits and the clouds flow like a dirty thaw before the wind, which whines and mews in the window cracks and swings before the wireless aerial with a dull tap against the sill; the House of Ussher is falling, and between now and Hogmanay, as the draughts lift the carpets, as slates shift on the roof and mice patter behind the wainscot, the ghosts, the wronged suitors of our lives, gather in the anterooms of the mind.

The Living Novel, by V. S. Pritchett. Quoted in “V. S. Pritchett”, Sunrise with Seamonsters, Paul Theroux.

The royal Navy was prohibited from ruling over [Diamond Rock, near Martinique], so the land was commissioned as a ship.

I don’t remember whether I have ever spoken to you about the feeling I have had for several years. Because society today is without a very strong religion, without a firm hierarchy of social classes, and people are afraid of the big organization in which they are just a little part, for them reading certain novels is a little like looking through the keyhole to learn what the neighbor is doing and thinking—does he have the same inferiority complex, the same vices, the same temptations? This is what they are looking for in the work of art. I think many more people today are insecure and are in search of themselves.

There are now so few literary works of the kind Anatole France wrote, for example, you know—very quiet and elegant and reassuring. On the contrary, what people today want are the most complex books, trying to go into every corner of human nature.

Georges Simenon, Paris Review of Books, “The Art of Fiction No. 9

I think the general consensus is that the Communist movement (50s and 60s) actually did a lot for gender equality, given that that was one of the explicit precepts of the new society. China was coming from way, way behind, though, so even if a huge amount of progress was made, it ain’t no UC Berkeley. But observing other “psuedo-Confucian” societies like Korea or Japan, it often seems like China’s actually comparatively relaxed about gender.

Years of living in China left me with the impression that women themselves have come a long way: there are a lot of “tough women” in China, and many of them are very independent minded. Sure, there’s also a lot of anxiety about being 26 and unmarried (the horror!), but at this point that anxiety comes as much or more from family pressure, the women themselves are often very “modern-minded”.

The men, on the other hand, are mostly still in the stone age. The goal of life is to amass money and power, and one of the first things you do when you’ve got that is get a mistress. Having pretty young things in the office is a must. One of the main perks of authority is that you can screw who you like. The typical university environment, for example, is absolutely disgusting, the male professors are shooting fish in a barrel.

And because political and social power is held by men, the government comes down hard on feminism. I always had a hard time getting my head around the way feminism is treated like a political sin, and is censored as such.


We do these things not because they are easy, but because we thought they would be easy.

Will Stedden

Do not follow in the footsteps of the sages. Seek what they sought.

Matsuo Bashō

Music is your own experience, your thoughts, your wisdom. If you don’t live it, it won’t come out of your horn.

Charlie Parker

these [wires] were usually smoked by being passed through the flame of a candle or lamp so that they would not shine and thus be seen.

Edgar Howard Penrose, Descriptive Catalogue of the Collection of Firearms in the Museum of Applied Science of Victoria (Melbourne: Trustees of the National Museums of Victoria, 1949), 70; plagiarizing, as pointed out here, Miller Christy, ‘Man-traps and Spring-Guns,’ The Windsor Magazine, Vol. 13, 1901, from Museum Victoria supplementary file 21734 – Arms – Spring Gun – Flintlock

Switching Pronouns and Proper Names

Suppose I have the sentence.

“Though he was rude today, Bob was not as rude as he had been yesterday.”

And I want to end up with

“Though Bob was rude today, he was not as rude as he had been yesterday.”

Assuming that there is always only one proper name in the sentence, and that both pronoun references are to the proper name, I want to:

The Promise: Part W

If you were transformed into a wooden cylinder,
transported to the highest point of your current location,
and dropped so that you rolled,

would you like where you ended up?


You’ve overlooked all the colors of flavor: all 16 million of them!

D, 2019-07-16

(To be precise, (162)3 = 256^3 = 16,777,216 colors, if we’re talking about RGB colors with two hex digits to specify each channel, e.g. FFAABB.)

There’s a connection here with wagon wheels.

Needs two hands free: (set a counter to 0, incrementing on each subsequent turn) “You grasp the red wagon wheel between your thumb and forefinger. With the other hand, you peel off its wax paper backing.

You pull back your lips, baring your teeth like a horse, and open a pinprick of space between your teeth.

After bringing the wagon wheel to your lips, you take a nibble fit for a fly."

Nothing feels different.

(return control) (after their next turn) (check the counter; it’s 1)

You catch sight of the clock on the other side of the platform.

It’s stopped!

/ Allow a couple turns of exploration (on turn 5)

“Partner, you look like you’re [italic]wheeling[roman]! You been hitting the durbz?”

An indigo cube is floating behind you, with its vertices at top, bottom, and midway along its height. One vertex points straight at you.

On each face of the cube, stenciled black capitals read “1 CUBIC FOOT.”

/ Wheeling? / Durbz? / What exactly did I just eat? / What the hell are you? / [Look at clock again]. -> Still stopped. / [Eat more of the red wagon wheel.]

“Durbz are durbz, no matter the dose,” Cubic Foot says, in a tone which indicates it has rehearsed this phrase.

Emacs Notes

Force User-Defined Keybinding to ALWAYS Be Defined

When I say “always”, I mean regardless of major mode, minor mode, phase of moon, etc. Major modes can be callous about overwriting user bindings, even those under the supposedly-reserved “C-c” prefix.

I’m 90% sure that Xah Lee has written about this. Probably other people, such as Steve Yegge, have as well. Reviewing others’ code will show me how to accomplish the task; editing and extending their code will make the resulting work my own; and the whole work will improve my Elisp programming.

Inventory Implementation

Consider writing functions which generate an inventory characteristic of a given NPC which can be run to produce their inventory when they are first created. Such functions could then be re-used to describe the possible kit for allied NPC types, such as when a player is searching for hirelings.

Some inventory contents, as well as slots on the body, could be integrated into dynamic descriptions of a character.

Dynamic Description

We could use this toy function to provide a basic textual description of a character.

(defn describe [char] (concat “This is a” (:sex char) " " (:race char) “. In its hands are” (right-hand-contents char) " and " (left-hand-contents char) “.”))

If we call this function on the data representation of a male bugbear carrying a crossbow and a torch, it would return “This is a male bugbear. In its hands are a crossbow and a torch (lit).” Underlined items are those which were chosen based on the bugbear’s data.

Observations Depend on the Observer

Description functions such as this one would need more complexity to serve a real game, but that can be handled in the future. What interests me most is the possibility of specializing a describe function so that the description of the observed entity depends on the observer’s powers of observation!

Here’s an example. Suppose there is an in-game sword which is curved in a distinctive style only used by Spaniards. Suppose further that this model of sword is recognizable as such by certain people: those with a Swordsmithing skill; those who are from the Spanish region where the technique originates; and those who have Diplomacy skills related to Spain. Then the description of the sword could be simply “sword” to those who do not have the knowledge, and “Spanish curved sword” to those who do have the knowledge.

2019-04-05: Since writing this note, I’ve learned Inform 7, a tool for creating interactive fiction in which it is simple and natural to vary text descriptions with the stats or characteristics of the observing entity. Agent-based simulations are also a natural fit for Inform, as long as one keeps the number of actors small, so I’m using it for some other things now too.

Interaction with Economy

If the above sword was looted, and the looter sold it at the market, should the economy program recognize it as a “sword” or as a “Spanish curved sword?”

Nowhere near implementation on this, so I can simply say for now that if the character knows the sword’s true nature, it can be sold for the specialty price. Otherwise it is sold as the generic equivalent (such as undifferentiated “earthenware” for a fine clay pot.)

The rule of shared information: :theory:

To the WHOLE group of characters who are present and whose players are present, the BEST knowledge of the scenario is communicated, as perceived by the character with the most aptitude for perceiving the scenario details in question. E.g. if a group is traveling with a character who has strong hearing, unless there is curently a cost to communication, such as in combat when talking costs AP or as in any tense scenario where noise or wrong moves could mean discovery, then the player is informed of the effects of their special hearing such that the whole group is aware of the information and can act as if the strong-hearing character has communicated it to them.

Item descriptions :implem:

An item’s description could have multiple levels. This would allow the character-accessible description of the item to vary depending on their perceptiveness.


(defun mk-human
  (assoc (six-scores 'basic) :name name)
  [name social-type]
  (assoc (six-scores social-type) :name name))


On every turn, a list of game actions is available to each character. The exact contents of the list change over time, and depend on character-specific factors such as:

Everything that a player chooses to do must ultimately be expressed in terms of game actions, and chosen in the game’s interface. The desire to “move over those rocks and attack the bandit” would be input as “_move_ to hex 1010, 1011, 1012, and then attack the human male bandit in hex 1013.” In that example, move and attack are the game actions which are then resolved.

Equipment Slots

When an item is equipped, that item takes up a particular one of the character’s equipment slot. Unequipping frees that slot up again. Some items have slots of their own, which the character (or others!) can access. For example, a belt can be equipped at one or both of the waist and shoulder slots. Each belt gives the character three belt-mount slots, allowing the belt to be used for its main purpose of stowing things for quick retrieval. In turn, a scabbard can be equipped to one of the new belt-mount slots, which, in return for taking up the belt-mount, gives the character a equipment slot specialized for stowing swords (perhaps of some particular type.)

Maximal Usage of Data Structures to Represent In-Game Concepts :implem:

not just in-game objects, but also things like spells (which represent in-world effects) e.g.
(defspell [caster-lvl]
    {:name "Fire Ray" :targets (min 10 (+ 1  caster-lvl))}) ; i.e. a MAX of 10, which would be how the "English interpreter" would describe it

English Interpreter :implem:unf:

For generation of human-facing documentation from regular data structures such as spells or items, it would be useful to have functions for converting basic lisp expressions into English.

I would call such a thing “Englisp.” That’s my idea, folks: don’t even think about stealing it, or I will put you in jail. Warning: not-quite-real code ahead.

(defun describe (form)
        (cdr form)
                (concat "the smallest of:" "\n- " (describe x for each x in the body)
                ("the caster's level"))))

(describe (min 1 caster-level))

In this case, caster-level is just a symbol that needs to be made user-readable in an Englishy way. Down the line, it could be evaluated in terms of the logged-in user’s player character, so that you could see immediately how many targets are reachable if you yourself were to cast the spell. This ties into some of my earlier thinking about a webpage for the Sneaking rules where the values used in the calculations would be dependent on what levle you chose in the sidebar “variable adjuster” for the page. The rules have examples built in, but unlike a paper rulebook, the examples can be shown to apply to your character RIGHT NOW.

Scope of Variable Names and Sequence of Execution in Inform “now”

To improve the mood of (character - an animal):
    if the mood of character is less than friendly, now the mood of the character is the mood after the mood of the character.

2019-11-05: I am not sure whether or not the statement “the mood after the mood of the character” wraps around. That is to say, I am not sure whether the above code would “improve” the character’s mood from the best one possible to the worst. I would hope it doesn’t do that. Will have to investigate.

The if statement above can be translated into pseudo-Clojure as follows:
(let [current-mood (:mood character)]
    (if (< current-mood friendly)
        (assoc :mood character (succ current-mood))))
        ;;assuming the moods have an interface sort of like Haskell Enum typeclass
        ;; 'set KEY in MAP to VAL' is spelled `assoc` in Clojure


“It’s dark outside, and I’m Spider-Man,” said Spider-Man. “I am here for those of you who have suffered from CRIME.”

“The person who crimed us is Stan Lee!”

“It can’t be,” lamented Spider-Man. His web-shooters flexed. His butt clenched. “It can’t be.”

But it was.

Take Yourself Into Battle

You’ve gotta take yourself into battle.

You’ve gotta do your sick moves – every last one, even if it kills you. But you can’t let it kill you, because you’ve gotta win. You’ve gotta


I don’t care how afraid you are, or how pissed your pants are, or how good you are at fighting in the gaseous-metal atmosphere of this planet: you’ve gotta do it anyway, you’ve g-o-t-t-a KILL THAT ELF. You’re gonna put on your elf-fighting suit and ride into battle, and if you retreat, so help me Space God, I will shoot you myself.

  1. The “false cycle” is my made-up, provisional name. There’s probably a real one.

  2. 5 pounds, in the form of 2 2.5-pound plates, is typically the smallest increment available for a barbell.

  3. The core of all “periodic” (i.e. non-linear) progression is to work up to a new maximum poundage, reset to something well below it, and work your way back up while trying to achieve higher reps on weights below your max. The 5-3-1 program is a good example.

  4. In Chinese linguistics, this term (natively 补语) refers to words which, aside from their normal usage, can also be suffixed to verbs (or VOs) to express the result of the verbal action. Some of them, when used this way, have the same meaning as when used on their own, e.g. 懂 means “understand”, and 看懂 means “look-understand”, i.e. “understand by reading/watching”. Other words take on new meanings when used as complements: 起来, which on its own is a verb meaning “rise up”, means “begin doing” when used as a complement. Don’t confuse the term “complement” here with the same word from the broader study of syntax; there, it usually means “argument selected by a head.” (I won’t link the Wikipedia page here: as of 2019-11-20, it’s not well-organized, and gives space to “traditional grammarianism” alongside a mangled, wishy-washy stab at linguistics.)

  5. Roughly: letter which comes first alphabetically gets the tone mark, except for a few regular exceptions, such as the vowel combo in “xiōng”.

  6. What I don’t yet understand is why some poems are centered without having to do anything else, e.g. “Esther” is centered as I would expect. Whether centering does what it “ought” to do (pshaw!) seems to depend on whether an HTML tag comes before the <pre class="poem"> element.

  7. This language might be either general-purpose or “domain-specific;” it might be self-hosting or it might be a dialect inside another language. And isn’t a programming library just a collection of new words in a familiar language? Ones with commentary, and notes on usage, and perfectly explicit definitions?

  8. Setting aside questions of integers vs floating-point numbers and other such things.