winterkoninkje: shadowcrane (clean) (Default)
2014-12-12 04:00 pm

Unification-fd tutorial (part 1/n)

A while back I released the unification-fd library, which gives a generic implementation of first-order unification of non-cyclic terms. I've given a few talks on how the library is implemented and what optimizations it performs, but that's not the topic for today. Today, I'm going to talk about how to use it.

Unification is a widely useful operation and, consequently, comes in many different flavors. The version currently supported by the library is the sort used by logic programming languages like Prolog, Curry, Dyna, and MiniKanren; which is the same sort that's used for unification-based type inference algorithms like Hindley–Damas–Milner. Of these two examples, the logic programming example is the simpler one to discuss— at least for folks who've used a language like Prolog before. So let's start from there.

Caveat Emptor: This post is something of a stream of consciousness. I've gotten a few requests for tutorials on how to use the library, but the requests weren't terribly specific about what problems people've had or what's been difficult to figure out. So I'm shooting in the dark as far as what folks need and how much background they have. I'm going to assume you're familiar with Prolog and the basics of what unification is and does.

Preemptive apology: I started writing this post months and months (and months) ago, but unintentionally dropped it after running into a certain issue and then getting distracted and moving onto other things. Actually, this happened at least twice. I'm terribly sorry about that. So, apologies for not tackling the disjunction issue in this post. I'll come back to it later, but figured this post really needs to get out the door already.

Logic Terms

A term, in Prolog, is just a fancy name for a value of some algebraic data type. In most variants of Prolog there's no explicit definition of the ADT, no restriction on what the constructors are, and no type checking to ensure that subterms have a particular shape. That is, Prolog is what's called a single-sorted logic; in other words, Prolog is an untyped/unityped language. With unification-fd we can implement multi-sorted (aka typed) logics, but for this tutorial we're going to stick with Prolog's single-sorted approach.

Opening up Control.Unification we'll see a handful of types and type classes, followed by a bunch of operators. The UTerm data type captures the recursive structure of logic terms. (UTerm is the free monad, if you're familiar with that terminology.) That is, given some functor t which describes the constructors of our logic terms, and some type v which describes our logic variables, the type UTerm t v is the type of logic terms: trees with multiple layers of t structure and leaves of type v. For our single-sorted logic, here's an implementation of t:

data T a = T String [a]

The String gives the name of the term constructor, and the list gives the ordered sequence of subterms. Thus, the Prolog term foo(bar,baz(X)) would be implemented as UTerm$T "foo" [UTerm$T "bar" [], UTerm$T "baz" [UVar x]]. If we're going to be building these terms directly, then we probably want to define some smart constructors to reduce the syntactic noise:

foo x y = UTerm$T "foo" [x,y]
bar     = UTerm$T "bar" []
baz x   = UTerm$T "baz" [x]

Now, we can implement the Prolog term as foo bar (baz x). If you prefer a more Prolog-like syntax, you can use uncurried definitions for smart constructors that take more than one argument.

Unifiable

In order to use our T data type with the rest of the API, we'll need to give a Unifiable instance for it. Before we do that we'll have to give Functor, Foldable, and Traversable instances. These are straightforward and can be automatically derived with the appropriate language pragmas.

The Unifiable class gives one step of the unification process. Just as we only need to specify one level of the ADT (i.e., T) and then we can use the library's UTerm to generate the recursive ADT, so too we only need to specify one level of the unification (i.e., zipMatch) and then we can use the library's operators to perform the recursive unification, subsumption, etc.

The zipMatch function takes two arguments of type t a. The abstract t will be our concrete T type. The abstract a is polymorphic, which ensures that we can't mess around with more than one level of the term at once. If we abandon that guarantee, then you can think of it as if a is UTerm T v. Thus,t a means T (UTerm T v); and T (UTerm T v) is essentially the type UTerm T v with the added guarantee that the values aren't in fact variables. Thus, the arguments to zipMatch are non-variable terms.

The zipMatch method has the rather complicated return type: Maybe (t (Either a (a,a))). Let's unpack this a bit by thinking about how unification works. When we try to unify two terms, first we look at their head constructors. If the constructors are different, then the terms aren't unifiable, so we return Nothing to indicate that unification has failed. Otherwise, the constructors match, so we have to recursively unify their subterms. Since the T structures of the two terms match, we can return Just t0 where t0 has the same T structure as both input terms. Where we still have to recursively unify subterms, we fill t0 with Right(l,r) values where l is a subterm of the left argument to zipMatch and r is the corresponding subterm of the right argument. Thus, zipMatch is a generalized zipping function for combining the shared structure and pairing up substructures. And now, the implementation:

instance Unifiable T where
    zipMatch (T m ls) (T n rs)
        | m /= n    = Nothing
        | otherwise =
            T n <$> pairWith (\l r -> Right(l,r)) ls rs

Where list-extras:Data.List.Extras.Pair.pairWith is a version of zip which returns Nothing if the lists have different lengths. So, if the names m and n match, and if the two arguments have the same number of subterms, then we pair those subterms off in order; otherwise, either the names or the lengths don't match, so we return Nothing.

Feature Structures

For the T example, we don't need to worry about the Left option. The reason it's there is to support feature structures and other sparse representations of terms. That is, consider the following type:

newtype FS k a = FS (Map k a)

Using this type, our logic terms are sets of key–subterm pairs. When unifying maps like these, what do we do if one argument has a binding for a particular key but the other argument does not? In the T example we assumed that subterms which couldn't be paired together (because the lists were different lengths) meant the unification must fail. But for FS it makes more sense to assume that terms which can't be paired up automatically succeed! That is, we'd like to assume that all the keys which are not explicitly present in the Map k a are implicitly present and each one is bound to a unique logic variable. Since the unique logic variables are implicit, there's no need to actually keep track of them, we'll just implicitly unify them with the subterm that can't be paired off.

This may make more sense if you see the Unifiable instance:

instance (Ord k) => Unifiable (FS k) where
    zipMatch (FS ls) (FS rs) =
        Just . FS $
            unionWith (\(Left l) (Left r) -> Right(l,r))
                (fmap Left ls)
                (fmap Left rs)

We start off by mapping Left over both the ls and the rs. We then call unionWith to pair things up. For any given key, if both ls and rs specify a subterm, then these subterms will be paired up as Right(l,r). If we have extra subterms from either ls or rs, however, then we keep them around as Left l or Left r. Thus, the Unifiable instance for FS performs a union of the FS structure, whereas the instance for T performs an intersection of T structure.

The Left option can be used in any situation where you can immediately resolve the unification of subterms, whereas the Right option says you still have work to do.1

Logic Variables

The library ships with two implementations of logic variables. The IntVar implementation uses Int as the names of variables, and uses an IntMap to keep track of the environment. The STVar implementation uses STRefs, so we can use actual mutation for binding logic variables, rather than keeping an explicit environment around. Of course, mutation complicates things, so the two implementations have different pros and cons.

Performing unification has the side effect of binding logic variables to terms. Thus, we'll want to use a monad in order to keep track of these effects. The BindingMonad type class provides the definition of what we need from our ambient monad. In particular, we need to be able to generate fresh logic variables, to bind logic variables, and to lookup what our logic variables are bound to. The library provides the necessary instances for both IntVar and STVar.

You can, of course, provide your own implementations of Variable and BindingMonad. However, doing so is beyond the scope of the current tutorial. For simplicity, we'll use the IntVar implementation below.

Example Programs

When embedding Prolog programs into Haskell, the main operators we want to consider are those in the section titled "Operations on two terms". These are structural equality (i.e., equality modulo substitution), structural equivalence (i.e., structural equality modulo alpha-variance), unification, and subsumption.

Consider the following Horn clause in Prolog:

example1(X,Y,Z) :- X = Y, Y = Z.

To implement this in Haskell we want a function which takes in three arguments, unifies the first two, and then unifies the second two. Thus,2

example1 x y z = do
    x =:= y
    y =:= z

To run this program we'd use one of the functions runIntBindingT, evalIntBindingT, or execIntBindingT, depending on whether we care about the binding state, the resulting logic term, or both. Of course, since the unifications may fail, we also need to run the underlying error monad, using something like runErrorT3,4. And since these are both monad transformers, we'll need to use runIdentity or the like in order to run the base monad. Thus, the functions to execute the entire monad stack will look like:

-- Aliases to simplify our type signatures. N.B., the
-- signatures are not actually required to get things
-- to typecheck.
type PrologTerm           = UTerm T IntVar 
type PrologFailure        = UnificationFailure T IntVar
type PrologBindingState   = IntBindingState T

-- N.B., the @FallibleBindingMonad@ isn't yet a monad
-- for Prolog because it doesn't support backtracking.
type FallibleBindingMonad =
    ErrorT PrologFailure (IntBindingT T Identity)

-- N.B., this definition runs into certain issues.
type PrologMonad =
    ErrorT PrologFailure (IntBindingT T Logic)

runFBM
    :: FallibleBindingMonad a
    -> (Either PrologFailure a, PrologBindingState)
runFBM = runIdentity . runIntBindingT . runErrorT

Here are some more examples:

-- A helper function to reduce boilerplate. First we get
-- a free variable, then we embed it into @PrologTerm@,
-- and then we embed it into some error monad (for
-- capturing unification failures).
getFreeVar = lift (UVar <$> freeVar)

-- example2(X,Z) :- X = Y, Y = Z.
example2 x z = do
    y <- getFreeVar
    x =:= y
    y =:= z

-- example3(X,Z) :- example1(X,Y,Z).
example3 x z = do
    y <- getFreeVar
    example1 x y z

-- example4(X) :- X = bar; X = backtrack.
example4 x = (x =:= bar) <|> (x =:= atom "backtrack")

The complete code for this post can be found here online, or at ./test/tutorial/tutorial1.hs in the Darcs repo. Notably, there are some complications about the semantics of example4; it doesn't mean what you think it should mean. We'll tackle that problem and fix it later on in the tutorial series (in part 4 or thereabouts).

Term Factoring and Clause Resolution Automata (CRAs)

Note that for the above examples, the Haskell functions only execute the right-hand side of the Horn clause. In Prolog itself, there's also a process of searching through all the Horn clauses in a program and deciding which one to execute next. A naive way to implement that search process would be to have a list of all the Horn clauses and walk through it, trying to unify the goal with the left-hand side of each clause and executing the right-hand side if it matches. A more efficient way would be to compile all the right-hand sides into a single automaton, allowing us to match the goal against all the right-hand sides at once. (The idea here is similar to compiling a bunch of strings together into a trie or regex.)

Constructing optimal CRAs is NP-complete in general, though it's feasible if we have an arbitrary ordering of clauses (e.g., Prolog's top–down order for trying each clause). The unification-fd library does not implement any support for CRAs at present, though it's something I'd like to add in the future. For more information on this topic, see Dawson et al. (1995) Optimizing Clause Resolution: Beyond Unification Factoring and Dawson et al. (1996) Principles and Practice of Unification Factoring.

