Sound & Color Toy

I actually made this a little while back, while watching AGDQ 2014:

When you click on one of the squares, it generates a tone based on the color. Hues map to notes on two octaves of a pentatonic scale, lightness corresponds to volume, and saturation to duration. It also blends the color you clicked on into the colors of the adjacent (non-diagonal) squares, so it’s impossible to play this “instrument” without irrevocably changing it.

I wanted to learn a bit of the Web Audio API, and while it’s a bit low-level, it’s not too hard to deal with for making simple notes like this.

Web Audio still has vendor prefixes hanging around, so if the spec evolves this code could become obsolete. An “oscillator” produces a wave, and “gain” lets you adjust the volume. So you’re kind of creating these components & imagining how you would have to physically connect them for it to work. Make an oscillator, connect it to the gain, connect the gain to the context.destination which you can kind of think of as the final output or speakers. If you did it the other way around, if the API let you (I haven’t tried), it wouldn’t work: you’d have a gain node changing the gain of nothing, then an oscillator, then the output. It’s not just “combine these things together to make the resulting sound,” the ordering matters. For folks who have done electronic audio stuff before this is probably not at all a surprise, but to me it was less obvious at first.

oscillator.type  could be sine, square, sawtooth, triangle, or “custom”, the latter of which both fascinates and terrifies me.

With that out of the way, playing notes based on color properties is easy, with a little assistance from jQuery.

From here, I think it’d be fun to make a simple music sequencer, but I’d have to learn more about how such a thing even works.

Transforming Handlebars

I’m in the process of shifting an application from server-side JSP templating to a JavaScript templating library. It’s a big ugly process, but a single-page app with a RESTful backend will be vastly easier to maintain than what I’ve got on my hands currently. But although just moving the templating & HTML generation over to the client will have benefits, if my JavaScript templates are as messy and unreadable as the JSP ones were, I can do better. Looking at the JavaScript templating libraries that are available, for the most part the templates themselves don’t look much different at all from the old server-side templating systems. For relatively simple views this isn’t really an issue, but when you start to put if/else tags in, especially when they start to get nested, or require you to stick conditions in there that are more complex than “is this attribute truthy/falsy”… it can get a little bit hard to follow, especially since you end up mixing HTML indentation and control structure indentation to the detriment of readability.

I realized that although the if/else logic in my existing JSP templates was fairly simple, I still had a much easier time wrapping my head around what’s happening and what combinations of HTML need to be generated in different situations by thinking of it in a slightly different way. I thought of the most generic possible template, with a series of transformations applied to it, each based on one condition, resulting in the final template to be filled with my model data & rendered. So I decided to implement such a system as an addon to Handlebars.js, the templating engine I decided on. Handlebars already encourages loading templates from the page like so:

So I decided to do a similar thing with transformation definitions:

What this is saying, is “if hasAuthor is true, change {{*author_info}} into {{}}{{*featured}}, if hasAuthor is false, change {{*author_info}} into Unknown Author,” and so on. The transformation rules will be applied in the order they appear in the script, so as you can see if hasAuthor is true, then it puts {{*popular}} into the working template, which can then be changed by a later rule in the same script or even by a totally different transformation script applied after this one. When you compile a template, any unused {{*}} tags are stripped out, so you don’t need a ! rule for items where you only want to conditionally include something or not, rather than choose between two different things to include. So, for example, using the template and transform above:

This results in:

There are downsides, of course – a template with the standard if/else tags can be compiled, whereas with this you’re basically defining many templates and you won’t know which one to apply until runtime. You could ameliorate this by precompiling each possible variation & writing some code to look up the one you want. This is just my first iteration on the idea, I’m sure there’s a lot that could be improved about it. But in any case it was fun to think about. I also put in code to use Handlebars in an OO-ish fashion, like so:

You can find the code on GitHub here.

Homemade Hot Sauce!

I love spicy food, and I love making food, so it was only a matter of time! Since this was my first attempt at making hot sauce, I’m going purely off of recipes & suggestions I found online. Now that I’ve made it, I can think about making my own changes for next time, so I’m looking forward to that. :D



  • 4-5 dried Bhut Jolokia (Ghost Peppers) – fresh would work also, but dried is what they have at my local grocery
  • 6 habanero peppers
  • 1 (15.5 oz) can sliced peaches in light syrup
  • 1/4 cup dark brown sugar
  • 1/4 cup honey
  • 1 cup distilled white vinegar
  • 2 tbsp salt
  • 2 tbsp paprika
  • 1 tbsp black pepper
  • 1 tbsp ground cumin
  • 1/2 tsp ground coriander
  • 1/2 tsp ground ginger
  • 1/2 tsp ground allspice

