Ideas

by . (updated

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

Gift Routine

2021-03-17T14:11:44-0700 updated 2020-12-26T12:30:42-0800

Suppose I want to give a gift to person P. I'd like to be able to call up the history of my interactions with P, in as many channels as possible. I'd also like to be simultaneously call up my current finances, including an assessment of whether I have any store-specific credits which would suit their interests. (For instance, I've got $50 of credit for Lululemon fitness wear, which I'm never going to use on myself, but which I'd want the computer to show me when planning a gift for a girlfriend or female friend.)

2021-03-17T14:11:44-0700 I don't really need the ability to analyze store specific shopping credits and my budget while planning gifts, but I am building my own contacts database.

Poetic Meter Analyzer

2020-12-17T14:58:45-0800

Does this exist?

Type in words. For each line you type, this program will do its best to categorize the line by its pattern of stressed and unstressed syllables. It does this by retrieving the stress pattern or patterns for each word from an ordinary dictionary (maybe several dictionaries), and comparing all possible paths through the line to determine, for words with multiple possible stress patterns, which is most likely to be right. Or, which would lead to what patterns.

[Aside: run spell checkr before doing analysis.]

Oh, typing is getting me nowhere. Examles of desired behavior will do better.

[2020-12-26 FYI I've got rsi. hands don't do perfectly with typing anymore; please gracefully ignore typos.]


Let s mean weak. Let S mean strong.

Ex1 sSsSsSsSsS -> Iambic Pentameter (I5)
Ex2 SssSsSsSsS -> I5 with inversion at 1, notated ":invert [1]"
Ex3 SsSsSsSsSs -> Trochaic Pentameter (T5)

The program might assign a low probability to Ex2 actually being "anapestic something-ameter with very broken anapests and a leading strong syllable", as long as it still judges "I5 with inversion 1" most likely.

Mesuring whether something is I5 or near it can be implemented in terms of penalties for deviation from the expected form, but no idea yet what to do about meter that doesn't fit a strict pattern, or which is made up of multiple kinds of foot.

2020-12-26T12:58:46-0800

Beyond meter checkeres we can also have structure checkrs.

Sir Fedivere

I'd watch a food review show where the host apes Bedivere as portrayed in Monty Python and the Holy Grail, making up ludicrous explanations for everything and having to open and close the little door on his helmet for each bite.

It would be called "Sir Fedivere" -- or perhaps, if the other knights got involved, "The Bites of the Round Table."

An Integer that Only Decreases

Is it correct to say that a type system needs to implement dependent types if it is to allow the expression of an integer that can only decrease?

The goal would be to define a type R Integer such that a function R Integer -> R Integer would only compile if the Integer inside the output value was equal or less to the one inside the input.

Australians

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

Ubasute

2020-08-06T12:15:30-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]

https://en.wikipedia.org/wiki/Ubasute

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/crossover 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

https://en.wikipedia.org/wiki/Sexagenary_cycle

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:

  • the Ten Stems and the Twelve Branches
  • the 60-element cycle formed from pairing Stems and Branches by the traditional method
  • the 60-element "false cycle"1, formed by all the pairs not in the traditional cycle
  • given a number indicating 1 thru 60 as the starting year, and a number +/-N, return the Stem and Branch for the year N years after/before the starting year
  • given a Gregorian year, return its Stem and Branch according to the traditional calendar
  • given a Stem and Branch, return the most recent Gregorian year, or all of them (up to an optional stopping point), which were that Stem and Branch on the traditional calendar

Chinese Document Search

2020-05-25

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 ludwig.com); 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

2020-08-05T15:26:00-0700