Other operators

In addition to unification itself, it's often helpful to have various other operators on hand.

One such operator is the subsumption operator. Whereas unification looks for a most-general substitution which when applied to both arguments yields terms which are structurally equal (i.e., l =:= r computes the most general s such that s l === s r), subsumption applies the substitution to only one side. That is, l subsumes r just in case r is a substitution instance of l (i.e., there exists a substitution s such that s l === r). The symbolic name (<:=) comes from the fact that when l subsumes r we also say that l is less defined5 than r. Subsumption shows up in cases where we have to hold r fixed for some reason, such as when implementing polymorphism or subtyping.

Other operators work on just one term, such as determining the free variables of a term, explicitly applying the ambient substitution to obtain a pure term, or cloning a term to make a copy where all the free variables have been renamed to fresh variables. These sorts of operators aren't used very often in logic programming itself, but are crucial for implementing logic programming languages.

Conclusion

Hopefully that gives a quick idea of how the library's API is set up. Next time I'll walk through an implementation of Hindley–Damas–Milner type inference, and then higher-ranked polymorphism à la Peyton Jones et al. (2011) Practical type inference for arbitrary-rank types. After that, I'll discuss the complications about backtracking choice I noticed when writing this post, and walk through how to fix them. If there's still interest after that, I can get into some of the guts of the library's implementation— like ranked path compression, maximal structure sharing, and so on.

If you have any particular questions you'd like me to address, drop me a line.


[1] Older versions of the library used the type zipMatch :: forall a b. t a -> t b -> Maybe (t (a,b)) in order to ensure that we did in fact properly pair up subterms from the two arguments. Unfortunately I had to relax that guarantee in order to add support for feature structures.

[2] N.B., a more efficient implementation is:

example1' x y z = do
    y' <- x =:= y
    y' =:= z

The unification operator returns a new term which guarantees maximal structure sharing with both of its arguments. The implementation of unification makes use of observable structure sharing, so by capturing y' and using it in lieu of y, the subsequent unifications can avoid redundant work.

[3] The ErrorT transformer was deprecated by transformers-0.4.1.0, though it still works for this tutorial. Unfortunately, the preferred ExceptT does not work since UnificationFailure doesn't have a Monoid instance as of unification-fd-0.9.0. The definition of UnificationFailure already contains a hack to get it to work with ErrorT, but future versions of the library will remove that hack and will require users to specify their own monoid for combining errors. The First monoid captures the current behavior, though one may prefer to use other monoids such as a monoid that gives a trace of the full execution path, or witnesses for all the backtracks, etc.

[4] To be honest, I don't entirely recall why I had the error monad explicitly separated out as a monad transformer over the binding monad, rather than allowing these two layers to be combined. Since it's so awkward, I'm sure there was some reason behind it, I just failed to make note of why. If there turns out to be no decent reason for it, future versions of the library may remove this fine-grain distinction.

[5] The symbolic name for subsumption is chosen to reflect the meaning of more/less defined (rather than more/less grounded) so that the subsumption ordering coincides with the domain ordering (think of logic variables as being bottom). This is the standard direction for looking at subsumption; though, of course, we could always consider the dual ordering instead.

winterkoninkje: shadowcrane (clean) (Default)
2014-12-11 06:54 pm
Entry tags:

My take on Bungie's Destiny

The past few weeks I've been sorely addicted to Destiny, Bungie's new(ish) MMO-FPS. Every other MMO I've seen falls into the action-RPG genre. So, in being an FPS, Destiny has the potential to be a watershed moment for massively multiplayer games. In some ways, it lives up to these possibilities; but in some ways, it falls far short.

First Run

I'm a sucker for good storylines, that's why I love RPGs so much. So my formative experience with Destiny was running through the single-player plot levels, though I've probably spent more time on the post-game MMO aspects. I played the whole thing on hard/heroic, which will take you up to the soft level cap with a minimum of grinding. The initial setup for the world is pretty interesting. In particular, the idea of playing in a post-human universe is pretty cool, and offers a nice counterpoint to the transhuman universes which are starting to become popular in the tabletop RPG community. The presence of post-human technologies also helps some system details make sense in-game. For example, using reprogrammable matter as money makes it natural that you should be able to break items down into money without a vendor.

Many aspects of the universe are reminiscent of Bungie's other FPS franchises: Marathon and Halo. There's a Covenant-like race (individually strong, with shielded elites). There's a Flood-like race (though they're less zombie-like). There are warmind AIs. There are murderous robots (though less entertaining than the Monitors). Introducing a new race for each planet gets a bit stale, especially since every planet has two races fighting among themselves; but it's not too terrible.

The storyline itself is decent, though nothing amazing or unique. There are no major twists (e.g., the introduction of the Flood in the first Halo), but there are a bunch of minor ones to hold your interest and to keep things open for the expansions. The final boss fight is well done, both challenging and interesting. Though I'm not entirely convinced the Vex pose a greater threat than the other races; certainly not enough to make them the first Big Bad. It'd've made more sense to have had the first major villain be Fallen so the heroes can reclaim a chunk of Earth, and then make the Vex the main villain of an expansion.

An FPS and an MMO

As a hybridization of the FPS genre and the action-RPG MMO genre, Destiny works surprisingly well. You can definitely notice the difference from leveling up or fighting higher level enemies. Just as in other MMOs there's the exponential power curve which makes it impossible to confront enemies who are too many levels above you, and lets you ignore enemies too many levels below you— whether you like that sort of thing is up to you, but it definitely gives the MMO feel in ways I never would've expected of an FPS.

The upgrading of equipment fits the FPS genre surprisingly well. There are even some interesting tradeoffs. What is just a single gun in traditional FPSes (e.g., a hand cannon or a sniper rifle) is a class of weapons in Destiny. And while all guns in a particular class behave basically the same way, they differ significantly in terms of recoil, rate of fire, magazine size, etc. Thus, whenever you pick up a more powerful gun, there's always the question of whether the extra damage is worth the change in how it feels. In my first run through I often stuck with an old gun that felt better, only upgrading when it was a few levels behind or when the new gun had a similar or better feel.

Destiny has six character classes: three of which you can choose from the outset, the other three being subclasses available later on. Unlike traditional MMOs the classes don't really fall into the standard team roles of tank, dps, healer, buff/debuff, etc. Like an FPS, everyone on your team is just someone on your team. But each of the classes does come with different types of grenades and different special powers. So the classes play rather differently, even if they don't contribute to a team dynamic in the way you're used to from MMOs.