Sliced habaneros

The most time-consuming part was seeding and slicing the habaneros. I could’ve left in the seeds, but I left in all the Bhut Jolokia seeds, so I decided to take these ones out. After this, I chopped them and chopped the Bhut Jolokia.

Everything in the food processor

After the chopping, the last step is simple: Put it all in the food processor & liquefy!

Two pints of hot sauce!

All done! This recipe yields about two pints. The dark brown sugar, golden honey, orange habaneros, and dried ghost peppers all together make it a lovely deep brownish-red color. Now I just have to refrigerate it overnight and it’ll be ready for use! I sampled a tiny bit and it tastes quite good – a balance between heat, sweet, pepper, and vinegary flavors. In the future I’m interested in trying different peppers like Scotch Bonnet (though I’d have to order them from the internet), and a different fruit instead of peaches.

“I Always Knew”

I remember the first RPG campaign I ran. It was around 2002 or 2003. I was at college, and I had only been introduced to tabletop RPGs the year before, since my parents didn’t approve of them. We chose Star Wars, since a friend had the books and I had some familiarity with the source material. I was quite nervous, GMing my first game when I had so little experience with the format even as a player. So I did something that is generally frowned upon: I made a “GM PC”. I didn’t say it was, but I needed a hook to get the players into the story, and I didn’t have a clever idea. So I created a character who I could use to create a situation that would compel the players to rush in and help her.


I didn’t think I was trans. I barely even knew that it was possible to be trans. I’d successfully been kept in a bubble of ignorance, to the point that even my secret sexual attraction to men caused me great shame. Yet, as soon as I was introduced to RPGs, I thought, “Gosh, it might be cool to play as a girl.” I knew right away that I could never do so as a player. What was I going to do? I had been trained to live in fear of my own impulses and do everything I could to ensure I demonstrated sufficient masculinity. I was never terribly successful at it, being autistic and not really ‘getting’ normative social behavior at all. But I tried, because as a survivor of bullying and emotional abuse, I knew too well the consequences of other people’s disapproval of my behavior.

Running a game provided the answer. I wasn’t “playing as a girl,” I was GMing, and she was just an NPC I came up with for the story. It instantly felt better than any social interaction I’d ever had before in my life. It was effortless. It made sense. The other two players, both men playing men, played their characters as fighting for her affections, and I screamed internally like I’d just witnessed something unspeakably magnificent and terrifying. I still didn’t stop and examine my feelings, but I sensed that there was more to it than anxiety about being judged. It was a fear of them discovering something flickering to life deep inside of me.

It might seem like a paradox, to feel palpable anxiety that your friends will discover a secret that you yourself don’t know. But knowledge that can’t yet be articulated is still knowledge. You may not be able to speak it yet. You may not have learned yet how to radiate it from where it lives in your bones through your skin and to your surroundings. It may not be in a form codified and accepted by the narratives other people try to write on you, but that is because that language you need to finally articulate it is necessarily your language, not theirs. This is why silencing is violence. It’s not just about not being allowed input to the privileged world’s discourse. It’s about erasing identities and sabotaging individual autonomy.

I struggled with this in the early days of realizing my womanhood. “This can’t be – I didn’t know when I was supposed to have known! I never wanted to be a girl or wear dresses at age 6!” At age 23, all the evidence I needed was finally right in front of me, and the language was there. I only had to claim it and speak, but still I was frustrated by my cissexist conditioning. Not coincidentally, this next step in my awakening after that character at college also happened in a roleplaying game – this time online. I was in the military, with more pressure than ever to conform to a tortuous, toxic standard of masculine performance. Now, one might expect that an MMO would be a similar space of hegemonic male domination, and in most guilds (not to mention in General/Trade chats) that would be accurate. My guild was different, though – a group founded on principles of kindness, generosity, and fair play. For that, it attracted a number of women gamers.

I returned to my quarters each day, removed my fatigues, logged on, and let the tension and frustration melt away for a few precious hours. (I had a dorm room to myself because I chose the most “cushy” of the branches.) Without even thinking about it, I let myself be myself. These people couldn’t see or hear me, they had no idea who I was, and it was text-based communication rather than verbal – all factors that let me show more of my authentic self than I’d ever done before. What happened next was the turning point of my entire life. I was having a ball and giving one of my fellow Hunters a little bit of a jesting hard time in the class chat channel during a raid, and he chuckled and shot back, “Watch it, girl.”

