Custom spans in Org mode

Org mode's HTML export lets you use #+BEGIN_... and #+END_... blocks for custom <div> classes, but what about custom <span> classes? There are some ways to do it, but they all move the text out of the normal document flow, which makes reading the source difficult. Instead, you can use org-add-link-type, usually a way to register custom link schemes. Org links are inline and quite readable, and there is a notion of a link that isn't clickable, so it's not too much semantic abuse.

(defun jw/html-escape-attribute (value)
  "Entity-escape VALUE and wrap it in quotes."
  ;; "Escaping a string... consists of replacing any occurrences of
  ;; the "&" character by the string "&amp;", any occurrences of the
  ;; U+00A0 NO-BREAK SPACE character by the string "&nbsp;", and, if
  ;; the algorithm was invoked in the attribute mode, any occurrences
  ;; of the """ character by the string "&quot;"..."
  (let* ((value (replace-regexp-in-string "&" "&amp;" value))
         (value (replace-regexp-in-string "\u00a0" "&nbsp;" value))
         (value (replace-regexp-in-string "\"" "&quot;" value)))

(eval-after-load "org"
    "span" #'ignore ; not an 'openable' link
    #'(lambda (class desc format)
        (pcase format
          (`html (format "<span class=\"%s\">%s</span>"
                         (jw/html-escape-attribute class)
                         (or desc "")))
          (_ (or desc ""))))))

Now you can type links such as:

Check out this [[span:special][text block]].

Which generates HTML output like:

<p>Check out this <span class="special">text block</span>.</p>

Kirschblütenfest - Garten der Welt, 2015

Assorted dumplings in an outdoor kitchen Blossoming tree Blossoming tree, closer view of branches Blossom, close-up

don't go crazy save the world

God’s plan to suicide himself could not work, though, as long as He existed as a unified entity outside of space-time and matter. Seeking to nullify His oneness so that He could be delivered into nothingness, he shattered Himself—Big Bang-like—into the time-bound fragments of the universe, that is, all those objects and organisms that have been accumulating here and there for billions of years. In Mainländer’s philosophy, “God knew that he could change from a state of super-reality into non-being only through the development of a real world of multiformity.” Employing this strategy, He excluded Himself from being. “God is dead,” wrote Mainländer, “and His death was the life of the world.” Once the great individuation had been initiated, the momentum of its creator’s self-annihilation would continue until everything became exhausted by its own existence

Thomas Ligotti, The Conspiracy Against the Human Race (reviewing Phillip Mainländer's Die Philosophie der Erlösung

A screenshot from the videogame Baroque; the mute protagonist and a young woman named the Absolute God are embracing.

A different camera angle of the embrace.

The Archangel, another character in the game, screaming.

The Archangel being engulfed in light.

"If you have gone crazy, then so will I. Give me back my pain, my suffering!"

"God knows no pain! Her pain is being cultivated as Littles in the ampules."

"Those who know not pain cannot control themselves!"

Baroque (Sting 1998, Sting / Atlus 2008)

Social justice as a first-contact policy

(And also, one of the few uses of first contact as a believable catalyst for introspection.)

“They’re not algae like the stuff you get on a pond back home. They’re protozoa, as far as I can tell from the samples we did get, single-celled organisms. But they’re more than that, they’re self-assembling into something bigger. Into a higher species. Like, you know, how an ant colony or a swarm of bees does. We need to get a linguist in, that’s the protocol. Nothing about them without them, isn’t that how you put it?”

Min clicked her tongue, frowned at her across the desk. “Bees are pretty amazing things,” she admitted. “But, you know, they don’t actually talk to people.”

“It wasn’t actually bees, that was a goddamn analogy.” Gita crossed her arms, faced Min down. “We’re doing this properly, or not at all.”

Sarah L. Byrne, “Tears of the Gods,” The Future Fire 31

Homo Fabber

Almost all the artifacts that we value as a society were made by or at the the order of men. But behind every one is an invisible infrastructure of labour — primarily caregiving, in its various aspects — that is mostly performed by women... The cultural primacy of making, especially in tech culture — that it is intrinsically superior to not-making, to repair, analysis, and especially caregiving — is informed by the gendered history of who made things, and in particular, who made things that were shared with the world, not merely for hearth and home.


Describing oneself as a maker — regardless of what one actually or mostly does — is a way of accruing to oneself the gendered, capitalist benefits of being a person who makes products.

Deb Chandra, Metafoundry 15: Scribbled Leatherjackets

We live in a world where all our shit is constantly falling apart and our response is basically just to work as fast as we can building new shit that will fall apart.

See also: Whoops, our phone that was supposed to push back against the cycle of obsolescence turns out to live less than a year, because we thought we could buy wholesale into lies about "social entrepreneurship" when that can't actually be a thing especially when you chain yourself to the same garbage yoke as the industry you're trying to stand apart from.

Lavie Tidhar, 'The School'

My earliest memory is of white men in white coats holding clipboards, examining me. They measured my skull and prodded me with thick pink fingers and made careful notes. There was a war coming, they kept saying, and we had to be prepared.

Because of aliens.

# [...]

Humans are the best possible life form and white humans are the best possible humans and, also, we have a manifest destiny and the universe is our heritage.

This is known as the John W. Campbell Axiom.

Lavie Tidhar, The School ("The Story They Wouldn’t Publish")

This story — particularly my second excerpt — has been floating back into my mind a lot lately when I see nerds discussing Orion.

Python and GitHub

But here's the kicker for me: A DVCS repo is a social network, so it matters in a functional way what everyone else is using. Guido Van Rossum

Hrm, let's try that again, but with actual historical perspective:

But here's the kicker for me: A DVCS repo is a social network, so it matters [that we choose a network with a long and storied history of exclusionary bullshit]. Guido Van Rossum

I mean, it's not what he "said." But it is what he said.

(Follow-up question: If the software that itself provides the foundational infrastructure for a huge percentage of the web (and a significant percentage of the rest of the Internet) decides it is no longer possible to manage its own infrastructure, how fucked are the rest of us? You can whine about net neutrality all you want, but here's the real threat to open and accessible communication.)

Enjoyable 1.2, OS X 10.10 and IOHIDQueueGetDevice

Enjoyable 1.2 is out. This fixes input handling under OS X 10.10 ("Yosemite"); previous versions of Enjoyable never report any events.

In OS X 10.9 and earlier, you could get the device from the queue sender in the callback:

/* Registered with IOHIDDeviceRegisterInputValueCallback */
static void input(void *ctx, IOReturn inResult, void *inSender, IOHIDValueRef value) {
    IOHIDDeviceRef device = IOHIDQueueGetDevice(inSender);
    /* Do something with the device and value... */

This no longer works; IOHIDQueueGetDevice returns NULL. Instead, you need to pull the device from the value, via its element:

static void input(void *ctx, IOReturn inResult, void *inSender, IOHIDValueRef value) {
    IOHIDElementRef elt = value ? IOHIDValueGetElement(value) : NULL;
    IOHIDDeviceRef device = elt ? IOHIDElementGetDevice(elt) : NULL;
    /* Do something with the device and value... */

(I don't know if the NULL checks are needed, but since both getters have warnings about undefined behavior when passed invalid values/elements, it can't hurt.)

I also disabled Sparkle-based updating because Apple fucked up their code signing format. Yes, again. That's enough times that there's no legitimate claim to security left in it and it only continues to exist as a commercial bludgeon.

Essen 2014

Jess and I went to Internationale Spieltage SPIEL this year. It was the first time for both of us and so a bit overwhelming — I went to GenCon a few times in the Milwaukee MEC, which was my idea of a large commercially-focused convention and this was considerably larger and more commercial than that.

If you're going mostly to try and buy new and hard-to-find games it seems like you really want to be there the first day and the last day. The first day because limited items will sell out quickly. We didn't get to the Japon Brand booth until the second day, and already many games (Onitama, Villannex, The Ravens of Thri Sahashri) were sold out. Some were even sold out before the convention, via preorder. Most of these won't be offered for sale anywhere else (except probably-gouging resellers). Similarly I got Onirim at the Z-Man booth Saturday morning, and while they had plenty of copies left, the promotional expansions were all gone.

Conversely, the last day is when most of the non-publisher booths will be running sales on popular or overstocked games.

Both the first and last days are also the least crowded.

Overall I think boardgames are doing a better job than videogames of diversifying themes. Yes, it's a lot of spaceships and axes but: Furry bouncers? Mushroom hunting? There's more interesting stuff than one group can play coming out of the middle-sized and larger publishers. But there's also still a disturbingly large segment of boardgames that reproduce troubling history. I mean that in two ways:

First, there's a lot of games that encourage awful historiography. One major offender this year was Historia, a game about technological progress from "the start of civilization" to the Singularity (which is the "end" of the technology track, and of course happens shortly after our current age). Another was Progress: Evolution of Technology, a title to make even Auguste Comte blush. These games are frustrating because there are so many of them and so few of them really introduce new designs rather than just new arrangements or themes. But they're also frustrating because this is the best medium we have for exploring structural "what if?"s in a formal way, and so much of it is given over to bowdlerized retreads of what we already know happened.

But second, there's still a lot of boardgames that are just flat-out sexist and racist. Many of them are the same ones: "Civilization" games always follow a European-inspired trajectory and viewpoint, even if you're playing as "the Egyptians." Centuries of chattel slavery, colonialism, and white Christian imperialism are condensed to simple placement mechanics like "workers," "exploration," "settlement," etc.

There's more to history than Amero-European influence's waxing and waning; why not use other viewpoints? (One of the most interesting games I saw was Mahardika, a cooperative game in which you play as Sukarno, Hatta, and other founders of Indonesia fighting for independence.) There's more to say about that waxing and waning; why not games that interrogate rather than simply use that history? And (I hope) there's more to Amero-European culture than slavery and imperialism and trade policy; where are the games about that?

Even outside those designs, the games that aren't about historical topics still cover or feature mostly-white, mostly-dude subjects. This problem runs across the whole spectrum of game themes and sizes, from Pathfinder's only black characters being an extra-cost expansion to the 34 to 6 to 2 male to female to unspecified/ambiguous gender ratio in Boss Monster.

From an outsider's perspective, the boardgame industry feels like it's trying to compress the last decade of bad business development in the video game industry into a short period for itself. Many games have expansions (DLC), some of which were obviously planned from the start, sometimes even feeling like they're just half the "real" game cut off and sold separately. Every game has preorder bonuses, and like videogames they're often retailer- or venue-specific.

Like videogames, the production costs on the high end are growing fast. Larger boxes, lots of parts. Like videogames, this isn't accompanied by higher measures of manufacturing quality — games aren't getting stronger cards, more accurate cuts and prints, or wood and metal instead of cardboard and plastic. They're just getting more parts and bigger boxes.

These additional pieces are not always justified by the designs: Piles of tokens where a single die counter would suffice, or wooden or die-cut pieces that could just be a card or sometimes even just an agreed-upon area of the table. "Check out our unique meeple" plays into growing boardgamer-as-consumerist-identity memes; like videogames, this attitude is in turn necessary to prop up the high-cost market, which in turn raises the stakes and demands and produces even higher costs, etc. The median price of a new boardgame is trending to $60 and the high-end $100+.

Unlike videogames, boardgames don't have the same properties to let the bottom fall out of the "low end" in the same way. The fixed costs of manufacturing means I don't expect to see piles of new $1 or $2 games any time soon. But that doesn't mean there aren't repercussions for smaller designers, who seem to be mostly moving to print-and-play (which just distributes the manufacturing cost inefficiently over the player base), digital boardgames, and Kickstarter.

And wow. Kickstarter (and generic "crowdfunding") was everywhere. I thought "Kickstart this thing we're going to make and take real investment for later anyway" was bad in videogames, but in boardgames even the large companies like Filosofia/Z-Man and Funforge are doing Kickstarters basically as high-profile preorders. There were multiple booths selling "we'll run your crowdfunding" services. This should serve as a warning next time someone offers to erode labor and consumer protection with vague promises of "increasing competition" or "removing the middleman," but it probably won't.

re Bayonetta 2

[bell] hooks defended the critical attention [directed at Beyoncé]. We focus on Beyoncé because Beyoncé's the one who put the word feminist up at the VMAs, hooks explained, and because what a "liberatory sexuality" looks like is a "crisis in feminist thinking." "I wish she were here," hooks said. "She and I need to talk."

hooks and Beyoncé need to talk about "Partition," specifically. The song's lyrics exemplify hooks’s somewhat conservative fear that feminist women might be sexually liberating themselves "against their own interests." "If I'm a woman and I'm sucking somebody’s dick in a car and they're coming in my mouth and we could be in one of those milk commercials or whatever, is that liberatory?" hooks asked. "Or is it part of the tropes of the existing, imperialist, white supremacist, patriarchal capitalist structure of female sexuality?"

Kat Stoeffel, "bell hooks Was Bored by 'Anaconda'"


bell hooks: One thing that's really clear to us is things are not either/or. Orange is the New Black is not all bad or all good, and neither is media. More often than not, images in media are mixed. And it's hard for us then because what's the language to talk about them? What's the language to talk about her progressive image and her character of Sophia and all those other tired-ass black women that are just reproducing so many stereotypes in the things that they say and do?"

bell hooks: Transgression, a dialogue with Laverne Cox

Obviously, there's a gulf between Beyoncé and Bayonetta. One is a real woman trying to navigate multiple hostile systems, at the same time having an immense amount of capital (social, cultural, and financial), yet most of that capital is contingent on her performing in certain ways; she is simultaneously a person and a product. The other is a videogame character made by a mostly(-but-not-exclusively) male team; she is entirely a product, but one we are asked to project our own agency and subjectivity into.1

But I think the hole in our language that hooks identifies, that we need to speak about the former, is the same language we lack to speak about the latter. And I think it's for a similar reason: both concern the role and manifestation and effect of "liberatory sexuality." Any such discussion must be a long conversation among informed participants considering a broader context. These are all things mainstream games writing is terrible at — it is broadcast-focused, short-lived, and isolationist.

Moreover, the current cultural environment is explicit designed to shut down this conversation in favor of an unquestionable "everything's fine" answer, not for any informed reason, but because they're afraid of not being able to trade $60 for a glance at pixelated tit.

(h/t to Carolyn Petit for the links to The New School's talks.)

  1. Or are we? That's part of the question at hand. Jess told me she'd like to read some contrast of Lollipop Chainsaw and Bayonetta and I think identification is a big part of it: In Lollipop Chainsaw I think you're asked to identify with Nick as much as Juliet. 

Page 1 / 6 »