Once you reach the soft level cap (i.e., as far as XP will take you), you unlock all the various ways to play the game as a true MMO: daily and weekly challenges, cooperative strikes, raids, etc. From there you work towards the hard level cap (i.e., as far as equipment will take you). Either reaching the soft level cap or beating the single-player storyline (I'm not sure which) also unlocks higher level hard/heroic versions of the storyline levels. All in all, the MMO content is as addictive and entertaining as other MMOs. However, there's not a lot of content there. After a few weeks of running the same half-dozen strikes over and over, you know them inside and out. Perhaps this is just because Destiny is so new, whereas other MMOs I've played had been around much longer and so had more time to accrete expansions. Only time will tell.

The inevitable comparison

Let's get this out of the way: I don't like FPS games. The only FPS I've really enjoyed is Halo, another Bungie offering. What I loved about Halo —the first one especially— is the way that it revolutionized the FPS genre. Instead of being a walking arsenal carrying fifty different guns and going through a complex menu to switch between them, Halo came up with a brilliant innovation: you have a gun and another gun, that's it. Instead of classifying grenades as a type of gun (going through that same complex menu to switch to them and back, rendering them useless in most games), Halo considered grenades integral and gave them their own trigger. Not to mention the vehicles: (a) they had them, (b) they had unique and interesting offerings like the aerial Banshee and the multiplayer Warthog.

In Destiny, rather than two gun slots there are three, but each class of weapons is restricted to fitting only one of them. This can be annoying —in the beginning I'd've loved to have used a hand cannon as a secondary weapon— but it's still simple enough that you can switch freely in the middle of a firefight. However, Destiny nerfs many of the traditional FPS guns.

Shotguns have too wide of a choke to get all the pellets into one target, and not enough pellets to be effective against multiple targets. Also, per FPS tradition, they're only usable as melee weapons— something Halo nicely got away from by making them short-range rather than melee-range weapons. But that's fine, I just won't use shotguns, whatevs, no big loss.

Sniper rifles are an all-time favorite of mine, I'm much more interested in getting a headshot from a mile away than in riddling people with bullets up close. The sniper rifle fills that role, but there are very few scenes with enough distance to make it worthwhile. Besides, there's the scout rifle: a primary weapon which acts as a light sniper rifle. For all the really excellent sniping scenes, a scout rifle has enough range to make the shot if you have the aim. So sniper rifles are a bust (leaving the fusion rifle as far and away the best option for the secondary weapon slot), though this is heartily made up for by the presence of the scout rifle, which operates much like the beloved pistol in the first Halo.

But the most annoying is how they nerfed rocket launchers. Traditionally rocket launchers have a handful of uses: (i) to thin a clump of enemies à la grenades, (ii) to take out vehicles, (iii) to take out or severely wound strong enemies, (iv) PvP. The first use is generally thought of as a waste, given that we have grenades. (But Destiny's rocket launchers do fill that role nicely.) And I don't like PvP, which is no doubt a major component of why I typically dislike FPSes. (Though Destiny's rocket launchers also fill the PvP role nicely.) So that leaves the main roles: vehicles and strong enemies. Alas, there are only two spots where you encounter enemy vehicles: a few Ghost-like speeders in the middle of the first moon mission, which you can just avoid by using your own (gunless) speeder to get to the next section; and a tank miniboss in one of the strikes. Moreover, against any of the major bosses, you can get far better DPS with the scout rifle (and no doubt any of the other primary weapons) or a fusion rifle (a secondary weapon), making the rocket launcher (one of the two heavy weapons) a mildly entertaining waste of time on bosses. I got a legendary rocket launcher in a drop fairly early on so I've used it a fair deal and discovered one or two niche uses (against clusters of Phalanxes, and as a well-targeted grenade against drop ships), but otherwise I stick to my (non-legendary) LMGs.

Nestled in that diatribe against the rocket launcher is what I think is a greater loss compared to the Halo franchise: the lack of vehicles. After playing through the first Halo which had a number of excellently crafted vehicle levels, and the second Halo which had vehicles all over the place, the relegation of vehicles to a few throwaway moments in Destiny feels like a major step back. Destiny deserves to be far greater than an MMO Halo. The Halo franchise is well and thoroughly played out, and players want something new and different. But nerfing the classic FPS weapons and all-but eliminating vehicles doesn't seem necessary just to distance the Destiny franchise from Halo.

Missed Opportunities

It'd be cool if the reprogrammable matter ("glimmer") idea was played up a bit. In the early game, glimmer can be useful for buying up your equipment if you're not getting good drops. But by the mid-game, there's nothing worthwhile for sale, and you have more than enough glimmer to meet your needs for leveling up equipment. By the end-game it's easy to hit the glimmer cap, especially if you've been using the items that make all enemies you kill drop a bit of glimmer. But the idea of glimmer could be so much more interesting than just money. Imagine:

Instead of relying on ammo drops at all, you could fabricate all your ammo, making some weapons more economical than others (in practice instead of just in the flavor text). Ammo would take a while to fabricate, but you could have a small pre-fabricated stockpile on hand, much as the current/standard ammo system. Tuned to be fabricated at the right rate, this would make it so you either need to take some downtime between stages or else have to buy ammo off others.

Rather than having a long recharge cycle for grenades, you could treat them more like the ammo suggested above. Instead of having only one at a time and saving it up for the right moment, at the end of the charge cycle you've fabricated a grenade which you can keep in a small stockpile. This way you can use a few at a time, or use them more frequently, but at a cost. You could even introduce new grenade types which recharge faster but cost more, recharge faster but are weaker, and so on.

Instead of buying or finding equipment, you could buy, find, or invent(!) blueprints which allow you to convert glimmer into equipment— as often as you like! With an exchange system for trading items with other players, this could make for some very interesting commercial models. When you've found or invented a new blueprint, do you sell people the blueprint itself, the rights to use the blueprint some number of times, or do you sell them the product? Some players could be dedicated to inventing new equipment, focusing on particular sorts of armor or weapons. Or, rather than inventing items wholesale, perhaps the art is in figuring out nice combinations of level-up features to put on your equipment.

Perhaps the fabrication units are too large or delicate to carry around with you, and so they have to remain on your jumpship. Now, instead of only changing the skin of your ship whenever you get bored with the old one, you could get new ships with different manufacturing capabilities.

The essential core of any MMO is, ultimately, the economy. There's only so much you can level up, and only so slow you can make leveling, so the way you indefinitely extend the length of a game is by adding in various farming tasks: whether that's collecting raw materials, converting those materials into items, or whatever. But all these farming jobs generate products, and there are only so many products of a given sort that a single player can use. Thus, it's imperative to have some sort of exchange system so players can buy and sell items with one another. By allowing trade between players, the costs of items will naturally adjust based on their scarcity. In addition, the auction house will usually take their cut, which helps to siphon currency out of the system.

Alas, Destiny lacks both a trading house and any sort of item fabrication system. Before the patches to make way for the first expansion, you could trade collected raw materials for Crucible points— which was great! It siphons the materials out of the system, it gives you a farming game, and it gives players like me who hate PvP a way to gain the Crucible points necessary for buying legendary equipment. Unfortunately, the first patch for the expansion (prior to the expansion itself) reversed this: you could only spend Crucible points to buy raw materials. By this point I'd gathered far more raw materials than I could ever use up —via opportunistic collection alone, not even by farming—, so there's no reason to ever buy them. And now I have this huge pile of raw materials I can neither use nor sell, yet I'm forced to PvP for Crucible points.

Another unfortunate departure from traditional MMOs is the reliance on voice chat instead of textual messaging. Technologically it makes sense: Destiny is only available on consoles, so the lack of a keyboard makes typing difficult. But women get a lot of shit for being gamers. And both the FPS and MMO communities are especially renowned for their misogynistic behavior. It'd be nice if I could make friends for going on raids and such without opening myself up for that sort of abuse. When I do strikes with a random team, I often end up making by far the most kills. Whenever a teammate falls, I do my best to rush in and revive them. I switch between crowd control, taking out vips, or maximizing dps, depending on what the team needs and where we're falling short. Traits like these are looked up to in (male) players, so I've managed to make a few friends on merit alone; but if people knew I'm I woman, how differently would they interpret these traits? Do I revive teammates because of my "motherly instinct" or because I'm "flirting"? Is my kill ratio "compensating" or because I "have no life"? Do I take on crowd control because I "can't handle" the boss? When I dps the boss instead of doing crowd control am I "focusing on the wrong thing"? When the inevitable death happens, is it "because girls can't play"? Men never have to deal with these accusations, but women are always vulnerable to them if we make our gender known. By relying on voice chat, Destiny makes it difficult for women to form the friendships necessary to make MMOs fun and to tackle the hardest challenges.

End Game

A few days ago the first expansion for Destiny came out. At first I was excited since I'd started to get bored by the repetition of the content from the first/main game. But then the patches started coming out. The first patch introduced a bug whereby precision kills no longer register. You still get the bonus damage and death animations, but you no longer get better drops from headshots. Hence, I went from getting almost exclusively blue/rare drops (my precision kill rate is over 60%), to only ever getting green/uncommon drops— which are utterly useless at my level, even for the raw materials you can break them down into. This is the same patch that reversed the Crucible points for raw materials trade; thus, since I will never get a legendary drop again, and I cannot sell raw materials to gain Crucible points, the only way to get legendary equipment is to grind away in PvP. Have I mentioned how I hate PvP?

In addition, with the official release of the first expansion on December 9, they introduced new currencies of Vanguard and Crucible "commendations" in addition to the Vanguard and Crucible "points". The old legendary equipment which only cost points went away, and now there's new (stronger) legendary equipment which costs both points and commendations. In short, buying legendary equipment went from being extremely time consuming (at least a week and a half of grinding per piece, since there's a cap on how many points you can earn per week) to being effectively impossible. I get that MMOs are all about grinding, but there's a big difference between making slow progress and making zero progress. As things are, I'm permanently stuck at level 27 because the only non-PvP way to improve my level is to go for raid drops— which requires level 28 or higher thanks to the exponential power curve. I might be able to handle the raid if I got an exotic weapon, but that requires beating an epic stage with an effective level requirement of 30 or so. Chicken, meet egg.

So yeah. I'm kinda done with it for now, but it was fun while it lasted. The hours I put into it were well worth the sticker price, but I don't think I'll be getting the expansions for now. Maybe I'll come back in a few years.

winterkoninkje: shadowcrane (clean) (Default)
2014-10-20 10:24 pm

Upcoming talk

For all you local folks, I'll be giving a talk about my dissertation on November 5th at 4:00–5:00 in Ballantine Hall 011. For those who've heard me give talks about it before, not much has changed since NLCS 2013. But the majority of current CL/NLP, PL, and logic folks haven't seen the talk, so do feel free to stop by.

Abstract: Many natural languages allow scrambling of constituents, or so-called "free word order". However, most syntactic formalisms are designed for English first and foremost. They assume that word order is rigidly fixed, and consequently these formalisms cannot handle languages like Latin, German, Russian, or Japanese. In this talk I introduce a new calculus —the chiastic lambda-calculus— which allows us to capture both the freedoms and the restrictions of constituent scrambling in Japanese. In addition to capturing these syntactic facts about free word order, the chiastic lambda-calculus also captures semantic issues that arise in Japanese verbal morphology. Moreover, chiastic lambda-calculus can be used to capture numerous non-linguistic phenomena, such as: justifying notational shorthands in category theory, providing a strong type theory for programming languages with keyword-arguments, and exploring metatheoretical issues around the duality between procedures and values.

Edit 2014.11.05: The slides from the talk are now up.

winterkoninkje: shadowcrane (clean) (Default)
2014-10-03 07:51 pm
Entry tags:

Domestic Violence Awareness Month

October first marks the beginning of Domestic Violence Awareness Month. I don't have the emotional energy to write anything about it at the moment, but y'all should read this (Trigger warnings ahoy): Because If I Was Honest, Everything I Knew Would Explode.

winterkoninkje: shadowcrane (clean) (Default)
2014-09-17 07:21 pm

Reading Notes: Precarious Life (2004), ch.1

Judith Butler's incisive discussion of the public aftermath of the 9/11 terrorist attacks —overwhelming anti-intellectualism, self-censorship in a "you're with us or you're a terrorist" regime, refusal to seek understanding of the attacks, etc— also applies more broadly to other social issues under public deliberation/renegotiation. (To be more fully explicated in another post.) Mostly this chapter is about posing questions and questioning the "inevitability" of our interpretations and framing of events, rather than providing answers to those questions.

Themes and ideas:

  • US flag as ambiguous symbol of (a) solidarity with those lost in the attacks, vs (b) support for the US military campaign; thereby insinuating that these are one and the same, and that the former leads in a single stroke to the latter.
  • Disallowing the story we tell to begin earlier than the 9/11 attacks themselves, thereby predetermining the sorts of stories that can be told, and preventing any real answer to the question "why do they hate us so much?"
  • Shoring up the first-person perspective and, hence, the presumption of US supremacy and centrality. Any attempt to decenter the US being perceived as a component of the psychological wound of the attacks themselves. The "we're reaping what we've sown" response is just another way of asserting the centrality of the US. The refusal to acknowledge the UN and other supra-governmental bodies rooted in the fact that such acknowledgement would decenter the US.
  • The distinction between conditions and causes. And, hence, the distinction between explanation and exoneration. The need for moving beyond a framework of "justification" and "culpability".
  • "the failure to conceive of Muslim and Arab lives as lives." (Butler 2004: 12, emphasis hers) More generally, the unwillingness to show or see the faces of those we've killed. Facelessness of the "enemy".
  • "Our fear of understanding a point of view belies a deeper fear that we shall be taken up by it, find it is contagious, become infected in a morally perilous way by the thinking of the presumed enemy." (Butler 2004: 8)
  • "Dissent is quelled, in part, through threatening the speaking subject with an uninhabitable identification. Because it would be heinous to identify as treasonous, as a collaborator, one fails to speak, or one speaks in throttled ways, in order to sidestep the terrorizing identification that threatens to take hold. This strategy for quelling dissent and limiting the reach of critical debate happens not only through a series of shaming tactics which have a certain psychological terrorization as their effect, but they work as well by producing what will and will not count as a viable speaking subject and a reasonable opinion within the public domain." (Butler 2004: xix, emphasis mine)

winterkoninkje: shadowcrane (clean) (Default)
2014-08-20 11:00 am

Why I speak

I talk about a number of sensitive topics: depression, cPTSD, child abuse, sexism. Every one of these are topics where you risk damaging or ruining your career simply by bringing them up. And, believe it or not, I'm actually a rather private person; I do not discuss my personal life as part of casual chit-chat, I do not "accidentally" share personal details, and even mundane goings-on I prefer not to mention except among friends. So why, then, do I speak about these topics? Why make myself uncomfortable and risk devastating financial repercussions? The reasons I speak haven't changed much over the years (though the way I think about those reasons has). And yet, I don't think I've ever given a clear explication of these reasons and what I hope to achieve by my words. It's time to correct that.

I speak as a form of active political resistance against the silence culture that pervades the US (and surely the rest of the world). I do not discuss my history as a form of confession, nor as a form of exhibitionism; I talk about my past in order to perform my politics. I've talked about silence culture before, and today I want to unpack that a bit more by distinguishing between two different forms that silence culture takes.

A Note on Terminology

Complex Post Traumatic Stress Disorder (cPTSD) is a variant of PTSD that arises from long-term exposure to trauma. Simple PTSD results from acute trauma —e.g., a single violent encounter, or short-term exposure to warfare—, whereas complex PTSD results from repeated exposure to trauma over an extended period —e.g., childhood abuse where the child lives with the abuser, or living in a war-torn region. The complexity of cPTSD stems both from the extended/repeated nature of the trauma, and from the pervasive/inescapable nature of the traumatic environment. Together these undermine any sense of self-worth, personal safety, or ability to trust others. (cf., cPTSD Light, Out of the Fog, EMDR-web)

In the past I've always talked about "PTSD", because "cPTSD" did not exist when I was diagnosed. However, I'm a text-book example for cPTSD— both symptomatically and etiologically. Consequently, henceforth I will refer to my experiences as cPTSD, both for clarity/specificity and to raise awareness of the distinction. As if it needed stating: I still stand with those who live with "simple" PTSD, and will continue to advocate for awareness of and sensitivity to their experiences.

Internal Silence Culture

The internal culture of silence is a specific form of psychological violence used to sustain abusive environments. This is the kind of culture that says, "what happens in the family, stays in the family." This apophthegm shows up in alcoholic families, in families with mental illness1, in sexually abusive families, in intimate partner violence, in sexist and racist work environments, in acquaintance rape, in fraternity gang rape, and countless other abusive social groups. In all these situations, enculturated victims teach the new generation of victims that the outside world is dangerous, that they cannot trust it because it will betray them ("unlike the family"), that talking about the physical, sexual, and psychological violence will delegitimize and harm the one who speaks out, that talking about this violence will "embarrass" the family or other social unit, and that the damage of this loss of face will be greater than the damage from the violence itself. Sometimes abusers also teach this message, either by presenting themselves as "the real victim" or by threatening increased violence should the victim go public. But the culture of silence cannot be maintained without the complicity of enculturated victims.

The discussions and disclosures in my youth had the goal of disrupting this internal silence. By speaking out about the specifics of my own trauma, disclosing who enacted which forms of violence, and how they were themselves victims of violence, I took control of my life away from my abusive family. By speaking openly, I ensure that others in similar situations know they are not alone, and know that they too can break their silence. By naming the demon, we can tame it. By disclosing generations of abuse we make ourselves open to the possibility of breaking that chain instead of repeating the cycle once more with our own children.

Most of these discussions of my personal history happened years ago. I don't know how much they can be traced back to me now, since the bulk of them happened in the mid- and late 1990s when anonymity and pseudonymity were de rigueur. But I don't care. The only thing I regret is my youthful naivete and whatever ways I hurt people along the way— including my previous inability to see my abusers as fully human, as simply reenacting the abuse they themselves were raised with2. Though I do not give the specific details anymore, I am fine with these details being part of the public record. I am not —and will not be— embarrassed by my history. The past is a mere collection of facts; it cannot compel my silence. By neutralizing my own embarrassment, I know that at least on a personal level my politics have been successful. The more I can help others to neutralize their embarrassment and guilt about speaking out, the better. And I am not above enumerating the details once more if that is what's required.

External Silence Culture

More recently I've switched away from talking about my history with abuse, and towards talking about how living with depression and cPTSD affects my daily life. This is a shift in focus, not intent. I used to only be aware of internal silence, and tailored my activism accordingly; but now I realize there is another form of silence, one which is much less discussed and therefore more in need of awareness.

The external culture of silence is the systemic means by which a community fails to recognize (or refuses to admit) that it has a problem. It is the silence which allows each compagnie to realize and internally discuss the problem, while the community at large remains ignorant. It is how failure of communication prevents local/specific knowledge from becoming global/universal knowledge.

External silence culture often takes the form of superficial acknowledgement of a problem while perpetuating it via ignorance or misunderstanding of its root causes. A prime example is the way certain men acknowledge that sexism is a problem, but then turn around and enact the same sexist culture they decry in their blog posts. Another is how we can admit that, in the US, one-in-11 people are affected by some form of depression and one-in-24 people live with major depressive disorder (CDC), but then on an individual level most americans refuse to believe they know anyone with depression. Or how we can admit that depression costs US employers 44 billion dollars per annum in lost productive time, but then we turn around and stigmatize people for seeking treatment.

I do not believe this failure to recognize how our communities perpetuate the problems they nominally oppose can be brushed off as "mere" hypocrisy. There's a deeper issue than logical inconsistency going on here. Systemic failures can never be explained by idiosyncratic failures. This failure of communication is due to enculturated systems of silence and to a failure to appreciate how global interactions are constructed through local, personal interactions. As a species, we do not understand how to interpret facts like "one-in-N people"; we can believe these facts to be true without recognizing how that truth must be immanent in the personal microcosm of our daily surroundings.2.5 This mode of cognitive failure is perfectly natural, which is why we must take explicit steps to disrupt and forestall it.

This is why I talk about the fact that I live with depression and cPTSD. By making this public knowledge, in refuting the sanist assumption, I deny people the ability to believe they don't know anyone with these conditions. I don't say "there are lots of people with depression", I say "I am a person with depression", I say "you know someone who has attempted suicide". I make it personal. The logic here is the same as the logic behind Out & Proud. By making it personal, by going on with our daily lives and yet not allowing these lives to be masked over by normative assumptions, we help those around us to realize that we are everywhere, that we have always been here, and that we are already part of that thing they call "normal".

One of the ways silence is encultured is in all the things we don't feel the need to say when among "our own kind". With people like ourselves there is less need to discuss certain details; they already know, and so we can speak in analogies, allusions, and assumptions. But when we take this dialect of implicit communication into larger communities, our words are misunderstood and misconstrued because the audience fails to hear the content in what we do not-say and presumes the content of what they expect us to not-say. The problem here is not that we communicate meaning through the not-saying of particular things— the use of implicit communication typically increases the efficiency of communication, and it's an essential component of how groups foster intimacy. The problem is being unaware of the fact that there are many dialects of subtle communication, and being uncritical of our assumption that the audience knows which dialect we are using and understands how it should be interpreted. Subtle communication is why satire is such an effective shibboleth (Arthur Chu), and why George W. Bush can give speeches which are interpreted radically differently by evangelical Christians and the rest of the country (Craig Unger, William Safire, inter alia).

This is why I talk about what it is like to live with depression and cPTSD. By discussing their specific, ongoing influence on the ways I interact with the world, I'm explaining one of those dialects of assumed experience. Just knowing that I have depression is not enough to understand what it means, how it affects who I am and what I do. We need explanations like the spoon theory, depression quest, mainichi. Before the spoon theory was vocalized in 2003 people with chronic conditions would try to explain how our lives are just plain harder, but non-spoonies misinterpreted our words as "laziness" or "whininess". That references to spoons are so ubiquitous now, is because of the specific ways that explanation serves to make this aspect of life real to those who do not live it.

Beyond "illness", "cures", and the eventive mythology of trauma

In cognitive science there's the concept of umwelt3: an organism's lived experience of their surroundings. To understand why animals behave in certain ways it is not sufficient to know about their environment: the animal does not make decisions based on our perception of their environment, they make decisions based on their own observations and internal conceptions of these surroundings. The senses at our disposal are not like tools in a drawer that we can pick up or discard at a whim. Our senses are fundamentally ingrained in the fabric of reality: reality cannot exist to us without our perceiving it, and we cannot perceive any aspects of reality which lay outside our sensory capabilities. There is no unified "reality", at least not in any way that's helpful to daily life. Each of us inhabits different worlds, and each of these worlds is structured by our personal and specific perceptive, physical, cognitive, and social capabilities.

When people hear "PTSD" they think of veterans waking from nightmares, as if the condition is a punctual event with the effects of rewatching a scary movie. People don't realize that when we say we are "haunted" by our pasts, we mean it in the full gothic sense of the word. Our pasts, our memories are a demonic possession. They cast a pall over interactions, corrode friendships, corrupt vision with spectral intruder-attackers, poison socialization with projected phantasmagoric intentions. The haunting leeches into every waking moment, draining their color —except for harsh glaring garish splotches—, and when all those waking moments have been polluted it seeps into the dreamworld, hungry for more. The severity of the haunting varies, of course. And the possession sometimes goes into remission, hiding away to strike again later. And some of us aren't plagued by revenants or sluagh, we have poltergeists: spiritual agents that move things when we aren't looking, that are mostly quiet but always directing us down their crooked paths, with loud bangs and broken furniture if need be.

PTSD —like depression, and like anxiety— is not an event, it's a mode of living. Although we must talk about the events which gave rise to these conditions (to end our internalized silence), doing so allows our society to continue believing in and perpetuating the mythology that trauma causes an event of suffering rather than causing a state of suffering. This mythology includes the belief that mental "illness" can be "cured", that it is a transient condition without long-term repercussions. While acute depression4 is short-term, I'm not so sure it should be considered transient: 80% of people who've had a depressive episode go on to have another (Fava, Park, & Sonino). Contrarily, major depressive disorder —aka "depression"— is, by definition, an ongoing condition. Similarly, while simple PTSD can also be short-term5, the existence of complex PTSD suggests that simple PTSD is not transient. Conditions like cPTSD, depression, and anxiety are not something that goes away. We need to accept that fact and talk about them accordingly. We need to teach people how to live productive and fulfilling lives, not teach them to pin hopes on a "cure". Pretending it will go away causes disappointment, guilt, and embarrassment about not having "gotten over" it yet. And pretending it'll go away contributes to the continued marginalization of people who live with these chronic conditions. Pretending that depression, anxiety, and cPTSD are "illnesses" that will "go away" causes real and lasting psychological damage; and it does so in the exact same way as pretending child abuse will "go away" if we don't talk about it, and that pretending one's sexual orientation is an "illness" or that it might "go away" if ignored.

By refocusing my speech on what it's like to live with depression and cPTSD, one goal is to combat this mythology of a "disease" with a "cure", but the bigger goal is to inject some humanity into the public conception of people with these conditions. The spoon theory works because snatching spoons out of someone's hand creates a visceral reaction, which induces a personal experience of the claim that "life is harder", and thus causes one to view people with chronic conditions as expressing authentic human responses to living in a particular kind of world— even when that world isn't the one the snatchee is used to inhabiting. When I speak of my paranoia about releasing writings into the world, or the fear that masculinized cultures induce in women, or the panic I experience whenever I have the presumption to share deep personal opinions, or the rage I feel at people dismissing the monumental pain of living, my goal in all these disclosures is to help people see —for once— that I am human. That my responses are authentic, that they are responses shared by countless others who live in worlds like the one I inhabit. We are not diagnoses, we are not labels, we are not identities; we are human. We do not feel the need to describe our umwelt to one another, but you know not how to read the meaning we utter in the gaps between words. And this is why I speak, if you can but hear.

Afterword

While editing the above post, I became aware of an abusive campaign against Zoë Quinn (the creator of Depression Quest) orchestrated by a malicious ex. This sort of invasive, dehumanizing, personalized attack is not at all uncommon— for women. If you are a man, you cannot comprehend what this is like because it is a form of gendered violence tailored exclusively to women. This is part of our umwelt. As women, our realities are shaped by the ever-present threat that our sexualities will be weaponized against us.

This highlights a very different reason I am open about my past. By being open about these things, I ensure that they cannot be used against me in the sort of "revelatory" smear campaign Quinn is facing. Make no mistake, my sexuality and psychology will be used against me. Openly handing men the ammunition only prevents them from engaging in this one specific form of violence. While I prefer to think of my openness as active political resistance, the fact is my openness is also a form of triage. A way of defending against the worst of the misogyny I must face for daring to exist. Perhaps I will unpack this motivation a bit more in another post.


[1] I really hate the term "mental illness". It's medicalizing and pathologizing. When people find out I wear glasses they barely even notice; why should finding out whether I take meds be any different? My height also has significant health repercussions, but noone talks about my "vertical illness". My brain is no more magical than my eyes or my spine. Unfortunately, I don't know of a suitable alternative to using the term MI. If you know of one, please do drop me a line.

[2] The surviving members of my family have matured significantly since my childhood, and it is not my intention to malign the people they have become by discussing the harm they inflicted on me throughout my childhood.

[2.5] Even without getting into cognitive issues, linguistic issues already forestall our ability to comprehend what statistics like these mean. Mark Liberman has written a number of excellent articles at Language Log about how, at present, natural language fails to adequately capture or convey probabilistic information and how this causes undue confusion between frequencies, rates, risk, odds, likelihoods, ratios of any of these, and various other probabilistic and statistical measurements. Here's one on how it's misleading to report odds ratios, counterbalanced by this piece on why (log) odds ratios are useful and have a cognitive basis.

[3] I refer here to the variation that occurs in embodied cognitive science and ecological psychology, rather than the variation that occurs in semiotics per se. So more like Gibson and less like Uexküll.

[4] The form of depression brought on by a novel traumatic event, like the loss of a loved one.

[5] EMDR-web reports being able to relieve 9/11 survivors of their simple PTSD using Eye Movement Desensitization and Reprocessing (EMDR). Prior to writing this article I was unaware of any reliable treatment for successfully treating PTSD, and I'm still not familiar with all the literature here.

winterkoninkje: shadowcrane (clean) (Default)
2014-08-15 07:24 pm

Citation, Recitation, and Resuscitation

Citation is a necessary practice for any sort of intellectual engagement, whether formal or colloquial, and whether academic or activistic. It is crucial to give credit to the originators of ideas— for ethical honesty: to acknowledge those who've enlightened you; for professional honesty: to make clear where your contributions begin; and for intellectual honesty: to allow others to read the sources for themselves and to follow up on other extensions and criticisms of that work.

When encountering a new idea or text, I often engage in a practice I call "encitation". In order to more thoroughly understand and ingrain a text's intellectual content, I try (temporarily) to view all other ideas and arguments through its lens. This is why when I was reading Whipping Girl I was citing it left and right, just as when I was reading Killing Rage I quoted it incessantly. To understand structuralism, I embraced the structuralist theory and viewed all things in structuralist terms; to understand functionalism, or Marxism, or Freudianism, or performativity, I did the same. Of course, every framework is incomplete and emphasizes certain things to the exclusion of observing others; so viewing the world entirely from within any single framework distorts your perception of reality. The point of the exercise is not to embrace the framework per se, it's to roleplay the embracing of it. The point of this roleplay is to come to understand the emphases and limitations of the framework— not abstractly but specifically. This is especially important for trying to understand frameworks you disagree with. When we disagree with things, the instinct is to discount everything they say. But it's intellectually dishonest to refuse to understand why you disagree. And it's counterproductive, since you cannot debunk the theory nor convince people to change their minds without knowing and addressing where they're coming from.

I engage in encitation not only for anthropological or philosophical ideas, I also do it for mathematical ideas. By trying to view all of mathematics through a particular idea or framework, you come to understand both what it's good at and what it cannot handle. That's one of the things I really love about the way Jason Eisner teaches NLP and declarative methods. While it's brutal to give people a framework (like PCFGs or SAT solving) and then ask them to solve a problem just barely outside of what that framework can handle, it gives you a deep understanding of exactly where and why the framework fails. This is the sort of knowledge you usually have to go out into industry and beat your head against for a while before you see it. But certain fields, like anthropology and writing, do try to teach encitation as a practice for improving oneself. I wonder how much of Jason's technique comes from his background in psychology. Regardless, this practice is one which should, imo, be used (and taught explicitly) more often in mathematics and computer science. A lot of the arguing over OO vs FP would go away if people did this. Instead, we only teach people hybridized approaches, and they fail to internalize the core philosophical goals of notions like objects, functions, types, and so on. These philosophical goals can be at odds, and even irreconcilable, but that does not make one or the other "wrong". The problem with teaching only hybridized approaches is that this irreconcilability means necessarily compromising on the full philosophical commitment to these goals. Without understanding the full philosophical goals of these different approaches, we cannot accurately discuss why sometimes one philosophy is more expedient or practical than another, and yet why that philosophy is not universally superior to others.

The thing to watch out for, whether engaging in the roleplay of encitation or giving citations for actual work, is when you start reciting quotes and texts like catechisms. Once things become a reflexive response, that's a sign that you are no longer thinking. Mantras may be good for meditation, but they are not good critical praxis. This is, no doubt, what Aoife is referring to when she castigates playing Serano says. This is also why it's so dangerous to engage with standardized narratives. The more people engage in recitations of The Narrative, the more it becomes conventionalized and stripped of whatever humanity it may once have had. Moreover, reiterating The Narrative to everyone you meet is the surest way to drive off anyone who doesn't believe in that narrative, or who believes the content but disagrees with the message. Even if I was "born this way", saying so doesn't make it any more true or any more acceptable to those who who would like Jesus to save me from myself. More to the point, saying so places undue emphasis on one very tiny aspect of the whole. I'd much rather convince people of the violent nature of gender enculturation, and get them to recognize the psychological damage that abuse causes, than get them to believe that transgender has a natal origin.

As time goes on, we ask different questions. Consequently, we end up discarding old theories and embracing new ones when the old theory cannot handle our new questions. In our tireless pursuit of the "truth", educators are often reticent to teach defunct theories because we "know" they are "wrong". The new theory is "superior" in being able to address our new questions, but we often lose track of the crucial insights of the old theory along the way. For this reason, it's often important to revive old theories in order to re-highlight those insights and to refocus on old questions which may have become relevant once more. In a way, this revitalization is similar to encitation: the goal is not to say that the old theory is "right", the goal is to understand what the theory is saying and why it's important to say those things.

But again, one must be careful. When new theories arise, practitioners of the immediately-old theory often try to derail the asking of new questions by overemphasizing the questions which gave rise to the preceding theory. This attempt to keep moribund theories on life support often fuels generational divides: the new theoreticians cannot admit to any positives of the old theory lest they undermine their own work, while the old theoreticians feel like they must defend their work against the unrelenting tide lest it be lost forever. I think this is part of why radfems have been spewing such vitriol lately. The theoretical framework of radical feminism has always excluded and marginalized trans women, sex workers, and countless others; but the framework does not justify doxxing, stalking, and harassing those women who dare refute the tenets of The Doctrine. This reactionary violence bears a striking resemblance to the violence of religious fundamentalists1. And as with the religious fundamentalists, I think the reactionary violence of radfems stems from living in a world they can no longer relate to or make sense of.

Major changes in mathematics often result in similar conflicts, though they are seldom so violent. The embracing/rejection of constructivism as a successor to classical mathematics. The embracing/rejection of category theory as an alternative to ZFC set theory. Both of these are radical changes to the philosophical foundations of mathematical thought, and both of these are highly politicized, with advocates on both sides who refuse to hear what the other side is saying. Bob Harper's ranting and railing against Haskell and lazy evaluation is much the same. Yes, having simple cost models and allowing benign side effects is important; but so is having simple semantic models and referential transparency. From where we stand now, those philosophical goals seem to be at odds. But before we can make any progress on reconciling them, we must be willing to embrace both positions long enough to understand their crucial insights and to objectively recognize where and how both fail.


[1] To be clear: I do not draw this analogy as a way of insulting radfems; only to try and make sense of their behavior. There are many religious people (even among those who follow literalist interpretations of their religious texts) who are not terrorists; so too, there are women who believe in the radfem ideology and don't support the behavior of TERFs, SWERFs, etc. It is important to recognize both halves of each community in order to make sense of either side's reactions; and it's important to try to understand the mechanism that leads to these sorts of splits. But exploring this analogy any further is off-topic for this post. Perhaps another time.

winterkoninkje: shadowcrane (clean) (Default)
2014-08-07 05:32 am

On being the "same" or "different": Introduction to Apartness

Meanwhile, back in math land... A couple-few months ago I was doing some work on apartness relations. In particular, I was looking into foundational issues, and into what an apartness-based (rather than equality-based) dependently-typed programming language would look like. Unfortunately, too many folks think "constructive mathematics" only means BHK-style intuitionistic logic— whereas constructive mathematics includes all sorts of other concepts, and they really should be better known!

So I started writing a preamble post, introducing the basic definitions and ideas behind apartnesses, and... well, I kinda got carried away. Instead of a blog post I kinda ended up with a short chapter. And then, well, panic struck. In the interests of Publish Ever, Publish Often, I thought I might as well share it: a brief introduction to apartness relations. As with my blog posts, I'm releasing it under Creative Commons Attribution-NonCommercial-NoDerivs 4.0; so feel free to share it and use it for classes. But, unlike the other columbicubiculomania files, it is not ShareAlike— since I may actually turn it into a published chapter someday. So do respect that. And if you have a book that needs some chapters on apartness relations, get in touch!

The intro goes a little something like this:


We often talk about values being "the same as" or "different from" one another. But how can we formalize these notions? In particular, how should we do so in a constructive setting?

Constructively, we lack a general axiom for double-negation elimination; therefore, every primitive notion gives rise to both strong (strictly positive) and weak (doubly-negated) propositions. Thus, from the denial of (weak) difference we can only conclude weak sameness. Consequently, in the constructive setting it is often desirable to take difference to be a primitive— so that, from the denial of strong difference we can in fact conclude strong sameness.

This ability "un-negate" sameness is the principal reason for taking difference to be one of our primitive notions. While nice in and of itself, it also causes the strong and weak notions of sameness to become logically equivalent (thm 1.4); enabling us to drop the qualifiers when discussing sameness.

But if not being different is enough to be considered the same, then do we still need sameness to be primitive? To simplify our reasoning, we may wish to have sameness be defined as the lack of difference. However, this is not without complications. Sameness has been considered a natural primitive for so long that it has accrued many additional non-propositional properties (e.g., the substitution principle). So, if we eliminate the propositional notion of primitive equality, we will need somewhere else to hang those coats.

The rest of the paper fleshes out these various ideas.

winterkoninkje: shadowcrane (clean) (Default)
2014-08-05 11:51 am

Imagine that this is not an academic debate

A followup to my previous [reddit version]:

The examples are of limited utility. The problem is not a few bad apples or a few bad words; were that the case it would be easier to address. The problem is a subtle one: it's in the tone and tenor of conversation, it's in the things not talked about, in the implicitization of assumptions, and in a decentering of the sorts of communities of engagement that Haskell was founded on.

Back in 2003 and 2005, communities like Haskell Cafe were communities of praxis. That is, we gathered because we do Haskell, and our gathering was a way to meet others who do Haskell. Our discussions were centered on this praxis and on how we could improve our own doing of Haskell. Naturally, as a place of learning it was also a place of teaching— but teaching was never the goal, teaching was a necessary means to the end of improving our own understandings of being lazy with class. The assumptions implicit in the community at the time were that Haskell was a path to explore, and an obscure one at that. It is not The Way™ by any stretch of the imagination. And being a small community it was easy to know every person in it, to converse as you would with a friend not as you would online.

Over time the tone and nature of the Cafe changed considerably. It's hard to explain the shift without overly praising the way things were before or overly condemning the shift. Whereas the Cafe used to be a place for people to encounter one another on their solitary journeys, in time it became less of a resting stop (or dare I say: cafe) and more of a meeting hall. No longer a place to meet those who do Haskell, but rather a place for a certain communal doing of Haskell. I single the Cafe out only because I have the longest history with that community, but the same overall shift has occurred everywhere I've seen. Whereas previously it was a community of praxis, now it is more a community of educationalism. In the public spaces there is more teaching of Haskell than doing of it. There's nothing wrong with teaching, but when teaching becomes the thing-being-done rather than a means to an end, it twists the message. It's no longer people asking for help and receiving personal guidance, it's offering up half-baked monad tutorials to the faceless masses. And from tutorialization it's a very short path to proselytizing and evangelizing. And this weaponization of knowledge always serves to marginalize and exclude very specific voices from the community.

One class of voices being excluded is women. To see an example of this, consider the response to Doaitse Swierstra's comment at the 2012 Haskell Symposium. Stop thinking about the comment. The comment is not the point. The point is, once the problematic nature of the comment was raised, how did the community respond? If you want a specific example, this is it. The example is not in what Swierstra said, the example is in how the Haskell community responded to being called out. If you don't recall how this went down, here's the reddit version; though it's worth pointing out that there were many other conversations outside of reddit. A very small number of people acquitted themselves well. A handful of people knew how to speak the party line but flubbed it by mansplaining, engaging in flamewars, or allowing the conversation to be derailed. And a great many people were showing their asses all over the place. Now I want you to go through and read every single comment there, including the ones below threshold. I want you to read those comments and imagine that this is not an academic debate. Imagine that this is your life. Imagine that you are the unnamed party under discussion. That your feelings are the ones everyone thinks they know so much about. That you personally are the one each commenter is accusing of overreacting. Imagine that you are a woman, that you are walking down the street in the middle of the night in an unfamiliar town after a long day of talks. It was raining earlier so the streets are wet. You're probably wearing flats, but your feet still hurt. You're tired. Perhaps you had a drink over dinner with other conference-goers, or perhaps not. Reading each comment, before going on to the next one, stop and ask yourself: would you feel safe if this commenter decided to follow you home on that darkened street? Do you feel like this person can comprehend that you are a human being on that wet street? Do you trust this person's intentions in being around you late at night? And ask yourself, when some other commenter on that thread follows you home at night and rapes you in the hotel, do you feel safe going to the comment's author to tell them what happened? Because none of this is academic. As a woman you go to conferences and this is how you are treated. And the metric of whether you can be around someone is not whether they seem interesting or smart or anything else, the metric is: do you feel safe? If you can understand anything about what this is like, then reading that thread will make you extremely uncomfortable. The problem is not that some person makes a comment. The problem is that masculinized communities are not safe for women. The problem is that certain modes of interaction are actively hostile to certain participants. The problem is finding yourself in an uncomfortable situation and knowing that noone has your back. Knowing that anyone who agrees with you will remain silent because they do not think you are worth the time and energy to bother supporting. Because that's what silence says. Silence says you are not worth it. Silence says you are not one of us. Silence says I do not think you are entirely human. And for all the upvotes and all the conversation my previous comment has sparked on twitter, irc, and elsewhere, I sure don't hear anyone here speaking up to say they got my back.

This is not a problem about women in Haskell. Women are just the go-to example, the example cis het middle-class educated able white men are used to engaging. Countless voices are excluded by the current atmosphere in Haskell communities. I know they are excluded because I personally watched them walk out the door after incidents like the one above, and I've been watching them leave for a decade. I'm in various communities for queer programmers, and many of the folks there use Haskell but none of them will come within ten feet of "official" Haskell communities. That aversion is even stronger in the transgender/genderqueer community. I personally know at least a dozen trans Haskellers, but I'm the only one who participates in the "official" Haskell community. Last fall I got hatemail from Haskellers for bringing up the violence against trans women of color on my blog, since that blog is syndicated to Planet Haskell. Again, when I brought this up, people would express their dismay in private conversations, but noone would say a damn thing in public nor even acknowledge that I had spoken. Ours has never been a great community for people of color, and when I talk to POC about Haskell I do not even consider directing them to the "official" channels. When Ken Shan gave the program chair report at the Haskell symposium last year, there was a similarly unwholesome response as with Swierstra's comment the year before. A number of people have shared their experiences in response to Ken's call, but overwhelmingly people feel like their stories of being marginalized and excluded "don't count" or "aren't enough to mention". Stop. Think about that. A lot of people are coming forward to talk about how they've been made to feel uncomfortable, and while telling those stories they feel the need to qualify. While actively explaining their own experiences of racism, sexism, heterosexism, cissexism, ablism, sanism, etc, they feel the simultaneous need to point out that these experiences are not out of the ordinary. Experiencing bigotry is so within the ordinary that people feel like they're being a bother to even mention it. This is what I'm talking about. This is what I mean when I say that there is a growing miasma in our community. This is how racism and sexism and ablism work. It's not smacking someone on the ass or using the N-word. It's a pervasive and insidious tone in the conversation, a thousand and one not-so-subtle clues about who gets to be included and who doesn't. And yes the sexual assaults and slurs and all that factor in, but that's the marzipan on top of the cake. The cake is made out of assuming someone who dresses "like a rapper" can't be a hacker. The cake is made out of assuming that "mother" and "professional" are exclusive categories. The cake is made out of well-actuallys and feigned surprise. And it works this way because this is how it avoids being called into question. So when you ask for specific examples you're missing the point. I can give examples, but doing so only contributes to the errant belief that bigotry happens in moments. Bigotry is not a moment. Bigotry is a sustained state of being that permeates one's actions and how one forms and engages with community. So knowing about that hatemail, or knowing about when I had to call someone out for sharing titty pictures on Haskell Cafe, or knowing about the formation of #nothaskell, or knowing about how tepid the response to Tim's article or Ken's report were, knowing about none of these specifics helps to engage with the actual problem.

winterkoninkje: shadowcrane (clean) (Default)
2014-08-03 10:02 pm

On my pulling away from Haskell communities

Gershom Bazerman gave some excellent advice for activism and teaching. His focus was on teaching Haskell and advocating for Haskell, but the advice is much more widely applicable and I recommend it to anyone interested in activism, social justice, or education. The piece has garnered a good deal of support on reddit— but, some people have expressed their impression that Gershom's advice is targeting a theoretical or future problem, rather than a very concrete and very contemporary one. I gave a reply there about how this is indeed a very real issue, not a wispy one out there in the distance. However, I know that a lot of people like me —i.e., the people who bear the brunt of these problems— tend to avoid reddit because it is an unsafe place for us, and I think my point is deserving of a wider audience. So I've decided to repeat it here:

This is a very real and current problem. (Regardless of whether things are less bad in Haskell communities than in other programming communities.) I used to devote a lot of energy towards teaching folks online about the ideas behind Haskell. However, over time, I've become disinclined to do so as these issues have become more prevalent. I used to commend Haskell communities for offering a safe and welcoming space, until I stopped feeling quite so safe and welcomed myself.

I do not say this to shame anyone here. I say it as an observation about why I have found myself pulling away from the Haskell community over time. It is not a deliberate act, but it is fact all the same. The thing is, if someone like me —who supports the ideology which gave rise to Haskell, who is well-educated on the issues at hand, who uses Haskell professionally, who teaches Haskell professionally, and most importantly: who takes joy in fostering understanding and in building communities— if someone like me starts instinctively pulling away, that's a problem.

There are few specific instances where I was made to feel unsafe directly, but for years there has been a growing ambiance which lets me know that I am not welcome, that I am not seen as being part of the audience. The ambiance (or should I say miasma?) is one that pervades most computer science and programming/tech communities, and things like dogmatic activism, dragon slaying, smarter-than-thou "teaching", anti-intellectualism, hyper-intellectualism, and talking over the people asking questions, are all just examples of the overarching problem of elitism and exclusion. The problem is not that I personally do not feel as welcomed as I once did, the problem is that many people do not feel welcome. The problem is not that my experience and expertise are too valuable to lose, it's that everyone's experience and expertise is too valuable to lose. The problem is not that I can't teach people anymore, it's that people need teachers and mentors and guides. And when the tenor of conversation causes mentors and guides to pull away, causes the silencing of experience and expertise, causes the exclusion and expulsion of large swaths of people, that always has an extremely detrimental impact on the community.

winterkoninkje: shadowcrane (clean) (Default)
2014-07-31 05:41 pm

New skin

Hello all,

I just changed the theme/skin for my blog and have been playing around with new fonts, css, handling of footnotes, etc. Let me know what you think and whether you run into any issues (especially on older posts). It's been years since I've done webdev, long before CSS3 and HTML5 so thing's are a bit different than I'm used to.

In other news, I haven't heard back from the Haskell Planet admins about getting the feed switched over to Haskell/coding/math content only. So, if you've been annoyed by the OT, sorry bout that!

winterkoninkje: shadowcrane (clean) (Default)
2014-07-30 05:52 am

Transitioning is a mindfuck.

[Content warning: discussion of rape culture and child abuse]

Transitioning is a mindfuck. Doesn't matter how prepared you are, how sure you are, how long and deeply you've thought about gender/sexuality issues. Outside of transitioning1 we have no way of inhabiting more than one position in any given discourse. Sure, we can understand other positions on an intellectual level, we may even sympathize with them, but we cannot empathize with what we have not ourselves experienced, and even having experienced something in the past does not mean we can continue to empathize with it in the present. Julia Serano emphasizes this epistemic limit in her books. And it's no wonder that no matter how prepared you may be, completely uprooting your sense of self and reconfiguring the way the world sees, interprets, and interacts with you is going to fundamentally alter whatever notions you had going into it all.

Since transitioning none of the major details of my identity have changed. I'm still a woman. Still feminine. Still a flaming lesbo. Still kinky, poly, and childfree. Still attracted to the same sorts of people. Still into the same sorts of fashion (though now I can finally act on that). Still interested in all the same topics, authors, and academic pursuits. And yet, despite —or perhaps because of— all this consistency, transitioning is still a mindfuck.

Read more... )
winterkoninkje: shadowcrane (clean) (Default)
2014-07-29 07:54 pm

"Is it bad to look for signs from the past?"

Someone asked recently whether it's bad to seek "signs" of being trans from the past, and why or why not. This question is one which deserves to be more widely circulated. Within trans circles a fair number of people have an understanding of the situation and it's complexity, but it's something I think non-trans circles should also be aware of— especially given the recent publicity surrounding trans lives.

The problems are twofold:

A lot of people look for signs because they're seeking some sort of validation. The problem here is that you end up misinterpreting and overanalyzing your own life in search of that validation. It's not that the past cannot provide validation for your present, it's just missing the point. What we want (more often than not) is acceptance of who we are now and recognition for our current experience. There's more to current identities, pains, and experiences than the past that gave rise to them, so validation can come from sources other than the past. Moreover, it's all too easy for people to "validate" your past while simultaneously invalidating your present, so validation from the past is not stable. Altogether, none of this is trans-specific: it's a general problem with seeking retrospective validation; and it also applies to people who've suffered abuse, experience mental illness, have changed careers, etc.

The second problem is that, in overanalyzing our pasts in search of validation, we all too often end up reinscribing "standard" trans narratives. If our pasts do not fit the "standard" narrative then we will not find the validation we seek, thus we will call our current understanding even further into question, and this sense of invalidation will only make us feel worse. If our pasts only partially fit the "standard" narrative then, in search of validation, we will highlight those memories and background the others; thus denying ourselves the full actualization of our personal history, and invalidating at least in part who we are. And if our pasts (somehow) completely fit the "standard" narrative then, in holding that history up as "proof" of our legitimacy, we end up marginalizing and invalidating everyone with different narratives. Again, this isn't a trans-specific problem (cf., "standard" narratives of gay lives or depression prior to, say, the 1970s.); though it's especially problematic for trans people because of the dearth of public awareness that our narrative tapestries are as rich and varied as cis narrative tapestries.

There's nothing wrong with seeking support for your current self from your past memories. Doing so is, imo, crucial in coming to understand, respect, and take pride in our selves. The problems of retrospection are all in the mindset with which it is pursued. We shouldn't rely on "born this way" narratives in order to justify the fact that, however we were born, we are here now and in virtue of our presence alone are worthy of respect and validation.

Fwiw, I do very much value my "signs", and often share them as amusing anecdotes— both to foster understanding, and to destabilize people's preconceived notions. But I do not seek validation in these signs; they're just collateral: symptoms of, not support for, who I am.

winterkoninkje: shadowcrane (clean) (Default)
2014-07-18 12:00 am

I Don't Hear You Talking: a silence on Silence Culture

A lot of ink has been spilt over trigger warnings lately. And I don't want to write about it because I feel like I don't have much to add to the conversation. But when I stop, that feeling nags at me. You can't think with your mouth open; and as someone who always had issues keeping her damn mouth shut, it took me a long time to learn that to listen you must be silent. ... And yet. ... And yet, when someone experiences strong emotions about her own marginalization, but feels compelled to self-silence: that's when you need to listen harder.

Because there are a lot of voices I know full well, and I don't hear them talking.

I know them because they're the voices of my friends, and among friends we talk about things we don't talk about. In the workaday world we put on our faces and never hint at the behemoths raging through our china cabinets. And when we let down our hair, those faces stay on, because you always know who might be listening. And behind closed doors, still, we keep them on because elsewise love would be too tragic. But in secret spaces, we talk. We are, every one of us, damaged. I may not know who hurt you yet, I may not know your story of pain, but I never assume there isn't one; because every single person I've known, when we get close enough, they tell me things we don't talk about. Sometimes it takes years before they feel safe enough, sometimes they never feel safe enough, but if they've ever lowered their guard to me, they've told me. Every. single. person.

We are born and raised and live in a world drenched in abuse. And that abuse doesn't leave scars, it leaves open wounds waiting to have dirt rubbed in them. The first rule of what doesn't happen is that it cannot be spoken of. So healing only happens in those secret spaces, one-on-one, in the dark of night, far far from friends and strangers alike. This privatization of healing only compounds the problem of abuse. When we cannot see past others' faces, when we cannot see the living wounds they bear, when we do not hear their daily resistance against reiterations of violence, we come to think that somehow maybe they haven't been hurt as badly as we. When we see our own people succeed, or see leaders of resistance and "survivors" and "healed" voices speaking up against the injustice of the world, we think that somehow maybe they must be stronger than us, more resilient than us, more determined than us. When we cannot witness their struggle, we think that somehow maybe when they go to bed at nights they need not take the time to scrub out that daily dirt from their wounds. And when we cannot bear that witness, we see ourselves as lesser, broken, impostors.

These are the voices I do not hear speaking out, or hear speaking in only roundabout whispers. These are the voices for whom trigger warnings are writ. As so precisely put by Aoife,

Here's something I need you to understand: the vast majority of students when 'triggered' don't write howlers to department heads or flip laptops over in crowded classrooms for YouTube counts.

On the contrary, they most often shut down and collapse into numbness.

That numbness, that collapse, is the last tool our minds have to keep our faces in place when some sudden shock reopens sore wounds. The second rule of what we do not talk about is that wounds never heal, not entirely. We —some of us— can manage not flinching when someone raises their hand. We —some of us— learn to laugh along when someone touches our back. We —some of us— learn to feel safe in a room alone with a man. We —some of us— learn to turn blind to the "tranny" jokes, to the blackface, to the jibes about trailer parks and country living, to the "sex" scene where she lay sleeping, the scene where he takes the other man 'round back, the man who slaps his wife, the mother who cuffs her child, being told to go pick a switch, to the child starving on the street, to the college kids playing "tricks" on the homeless. We —some of us— learn to live as stone. But stone don't heal, and we all have our rituals of self-care we won't talk about. But when everywhere all you ever see is stone, you know your flesh will never make it if the light still shines in your eyes.

And I too am guilty of this silence culture. Because the fact of the matter is, in this day and age, to speak is to jeopardize my career. I can talk about being trans or being a dyke, and I can at least pretend that the laws on the books will mean a damn. But if I talk about my childhood, I won't be seen as an adult. If I talk about my abuse, I won't be seen as stable. If I bring up my mental life, I won't be seen as professional. If I talk about spoons, I won't be seen as reliable. And so I stuff it down and self-silence and hide what it's like, that daily living with depression and PTSD, til some trigger sets it off and out comes that rage which grows on silence. Some full-force punch to the gut, some words like "I'm not sure suicide is ever the answer" and my eyes go black, and words come out, and they sound nice enough, but every one means "I hate you".

Not to be rude, but sometimes suicide is the answer. It may not be the best answer, but it is an answer. And, unfortunately, sometimes that is all that's required. Sometimes a terrible fucking answer is the only answer to be found.

I say this as someone who's spent more of her life being suicidal than not, as someone who's survived multiple attempts, as someone whose friends have almost invariably spent years being suicidal. Yes, it sucks. And no, it doesn't "solve" anything. But think of the suffering of the victim. It is incredibly difficult to overcome the self-preservation instinct. Profoundly difficult. Imagine the volume of suffering it takes, the depths and duration of misery required to actively overcome the single most powerful compulsion any living creature can experience. There comes a point, long after endurance has already given out, when the full weight of that volume cannot be borne.

Whenever this happens, my thoughts are always with the victim. I cannot help but empathize with that terrible terrible suffering

Because the fact of the matter is, I'm too scared to talk. We live in a culture where suicide is "the easy way" and you're supposed to "take it like a man", but the fact of the matter is noone can take it. We are, every one of us, damaged. We privatize our healing because the first rule of abuse is that it must never be mentioned, must never never be discussed. The learning of silence is the first abuse: it is how we are taught to abuse ourselves, to never never hear that we're not alone.

This isn't about suicide and depression. Isn't about rape and racism. Isn't about violence and neglect. This is about silence. About the words we don't use to not say what you can't talk about. This is about learning to speak using words. About how we must open our mouths in order to listen.

winterkoninkje: shadowcrane (clean) (Default)
2014-07-13 06:59 pm

Performativity is not performance

Although the words have superficially similar pronunciations, performativity and performance are two extremely different notions. In her book Gender Trouble (1990) and its sequel Bodies That Matter (1993), Judith Butler put forth the thesis that gender identity is performative. Over the last decade performance-based theories of gender and identity have become popular, even mainstream, despite a number of deep-seated and readily-apparent flaws. Unfortunately, these latter performance-based theories are often portrayed as successors of Butlerean performativity. They're not.[1]

To understand performativity one should go back to Austin's original definition of performative speech acts. Whenever we speak, we speak for a reason. Austin was interested in explaining these reasons— in particular, explaining the contrast between what we say and why we say it. When we ask "could you pass the salt?" we are not literally interested in whether the addressee is capable of moving the salt shaker, we're making a request. When we ask "how do you do?" or "what's up?" we do not actually want an answer, we are merely greeting someone. It is within this context of discussing the why behind what we say that Austin became interested in performative speech acts: speech acts which through their very utterance do what it is they say, or speech acts which are what it is they mean. When the right person in the right context utters "I now pronounce you married", that vocalization is in fact the pronouncement itself. To state that you pronounce something, is itself to make the proclamation. In just the same way, when under the right circumstances someone says they promise such-and-so, they just did.

There are a number of interesting details about what it means to be a performative speech act. For instance, just uttering the words is not enough: if a random stranger comes up to you and pronounces you married, that does not actually mean you're married. For the performative speech act to have any force it must be uttered in a felicitous context (e.g., the words must be spoken with the proper intent, the pronouncer of marriage must be ordained with the ability to marry people, the partners must be willing, the pairing must be of an appropriate sort according to the bigotry of the times, etc). Another detail is that performative speech acts do more than just enact what they say, they also create something: pronouncing a marriage constructs the marriage itself, declaring war brings the war into existence, giving a promise makes the promise, sentencing someone creates the sentence, etc. Because of details like these, claiming that a particular speech act is performative says a heck of a lot more than just saying the act was performed (i.e., spoken).

On the other hand, a performance is the enactment of a particular variety of artistic expression ranging from theatrical plays, to musical opuses, to religious ceremonies, to performance art, and so on. Whether a particular act is performative is independent of whether it is (a part of) a performance. Many performative speech acts are of a ceremonial nature (e.g., marriages, divorces, christenings, declarations of war, etc) and consequently we like to make a big affair of it. Thus, these particular acts tend to be both: they're performative performances. However, many other performative speech acts are executed with little fanfare: ordering food in a restaurant, apologizing, accepting apologies, resigning from a game, etc. These are all performative acts, and yet there's absolutely no need for any sort of performance behind them. Indeed we often find it humorous, or rude, or severe, when someone chooses to turn these performative acts into performances.

The distinction between performativity and performance is crucial to understanding the thesis Butler put forth. We can expand the idea of performativity to include not just speech acts, but other acts as well. Doing so, Butler's thesis is that one's identity as a particular gender is not something which exists a priori, but rather that it is constructed by the enactment —and especially the continuous ritualistic re-enactment— of performative gender actions. The specific claim being made is that one's gender identity is an artifact whose ontological existence arises from particular deeds, in the exact same way that a marriage is an artifact arising from nuptial ceremony, that a promise is an artifact arising from the swearing of a vow, that a state of war is an artifact arising from the declaration of its existence, and so on. The performative theory of gender is often paraphrased as "gender is something we do"— but this paraphrase is grossly misleading. The paraphrase elides the entire specific content of the thesis! Sure, gender is something we do, but it's something we do in very specific ways and it is in virtue of doing those things in those ways that we come to identify with our gender. That's the thesis.

As discussed before, there are some crucial issues with performativity as a theory of gender. (Though these issues can be corrected by changing the focus without giving up the crucial insight.) But the issue with performativity has nothing whatsoever to do with the fact that performances are artificial, that performances are interruptible, that performances can be altered on whimsy, that performances can be disingenuous, that performances are "only" art, etc. Those latter complaints are why performance-based theories of gender are flat out wrong. And they're evidence of why claiming that performance-based theories were built upon performative theories grossly misconceptualizes performativity.


[1] Don't take my word for it, Butler herself has continually argued that performance-based theories are a gross misinterpretation of her work (Gender Trouble, xxii–xxiv; Bodies That Matter, 125–126; "Gender as Performance: An interview with Judith Butler", 32–39; Judith Butler (by Sara Salih), 62–71).

winterkoninkje: shadowcrane (clean) (Default)
2014-07-12 11:35 pm

A Word on Words

I'd like to take this moment to point out that all forms of binarism are bad. (Including the binarist notion that all things are either "good" or "bad".) I feel like this has to be pointed out because we, every one of us, has a nasty habit: in our overzealousness to tear down one binary, we do so by reinforcing other binaries. So let me say again. All forms of binarism are bad.

It's well-known that I've had a long, fraught history with certain "feminist" communities, due to which I have heretofore disavowed that label. Because of these persistent conflicts, around ten years ago I retreated from feminist circles and communities. However, over the past year I have rejoined a number of feminist circles— or rather, I have joined womanist, black feminist, transfeminist, and queer feminist circles. And thanks to this reinvolvement with feminist activism I have come, once again, to feel a certain attachment to that word: "feminist". The attachment feels strange to me now, having disavowed it for so long in favor of "womanism", "black feminism", "transfeminism", and "queer feminism". But because of this attachment I feel, once more, the need to reclaim feminism away from those "feminist" communities whose philosophy and political methods I continue to disavow.

So, to piss everyone off once more: a manifesto. )