Software, tools, and services. Search keyword: "uses this."

  • writing and editing: GNU Emacs
  • operating system: macOS (laptop); Debian (server - but I'm not picky about my GNU/Linux)
  • memory training: Anki (with several extensions, including AnkiConnect for programmatic interaction, and Low Key Anki to present just two choices on each review and adjust easing factors, and True Retention by Card Maturity to ensure my reviews are having an effect.)
  • keyboard: Kinesis Advantage2
  • mouse: Anker Vertical Ergonomic Mouse
  • headset: an unknown brand with around-ear earpieces and a taped-up frame a pair of "1More"-brand Bluetooth earbuds

"Action" Drew Jackson Text Message Extraction

2020-10-25T12:36:00-0700

Items originating in messages to Drew, archived here:

  • Cyberatops

  • GI Joestar

  • Cromartie High School Host Club

  • This, from the Deng Yujiao incident:

    Deng Guida then used a wad of ¥4000 cash to hit her face while yelling, "Didn't you want money? I bet you have not seen any money before. How much money do you want? Just say it. Believe me or not, I shall smack you to death with money."

    Deng Yujiao retorted, "Yes, I have never seen any money before. If you have the guts, today you smack me to death."

    Deng Guida then replied, "I am going to smack you to death with money. I'm going to get a truckload of money to squash you to death."

  • And this:

    When the Buddha accepted Anāthapindika's invitation to visit Sāvatthi, the latter, seeking a suitable place for the Buddha's residence, discovered this park belonging to Jetakumāra (MA.i.471 says it was in the south of Sāvatthi). When he asked to be allowed to buy it, Jeta's reply was: "Not even if you could cover the whole place with money."

  • The 17th-century Chinese warlord Zhang Xianzhong led a peasant revolt, conquered Sichuan, killed an unknown-but-large number of people, and (supposedly) erected a stele inscribed with this poem:

      天生万物以养人
      人无一善以报天
      杀杀杀杀杀杀杀
    

    Heaven brings forth innumerable things to nurture man Man has not one good thing with which to repay Heaven Kill kill kill kill kill kill kill

Workout Weight Progression

2019-11-20

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:

(let
    ((weights (range 45 50 ... 225))
    (reps '(1 2 3 4 5))
    (result))
        (dolist (weight weights)
            (dolist (rep reps)
                (let ((poundage (* weight rep)))
                    (push poundage result))))
    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

2019-11-20 updated 2020-10-01T00:05:02-0700

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.

When [Linguary](/linguary) has evolved far enough for custom interfaces, I'll return to questions like these.

Syllables with Few Characters

2020-11-06T15:34:55-0800 [Moved to The Rarest Mandarin Syllables.]

Which Mandarin Romanization Notation Should I Use?

2020-03-12

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

Pro:

  • only need ASCII to search (except for lü, but that can be typed lv), which is helpful for build-process mechanisms and scripts like spell check, as well as fewer edge cases for implementation of projects such as full-text search
  • if I ever switch to doing it the other way, I can more easily replace text like gei3 into gěi than the other way around (and the procedure for determining which letter takes the tone accent mark is a straightforward algorithm5).

Con:

  • not standard in the academic literature or in the private sector
  • not part of PRC or Taiwan standards for Romanization (though numbers do show up in the Jyutping, the most widely-used standard for Cantonese: for example, 粤拼 "Jyutping" itself is Romanized in Jyutping as Jyut6ping3)

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.

Terrible UI Design in the MacOS Chinese Input Method

2019-11-14

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.

  • 卞 bian4"hurried": does not show up in any words on [MDBG](https://www.mdbg.net/chinese/dictionary?wdqb=c%3A%2A%E5%8D%9E%2A&wdrst=0]
  • 惢 suo3: not even in MDBG's dictionary at all. I believe MDBG is backed by CC-CEDICT, like most Chinese dictionary services. Suo3 shows up in Pleco but without any definition or other information; extended dictionary options may give me some information.
  • 勹 bao1: another Kangxi radical.
  • 彳 chi4: known as 双人旁 shuang1ren2pang2, "two-person radical", by analogy with the radical form of 人 "person" called 单人旁 dan1ren2pang2 "one person radical" which is like chi4 without the upper falling stroke. I understand why Kangxi radicals have pronounceable names, but has chi4 ever been used as a character outside the radical lists?
  • 亍 chu4:not a Kangxi radical. What's the origin of this one? Was it ever a shorthand version of 行? It's similar to 示.
  • 2020-09-25T14:58:24-0700 AHA!! 彳 and 亍 are used together in the word 彳亍, a literary term meaning "amble; stroll." Note that the character 行, which includes "walk, move" among its many meanings, looks just like 彳 and 亍 put together.
  • 卢矢 lu2shi3: "black arrow". Unlike previous entries on this list, these characters would likely be understood by moderns; I just wanted to make a note of them since neither lu2 nor shi3 are the words used for "black" and "arrow" in modern Chinese. (The corresponding characters would be 黑 hei1 and 箭 jian4.) (2020-09-11T19:11:16-0700: Student's Dictionary of Classical Chinese informs me that 矢 is the earlier character, and indicates arrows made of bamboo, while 箭 came later, and refers to arrows made of wood.)
  • 雫: not even the pronunciation is in MDBG. This character occurs in the title of a Taiwanese comic series, Drops of God, so I know it can mean "drop" (of liquid).
  • 足: MDBG claims that ju4 "excessive" is an alternate reading for this character, normally pronounced zu2 with meanings including "foot" and "sufficient." I can't find a reference to the ju4/"excessive" reading anywhere, even in the quite-comprehensive Student's Dictionary of Classical Chinese.

Notable Chinese Characters

2020-09-15T18:20:20-0700

Just a dumping ground for characters that are peculiar.

  • 嬲 niao3 and 嫐 nao3, both meaning "tease, disturb". The first is a woman 女 between two men 男; the second, a man between two women.
  • (2020-09-06, 18:39) 表现日语和汉语之间的区别的例语: 侘寂。日语读音为“wabisabi”,中文呢?可不是那样了。
  • 旮旯

New Chinese Name

2020-02-18

Taking notes on characters suitable for creating a new Chinese name. The one I have doesn't sound very Chinese, having been bestowed somewhat haphazardly by otherwise-excellent teachers of introductory Chinese.

Surname list with well over 250 entries, including two-character ones: https://www.diyifanwen.com/tool/baijiaxing/

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

  • 暲 zhang1 sunrise; bright
  • 荆 jing1
  • 峥 zheng1 lofty, noble; steep, high, perilous 峥嵘
  • 晸 zhen3,zheng3 appearance of the sun
  • 绛 jiang4 purple-red

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

  • 狇 mu4 no meaning listed (NML)
  • 莯 mu4 NML
  • 睦 mu4 friendly amiable peaceful
  • 渺 miao3 endlessly long, boundless, vast
  • 淼 miao3 a vast expanse of water
  • 玅 miao4 mysterious, subtle, exquisite

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

  • 日子旁,右边是伟的右边 wěi "the bright shining of the sun" (apparently not typeable on mac)

What's Up With Gei

2020-02-24T11:29:29-0800 updated 2020-05-14T13:31:00-0700

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.

While translating "Iron Bull and Sick Duck", I found some examples of this phenomenon to copy into here. TODO.

2020-05-14

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 updated 2020-12-23T22:18:52-0800

Website "itches" I want to scratch.

  • 2020-12-23T22:18:52-0800 follow gwern's example Book reviews are sorted by star, and sorted by length of review within each star level, under the assumption that longer reviews are of more interest to readers.
  • 2020-12-21T18:40:36-0800 design and CSS to study, steal https://ethanmarcotte.com/about/#start https://manazir.org/newsletter
  • 2020-12-21T12:16:49-0800 use granary.io to provide an RSS feed, quick and easy
  • 2020-12-02T22:34:24-0800 https://thelounge.chat/docs/usage
  • 2020-10-25T23:41:48-0700: https://instant.page/
  • 2020-10-01T13:17:45-0700 SUPREMELY UNIMPORTANT Add XML friend network to at least one link, for funsies https://gmpg.org/xfn/join
  • 2020-09-24T17:20:46-0700 glean from style, cover catalog at https://deeden.co.uk/reading/2008/
  • 2020-09-21T15:18:51-0700 document submission/creation times for Sith Lord Challenge entries
  • 2020-09-21T13:03:00-0700 Turn "full" (vs "truncated") designation on Favorite Poems into structured data, for use in template that positions small-font full/truncated over the top-right of a blockquote :^O oh yeah oh yeah
  • 2020-09-20T20:14:53-0700 Glean tips on design, color scheme, and layout from Ru Singh's blog.
  • 2020-09-18T16:24:11-0700 - authenticate with a web app while serving media from a static file server
  • find somewhere to use Bennett Feely's CSS gradients
  • make my Arduino blink when the site gets an HTTP request, a la this project
  • (2020-09-05T13:47:48-0700) Make names of individual SLC Lords into h3s with a class/style that makes them stand out
  • Fix the issue of P tags adding additional margin inside LI tags (example: the Links entry for "Chinese Text Project")
  • Try ripping off some mobile design from Plastic Bag
  • Borrow the menu which changes at small screen sizes, from Umvirate
  • Add template: "share this post" with permalink URL (a la Tantek, Derek Sivers)
  • Change "WIP" class to be regular text against a red-shaded callout, since red text may be illegible for many against my background color
  • DON'T DO THIS: This is a solved problem; the right solution is not to waste time solving it myself, but to finally migrate to a proper CMS or application server, which will handle this and a hundred other fiddly details for me. [for webpages generated from other pages' data, with no corresponding source document: rewrite build script to only regenerate these if the underlying data has changed.]
  • experiment with making the size of blog links relative to each entry's wordcount. Some cutoffs to try: 25 or fewer words; 26-100 words; 101-250 words; 251-500 words; 501-1000 words; 1001-2500 words; 2501-5000 words, 5000-10000 words; 10001 or more words. [Create a distribution of my post lengths to find the 5 20%-wide clumps.]
  • add rel=canonical links to all pages. make sure those are HTTPS links, not HTTP ones. follow the guide stored in docs folder.
  • OUTDATED build website on a build server; be able to trigger rebuilds by posting to a certain endpoint (and/or with a long-running process watching source files and starting a rebuild when sources change)
  • add p-summary class to appropriate paragraphs, typically some or all of the intro section
  • (2020-03-24) Use the resources at these links to implement responsive, lazy-loading images https://responsivebreakpoints.com/ https://css-tricks.com/tips-for-rolling-your-own-lazy-loading/
  • (2020-03-22) I finally found a solution for always centering poems: they need to be wrapped in <div class="center">.6 However, if I do this, when the article bodies are copied to the generated Poems index, they remain centered, which makes them look weirdly out of line with that page's headings and timestamps. I want to keep poems left-aligned on the index while centering them on their own pages. One solution would be for the centering div to be applied in a template only used for individual-poem pages, but Hakyll makes that more work than it should be. I think I'll suffer through off-center individual poems, and deal with this once my rendering/templating is saner.
  • turn Glossary/Books word lists into HTML definition lists, and experiment with CSS
  • once Glossary itself is published, turn Books word lists into just words, linked to full in the Glossary
  • standardize on an HTML structure (and corresponding CSS) for representing Chinese lexemes in running text (e.g. 朋友 peng2you3 "friend")
  • in posts.py, log a warning if bodytext.line contains "(www". That string is almost certainly the beginning of the URL in a Markdown link; such a link should have the http:// protocol at its front, as without the protocol Hakyll will render that link relative to maxwelljoslyn.com.
  • add a "shop" where you can purchase dubious services with the world's strongest currency, Hills of Beans
  • add a calendar. v1: include holidays I care about, like Old Year's Eve.
  • automatically add height and width annotations to each image, allowing browser to speed up HTML rendering by laying out the page before images are fully downloaded.
    • service/product/tool: Emfasten by thume.ca?
    • search posts for img tags matching a regex for "doesn't have height and width attributes". (something like "move backward through the file, and if you find then record the region from that point until you find " .... luckily images can't be nested)
    • build a map :: Post -> [Img]
    • use ImageMagick (or just stat?) to nab image size
    • write the image tag back to its original location
  • write post-upload script to do WebMentions and other stuff with on-site URLs
    • use Selectomax (sp?), the faster-than-beautiful-soup Python HTML library, to extract URLS, anchor tags, links
    • feed all of them to something like webmention-tools for discovery and sending
    • HTTP GET all of them to see they're all there (want to never again have the problem I had with broken Ryan Quest images)
  • make Books into a collection following the Poems model
  • OUTDATED write Emacs function/command to insert link with my choice of mf2 classes
  • DONE 2020-10-01T00:02:26-0700 set Micropub server's default post creation time to be in Pacific
  • DONE is my word-count program accidentally double-counting the texts of my poems, by including both /poems/index and each individual poem page? Answer: no.
  • DONE create template fragment tag that inserts my email with a mailto link (with optional parameter for mailto "?subject" attribute)
  • DONE (with all the ones that matter) redirect the handful of permalink URLs I messed up when I switched from /blog/yyyy/mm/dd/X to /notes/yyyy/mm/dd/X (see email). Effect: just tidying up. April 2020: redirected the old note URL sent to Chris Aldrich about his formatting error, and the blog post link I sent to Tyler Sullivan.
  • DONE 2020-04-07 improve differentation of H2 and H3 tags
  • DONE reverse my Books page so that the newest entries are at the top
  • ALL DONE (see here) make Poems into an indie "collection"
  • (DONE '(time 2019 03 ??)) add comment support for non-IndieWeb people by integrating Comment Parade (possibly with Quill as the authoring interface), a la this example from Kicks Condor

Resources for Web Goblins

Web Goblins!

  • anime.js
  • this video: Mary Live codes a Javascript Game from Scratch https://www.youtube.com/watch?v=hbKN-9o5_Z0

Videogame Idea

2019-12-05

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

2019-11-07

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.

2020-03-06T10:08:25-0800

(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) )

Computer Notes - Shortcuts

2020-03-14T15:14:00-0700 updated 2020-10-27T14:10:22-0700

  • If your browser is using a lot of RAM, it may be that you have visited a lot of websites which have silently installed service workers (programs which make websites fully or partially usable offline.) You can see whether there are service workers installed in Firefox by visiting about:debugging#/runtime/this-firefox

[not sure if this is right] Make website backups more rsync-friendly by zipping up the files beforehand. It will take less time to sync one file than thousands because you have to stat() the file system for each file. And don't forget the "archive file ordering" trick, courtesy of Gwern.

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.

macOS / OS X: F1 and F2 increase and decrease the brightness of your screen -- but there's a hidden shortcut, Option-Shift-F1/F2, which lets you fine-tune the brightness in increments 1/10 as large as the normal shortcut.

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.

Python:

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.) https://docs.python.org/3/tutorial/classes.html#inheritance
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.

https://docs.python.org/3/tutorial/classes.html#iterators

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

# my_module.py

def foo():
    pass

def bar():
    pass

__all__ = ["bar"]

If the above is written in my_module.py, 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

2020-02-23T16:14:39-0700

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

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

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

Gifts From Prengubi

(2019-11-20)

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

  • The Weedler's Promise
  • The Friendler
  • The Seedler, the Feedler, the Deedler
  • Pheasant Peasant
  • Living Gold
  • Sumweyer Ells (home of the sexy fox people; "definitely" not related to the home of the Khajiit)
  • Do people skin the sexy fox people to create the highest-quality fursuits? Yes.

Language-Related Symptoms of Autism

2020-04-07T12:55:00-0700

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

Aug 5, 2020 3:26pm PDT

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 can't evenly divide into 3rds (but can into 4ths.) If you take 1/4th of 12 (= 3) and add it to 12, you get 15, which can't evenly divide into 4ths (but can into 3rds.)

Does this point at anything interesting, or am I just a dingus?

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.

Post Office Valentines

2020-03-06

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:

  • Bliss, ID 83314
  • Bliss, NY 14024
  • Darling, MS 38623
  • Deary, ID 83823
  • Eros, LA 71238
  • Honey Brook, PA 19344
  • Honey Creek, WI 53138
  • Honey Grove, PA 17035
  • Honey Grove, TX 75446
  • Honeyville, UT 84314
  • Juliette, GA 31046
  • Kissimmee, FL 34744
  • Lovejoy, GA 30250
  • Lovejoy, IL 62059
  • Lovelady, TX 75851
  • Loveland, CO 80538
  • Loveland, OH 45140
  • Lovely, KY 41231
  • Loveville, MD 20656
  • Loving, NM 88256
  • Loving, TX 76460
  • Romance, AR 72136
  • Romeo, CO 81148
  • Romeo, MI 48065
  • Sugar City, CO 81076
  • Sugar City, ID 83448
  • Valentine, NE 69201
  • Valentine, TX 79854
  • Valentines, VA 23887
  • Venus, FL 33960
  • Venus, PA 16364
  • Venus, TX 76084

For Dog Eyes Only

2020-03-05

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?

Names of Accent / Diacritic Marks

  • breve: ă (NOT the pinyin 3rd tone)
  • hacek: ǎ (THIS is used to mark pinyin 3rd tone; pronounced "hachek" because it's a Polish word)
  • circumflex: â
  • grave: à
  • acute: á
  • oganek: ą
  • macron: ā
  • diaeresis: ä (often called by its German name, "umlaut")

Problem with Inform 7 "Release Website" Templates

2020-08-05T18:23:00-0700 updated 2020-09-19T11:22:17-0700

[This has been moved to my Inform page.]

Quotations

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

Dali the faux-aristocratic jester, an embodiment of irony, full of scorn, his politics utterly subjugated to his aesthetics, and to his sense of humour.

2021-03-12T12:21:45-0800

People are taking the piss out of you everyday. They butt into your life, take a cheap shot at you and then disappear. They leer at you from tall buildings and make you feel small. They make flippant comments from buses that imply you’re not sexy enough and that all the fun is happening somewhere else. They are on TV making your girlfriend feel inadequate. They have access to the most sophisticated technology the world has ever seen and they bully you with it. They are The Advertisers and they are laughing at you.

Banksy

Yeah yeah, Banksy soooo edgy. I get it. Who cares who said it? Focus on the words.

Ours is a collaboration in the truest sense. I deliver page after astonishing page of incendiary satire, and Todd’s garish drawings make a serviceable distraction for the illiterate.

Desmond Devlin making fun of Tom Richmond

It is useless to try to hide these things. Any site done by one person is going to be in some deal eccentric and reflect the ego and cultural limitations of the creator. It is liable to the sort of blunders only an individual can make; because if you had had another mind riding shotgun with you you wouldn't have gotten so far lost or missed that turn. A dictionary written by one person hangs the maker's mind naked in public, exposed in all its intellectual flab and moles. When you do something vast and complex with no formal training, you know you're going to be wrong a lot. The anecdote of Samuel Johnson and the woman at a party gets it right. She asked him how he could have botched some definition, and he answered, "Ignorance, Madam, pure ignorance."

The Sciolist, editor of Etymology Online

When somebody congratulates Amazon on a good quarter, I say thank you. But what I'm thinking to myself is— those quarterly results were actually pretty much fully baked about 3 years ago. Today I'm working on a quarter that is going to happen in 2020. Not next quarter. Next quarter for all practical purposes is done already and it has probably been done for a couple of years.

Jeff "Big Beezy" Bezos, ca. 2017

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 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.

[...] 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.

The Tim Ferriss Show, accessed 2020-05-17T09:06-0700

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.

Wikipedia - Rubrication, via Gwern Branwen's rubrication gallery, 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.

(https://www.gwern.net/GPT-3#poetry)

2020-07-12T14:04:44-0700

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

2020-06-23

[...] 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

2020-05-21T19:14:28-0700

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.

2020-02-11T09:24:52-0800

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

https://en.wikipedia.org/wiki/Stone_frigate

2020-03-27T17:05:20-0700

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"

2020-03-27T15:20:33-0700

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.

Girzel

2020-03-25T19:04:46-0700

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

Will Stedden

2020-02-29T12:11:47-0800

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

Matsuo Bashō

2020-02-09T21:40:56-0800

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

2020-02-08

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

2020-06-12

(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:

http://onlinelibrary.wiley.com/doi/10.1111/j.1474-9726.2008.00431.x/full

http://link.springer.com/article/10.1007/s11357-008-9053-4/fulltext.html

http://www.nature.com/nature/journal/v499/n7458/abs/nature12234.html

http://www.pnas.org/content/109/47/19392.full

http://www.nature.com/nrg/journal/v15/n8/full/nrg3728.html

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.

The Promise: Part W

2019-10-15

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?

Flavorgame

2019-07-16

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

D

To be precise, (16^2)^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. The following code is pseudocode for Inform 7.

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 top and bottom chompers. 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.

Scattered D&D Notes from Old Website

everything from here to Spiderman and Elf is early 2018, or earlier

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.

Creating Player Characters

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

Actions

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:

  • skills
  • ability scores
  • special abilities
  • class
  • whether or not character is in combat
  • whether or not in melee

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)
    (case
        (cdr form)
            ('min)
                (concat "the smallest of:" "\n- " (describe x for each x in the body)
            ('caster-level)
                ("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. Unlike a paper rulebook, examples in a live-updating digital game can add a section on how the rules apply to your character AS OF RIGHT NOW.

Scope of Variable Names and Sequence of Execution in Inform "now"

2019-11-05

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.

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

These are from late fall 2018 or thereabouts.

"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 citizens of New York were distraught. "The person who crimed us is Stan Lee!"

"It can't be," said 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

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. 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.
  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.