Stunned. Frozen. Jaw on floor. It felt so right.

In being discovered, I discovered myself. First, though, I fought it. I struggled for weeks over whether to “correct” him, until it felt too late to do so anymore. I was committed through inaction to being a girl in the game. Whether it was a dangerous deception, as internalized transmisogyny tried to persuade me, or the most profound truth I’d ever experienced was the conflict I played out in my mind obsessively. The result was inevitable. I hadn’t known, but I knew. I knew it back at college. I knew it even before that, when puberty hit and those same, as-yet-inscrutable feelings of pain, confusion, and longing formed around me like a cloud. And when I finally had a space to show myself to others free of being categorized and judged based on how I looked and sounded, they all knew it too.

If there’s one thing I could say to all the people out there in those early days, questioning, it’s this: Trust yourself. Trust your emotional knowledge. It’s far more valuable than most things that’ve been put into your head.

The Othering Illusion of Unity

The “trans*scribe” feature at Autostraddle has blown up, as many of us expected it to. Unsurprisingly, it was over the dating issue and the transmisogyny rampant amongst cis lesbians. What rankles me most about this fracas is not simply that it happened. It’s that it happened under the oversight of the staff who organized trans*scribe as a move to fix this very problem, and the only action taken in response was the founder tone policing trans women and our allies. Now, their intentions in calling for articles by trans women may have been perfectly pure. But their response to the shitstorm that ensued in the comments reveals the transmisogyny and tokenism underlying their actions.

Essentially, they want to have their cake and eat it too: bring in trans women and get credit for being Allies by doing so, and keep everyone who’s in the community already. This is an impossible scenario. It’s clearly impossible: you can’t have trans dykes and radscummy dykes in the same space without bitter conflict and fracturing. Transmisogynist bigots will always fight to keep trans women out of women’s spaces at the very least, and fight to exterminate us at worst. Trans women will always defend ourselves. The difference is that the transmisogynists are already in the clubhouse, and nobody wants to kick them out.

That’s the illusion of unity. There’s a perception that there’s this Queer Women’s Community that currently exists as a whole entity, and transmisogynist cis women are part of it (because it is implicitly constituted of all queer cis women), whereas trans women are an Other entity asking to be annexed rather than natural and rightful members who’ve been shut out. The editors at Autostraddle may mean well in tentatively taking a step towards that “annexation”, but their actions say that they are still unwilling to “divide” the community by alienating the transmisogynists amongst them.

The right thing to do, of course, would be to recognize that trans women are a natural and rightful part of the queer women’s community, that we always have been, and that the civil rights movement that cis queer women have benefited from owes everything to trans women of color in the first place. The right thing to do is to say, “if you support excluding any group of queer women, you are not welcome here.” But to take a moral stand, to upset that precious illusory unity of cis queer women, to rock the boat and push out even a single cis woman for the sake of bringing trans women in, is apparently impolitic.

It’s past due for those in leadership positions of queer women’s spaces to realize this: Not alienating trans women means intentionally and vociferously alienating transmisogynist cis women. There’s no balancing act possible between hate and human dignity. There’s no way not to upset anyone, and no way to avoid losing people from the community. Disagreeing with trans women when we tell you what transmisogyny is is not under any circumstances “good faith.” If you genuinely care about fixing your transmisogyny problem rather than tokenizing us with the left hand whilst continuing to kowtow to the worst of the bigots with the right, then you must make that decision 100% and follow through on it.

That’s what’s missing at Autostraddle. When they start caring more about the harm done by excluding a vulnerable minority group of women than about causing a rift with unapologetically transmisogynist lesbians, then, and only then, will the intentions behind trans*scribe come to meaningful fruition.

UPDATE: Well look what we have here, a steaming pile of transmisogyny, just posted on Autostraddle. Clearly they are not actually interested in fixing the problem if they don’t see the glaring hypocrisy in acting like they want to include trans women while at the same time signal boosting CAFAB trans privilege.

The Laughable Faux-Superiority of Movement Skepticism

There’s an attitude I’ve often heard expressed amongst outspoken atheists and skeptics as a reason why they’re skeptics. It goes like this:

  1. Your beliefs inform your actions.
  2. Therefore, your beliefs matter, because your actions have consequences.
  3. Beliefs that are more consistent with reality will tend to have better consequences.
  4. Magical thinking is not based in reality whatsoever.
  5. Thus magical thinking will result in worse or more unpredictable consequences.
  6. Magical thinking cannot be permitted in an ideal worldview, and constitutes an inherent danger to yourself and others.
  7. Pure, logical, rational skepticism is what we should strive for, both in ourselves and writ large in society.