Edit 2014.07.13: Added footnotes [2] and [3].

winterkoninkje: shadowcrane (clean) (Default)
2014-07-11 09:42 pm
Entry tags:

#done

Holy hell, things are bad for everyone.

I've started having PTSD issues again. One of my wife's coworkers got thrown in jail for 24hrs due to a domestic violence accusation (as required by Indiana state law for every accusation with any shred of evidence). Once he got out he filed for divorce because of it, to which his wife shot their son and herself and lit the house on fire— timed at 17 minutes before he was scheduled to (and did) arrive to pick up their son. An online friend of mine was dealing with a family crisis, got dumped by her fiancée, and has been on suicide watch. And now another friend is dealing with a suicide close to her

WTF world? W. T. F?

winterkoninkje: shadowcrane (clean) (Default)
2014-07-09 09:46 pm
Entry tags:

I've forgotten how to write

I've forgotten how to write. Somewhere along the way I've forgotten how to say, what I mean. Little sticks and thistles, they burrow under your skin like dry wind and the leaves you brush from your faces. And you find yourself there, looking over, looking out, and turn to tell another how you came to this place, this pretty place, and all you find are tangled weeds and hills and where was the path where you left that friend you thought had come with you

I have half a dozen half written posts, if half written means written and my mind keeps telling me to edit to edit to go over once more, unable to let go, unable to let slip a word lest it falls all out and i somehow say what i somehow mean and someone takes offense. Offence. That word of our times, that police baton with which we beat the helpless, refuse to listen to the stories, those stories once heard we proclaim have "set us free" but we leave the authors beaten, unwilling to look at their lives lest we feel too closely the grip of that truncheon in our fist.

Half a dozen half written posts, weeks of thoughts writ out, on programs and mathematics and words and history. Thoughts I cannot set free. They haunt me, they call me beckoning to spill once again that mental blood to pore and pore over them and wring them dry of every drip of humanity so I can hang out the scraps and let others see how terribly clever i am. I never wanted to be clever, never wanted to be seen like that. I only wanted, once, to be free. From the heartache of a harrowing life, from the illusions and false idols, from my own ignorance. And now these thoughts tie me up in clever little knots, and have me writing bad poetry

winterkoninkje: shadowcrane (clean) (Default)
2014-07-01 08:34 pm
Entry tags:

Haskell Planet

Hello all,

This is just a short blurb to announce that I'm changing it so that Haskell Planet only picks up on posts tagged with haskell planet. For the next while here, I'll probably be writing about social justice, gender theory, and personal topics more often than Haskell and theoretical mathematics; so I don't want to flood the Planet with too much off-topic material.

Worry not, the pendulum will swing back again— it always does. But lately, this is where my thoughts have been focused.

winterkoninkje: shadowcrane (clean) (Default)
2014-06-27 11:19 pm

Toward a Projectivistic Theory of Gender, Identity, and Social Categorization

As discussed last time there's a deep-seated problem with performativity as a theory of social categorization. Specifically, it puts the focus on the wrong thing. That our actions are performative in nature gives us important insight into the role agency plays both in forming our own identities and in defending those identities against silencing, marginalization, oppression, and colonialism. But, by centering discussions of identity on our own personal agency we miss out on other important facets of the issue. When we say that someone belongs to a category, we do so because we've decided they belong to the category, or because we think they belong to the category. The statement that they belong to the category is not merely true (or false), we are projecting it to be true (or false). That is, we do not passively observe people's gender, race, class, etc; instead we actively project our own notions of gender, race, class, etc upon them. This projecting of beliefs onto others is called projectivism[1].