If this is in fact true, and if skeptics who think this truly adhere to it, then we should expect that skeptics’ beliefs will in general be more concordant with reality and less harmful than religious people’s beliefs. We should also expect that skeptics will be as strict in applying the principles of rationalism and logical thought to themselves as they are to believers.

The evidence does not bear this out. The atheist/skeptic community is dominated by white, cisgender men who rail on about special pleading and the irrational blind spot they say the theists have for their god(s), but they continually demonstrate an enormous irrational blind spot for their toxic, racist (trans)misogyny and imperialism. Richard Dawkins and everyone who supports him have no leg to stand on in criticising religious leaders who spread hate for as long as they are spreading it themselves.

This isn’t about painting all atheists with the same brush based on the actions of some. That goes both ways, and a large and vocal subset of atheists have been doing exactly that to the religious since the movement got started. Don’t even think about pulling a No True Scotsman fallacy—you are a rational thinker, so you claim—and clean up your own backyard if you don’t like complaints that it’s an eyesore.

In the end, it’s hypocrisy on a grand scale, it’s self-serving, it’s destructive, and even amongst well-meaning skeptics it’s a case of misplaced priorities. Skeptics like pointing to cases where children die because their parents prayed for them instead of taking them to the doctor as an example of the harm of holding irrational beliefs. Yet when POC are starving and dying from U.S. state violence and corporate exploitation, when women’s rights are under attack, when trans women are facing sky-high unemployment due to 100% legal discrimination…not only does that not concern them as much, a large proportion of them are actively cheering it on.

So tell me again how being a skeptic inherently leads to better, more humane, less harmful views that have greater fidelity to actual reality, and religion inherently leads one astray from that. Tell me again how a skeptical society is necessarily so much healthier than a religious society. It’s not that simple, and I’ll take the company of believers any day over MRAtheists who are such good skeptics they’re even skeptical of my humanity.

Personally? If you’re a believer and you’re not trying to governmentally enforce your religious beliefs onto me? I don’t care any longer. I can’t accept that it’s the one and only proper way of acquiring knowledge in the face of all these skeptics being just as dangerously ignorant as they claim others are. I’m all for you believing in whatever superstitions you want. If you’d like to join me in fighting kyriarchy, all the better. That’s what’s important, and I don’t need to cite an argument for the superiority of skeptical thought to denounce harmful acts by Western religious authorities.

Fallon Fox and Disclosure

The world’s first out trans MMA fighter, Fallon Fox, came out recently, and the dialogue in the media is disappointingly familiar. She won her first two fights in the first round, and the second of those opponents is appealing the loss. That fighter, Ericka Newsome, along with her manager, are claiming it was “unfair” that they didn’t know Fox is trans. Said Newsome, “I feel that it should have been disclosed to me ahead of time…so we are aware and able to be better prepared for the situation.” Absent is any explanation of how exactly it’s unfair or how it makes any sense to prepare differently for fighting a trans woman. She also stated that it “didn’t matter” that Fox fought her and that she would love to have a rematch.

So what is the issue then? It’s the same old disclosure tune that trans women face in dating, only in a different key. Fox has been on HRT for at least two years—fully complying with MMA guidelines for trans competitors—and thus has no physical advantage, and they know that. They’re not contesting the loss on grounds of an actual unfair advantage; it’s simply “we didn’t know you were trans.” Whether in terms of romance, sex, athletic competition, or anything else, trans womens’ bodies are considered existential threats based on some assumed property of inherent lingering maleness. And unless we walk around with a big foam hat with a red arrow that says “TRANS WOMAN RIGHT HERE”, it’s unfair to cis people because then how else will they know where to aim their bigotry? They can’t very well be expected to uphold transmisogyny if we don’t tell them who we are so they know who to apply it to and who not to!

Never mind that transmisogyny’s requirement to be practiced in that way fundamentally undermines its own premises.

Hence, it’s perfectly okay that Fallon Fox competes with women in MMA and Newsome is up for a rematch but as long as she knows that Fox is trans so she can treat her properly.

Just like cis people saying they’re totally okay with me being trans and that I’m welcome in their spaces but if I don’t disclose I’m “not telling the whole truth,” to quote an ex-friend of mine.

Either you actually accept us as who we are, or you don’t. Cut it out with this strategically contradictory weasel nonsense. We see right through you anyway.