Interestingly, by localizing "truth" as the beliefs we hold to be true[2], the projective act is itself performative: by projecting something to be true, one comes to believe that it is true. And yet there is no reason to suppose these beliefs are correct (local truths need not be global truths), nor that they will agree with others' beliefs (local truths need not be true in other locales). Crucially, in the case of categorizing or identifying ourselves, we have access to our own personal thoughts, feelings, memories, subconscious inclinations, etc. Whereas, when others are categorizing us, they do not; they can only observe our bodies, our actions, and the results of our actions. Thus arises the discrepancy in cases like transgenderism. When self-identifying, we may well prize our internal observations over our externally observable state. Nevertheless, others will continue to project their categorizations upon us, regardless of our self-identification.

Not only do people project categories onto others, we do it compulsively. Our persistent and ubiquitous gendering of others is an especially powerful example, but it is in no way unique. Projecting race is another example. And in professional cultures where there are sharply contested borders between "tribes" (e.g., academia and hacker culture), projecting these "tribes" is yet another. This compulsive projectivism —or, more particularly, our unconsciousness of it— is where issues arise.

When we are not typically confronted with evidence that our projections are mistaken, our projectivism becomes almost unconscious. Once there, we fail to notice the fact that we are actively projecting and we come to believe we're passively observing truths about the world. So when our projections turn out to be mistaken, we get a feeling of betrayal, we feel like the person whose identity we were mistaken about was "lying" to us. This subsequent projection that they were "lying" stems from the fact that we mistook our earlier projections for mere observations. Thus, because of an original error on our part, we end up imputing that others are being dishonest or deceptive.

When the identity one desires to be seen as (which may differ from the identity they claim for themselves) is often or easily at odds with the identities projected upon them, they understandably become concerned about trying to avoid these projections of "lying". If one can successfully avoid projections of "lying" they are said to "pass", terminology which turns around and suggests that they were in fact lying the whole time and only managed not to get caught. This terminology is, of course, deeply problematic.

Simply acknowledging compulsive projectivism is not enough. To undo the damage caused by misgendering, racial profiling, stereotyping, and other misprojections, we must lift this knowledge up and remain consciously aware that the beliefs we project onto others are not an observation of their identities. We must denaturalize the projectivist assumption that our beliefs are others' truths, by discontinuing the use words like "passing" which rely on that assumption. And when we feel betrayed we must locate that feeling within ourselves and stop projecting it in bad faith. The performative theory highlights the positive role of agency in our lives, but agency alone is not enough. The projectivistic theory extends this to highlight the negative role of agency when used to deny or overwhelm the agency of others.


[1] I do not mean this terminology to be the same as Hume's notion of projectivism, though of course both terms have the same etymology. Hume's projectivism is popular in the ethics literature, with which I am largely unfamiliar; thus, my use of the term here is not meant to entail whatever baggage it may have accrued in that literature.

[2] While it is not usually presented as such, Austin's original definition of performative speech acts should also only hold up to localized truth. In the classical example "I now pronounce you married", by saying the words one does the deed of pronouncing the couple to be married. However, the pronouncement of marriage does not cause the couple to be married in a universal sense; it only causes them to be married in the current jurisdiction, and a different jurisdiction may or may not recognize that marriage as valid. Because the marriage must be localized, therefore the pronouncement of marriage must be localized: one can't pronounce a couple to be married (everywhere), they can only pronounce them to be married (here, or there, or wherever). Thus, the deed performed by the utterance of the words is a localized deed: the pronouncement of a localized wedding.