Log in

entries friends calendar profile Elf Sternberg's Pendorwright Projects Previous Previous
Elf M. Sternberg
This morning, the AM 1590 Right Wing talker was a woman I'd never heard from before, and her solution to racism in America was simple. "More black people need to vote for Republicans. That's why there's so much divide in this country. If minorities only vote for one party, of course the other party is going to react, and that creates a cycle that leads to racism."

Maybe, just maybe, the problem is that the Republican party doesn't want to look like actually-existing America, but would like to turn (you can't really say "return") to a fantasy world where America looked more like the GOP.


Current Mood: amused amused

1 comment or Leave a comment
Now that I've talked about the non-social causes of sexual orientation in children and teens, and how the right wing is using a well-funded think-tank paper with no peer review and no vetting by third-party social scientists to beat up on queer youth, I actually want to talk about the other issue in Todd Herman's rant. Herman makes a huge deal out of the fluidity of sexual orientation. Without saying so, he wants his audience to believe that queer kids can be made to grow up to be straight adults.

He wants his audience to believe it's "leftists" who fund Gay Straight Alliances and teach school counsellors and sue for Title IX acceptance of trans kids on schools, and all of that is making more and more kids reconsider their heterosexuality.

I'm here to tell him that he's correct.

For many people, sexual orientation is highly fluid and remains so. Here's the secret: we've known this for a long, long time. I reached my majority in the mid-80s and collected all the queer and kinky samizdat I could get my hands on. And the open secret is that we all knew. We knew then, we know now: There are lots more people who would openly explore homoerotic experiences and non-traditional sexual expression if the shackles of traditional gender roles were removed.

At which point, of course, the right wing quotes Chesterson:
There is the modern type of reformer who goes gaily up a gate and says, "I don’t see the use of this; let us clear it away." To which the more intelligent type of reformer will do well to answer: "If you don’t see the use of it, I certainly won’t let you clear it away. Go away and think. Then, when you can come back and tell me that you do see the use of it, I may allow you to destroy it."
The problem with this quote is that we do know why the gate is there.

Unplanned pregnancy and the threat of disease are technological barriers; we have found our way to manage both of these most of the time. Prior to the 20th century, they were managed by controlling the whole human being, often violently. Fear of this violence coincided nicely (at least for those in power) with ensuring the integrity of one's family.

Fear sucks. Fear of disease, fear of unplanned pregancy, fear of violent reprisal for not being heteronormative, these are not moral values. Morals are only worthwhile when they are held positively, and the queer moral state is one of commitment and responsibility: life without commitment, life without responsibility, life without honoring the work the world has brought us, is empty of meaning, insignificant and debased.

We knew. We knew this would happen. The conservatives were right all along: there was indeed a worldwide queer conspiracy to normalize romantic attraction without prostrating ourselves to the twin poles of absolute masculinity and absolute femininity. Masculine and feminine are simply descriptions; they hold little moral value in and of themselves. Commitment and love have moral value.

Where Herman sees a chance to drive home a wedge, I see a promise where one sex is not empowered over the other, and where, for those so inclined, features other than the hardware between one's legs dictates the conscience to decide who is worthy to share in our physical affection.

Tags: , ,
Current Mood: amused amused
Current Music: Dot Bustelo, Twilight Blue

Leave a comment
It's a little amazing where we are right now. Let's go to Neal Stephenson, shall we?
"Because they were hypocrites the Victorians were despised in the late twentieth century. Many of the persons who held such opinions were, of course, guilty of the most nefandous conduct themselves, and yet saw no paradox in holding such views because they were not hypocrites themselves-they took no moral stances and lived by none."

"So they were morally superior to the Victorians-" Major Napier said, still a bit snowed under. "-even though-in fact, because-they had no morals at all." There was a moment of silent, bewildered head-shaking around the copper table.

"In the late-twentieth-century Weltanschauung, a hypocrite was someone who espoused high moral views as part of a planned campaign of deception-he never held these beliefs sincerely and routinely violated them in privacy. Of course, most hypocrites are not like that. Most of the time it's a spirit-is-willing, flesh-is-weak sort of thing."

"That we occasionally violate our own stated moral code," Major Napier said, working it through, "does not imply that we are insincere in espousing that code."

"Of course not," Finkle-McGraw said. "It's perfectly obvious, really. No one ever said that it was easy to hew to a strict code of conduct."
(Stephenson, Neal, The Diamond Age, ppgs. 205-206) That's pretty much my view on hypocrisy; what most people mean when they use the word "hypocrisy" is much more like cynicism: a belief that everything someone else does is motivated by a short-sighted, narcissistic and selfish egotism, and any claims to moral high ground are in service to feeding that egotism.

What's astonishing is how often Stephenson's little exposition is used by conservatives as a cudgel against liberals. Conservatives point to their Bibles and claim to have morals, and then fail to live up to the most fundamental standards put forward by Jesus. They quote him when he quotes Deuteronomy 15, then fail to live up the high standards of welfare and financial management God put out for the State (yes, the State) of Israel, and then they do everything they can to subvert those standards.

Which is why Fred Clark's disquisition on the phrase "SJW" is so insightful today. "SJW" isn't sarcastic; it's merely mocking. It doesn't matter whether the target is engaged in mere performative allyship or has actually gotten the beat-down for asserting the human worth of others; the speaker means to use it as an epithet. People who use "SJW" won't allow themselves to be questioned. We saw this just last week with Trump's running mate Mike Pence, who when asked if being a member of the Ku Klux Klan was "deplorable," said "Our campaign is not in the business of namecalling!"

Clark ends:
The problem is more that they can’t admit that justice is meaningful because to acknowledge the meaning of justice is always to be judged.

And that, above all, is what they can't stand. That is what infuriates them and offends them — the prospect of being judged, being assessed according to any standard not in their immediate control. This is reflected in their tendency to make any form of award or public recognition — Hugos or Oscars or box office sales or elections — a focal point of their spite. And it's why their epithet of choice — "SJW" — is not just an insult directed at others with whom they disagree, but a rejection of any standard by which such disagreements might be adjudicated.
Indeed. The refusal to engage in the conversation is a firewall against judgment. Once you make the first tiny step towards allowing judgment, the whole edifice of privilege comes tumbling down. They know it. This is one of, sadly, many last gasps we as a nation and civilization will be dealing with, an ugly one because the gaspers are organized and decentralized by the organized decentralization of the Internet.

It's gonna get ugly.

Tags: ,
Current Mood: thoughtful thoughtful
Current Music: Jesper Kyd, Pandora Peak

2 comments or Leave a comment
I tracked down that "Sexual Left" speaker, Todd Herman, and discovered that he had gone into some detail about his argument, but let's just say that he's materially wrong on some particulars, and morally wrong overall.

Herman points to a "John Hopkins Study" meta-review of "over 200 peer-reviewed studies looking at sexual orientation and gender identity," one that concludes that sexual orientation is fluid in adolescence and becomes less so as one gets older; the hope here is that with early intervention one can be, I guess, oriented "correctly," as the right would wish it.

His study claims that queer folk are more likely to have been abused as children, and are more likely to commit suicide, and that for "the left" to perpetuate a sexual identity that is so obviously damaging is "savage," and the left deserves to be labeled as such. He says "This is not about people being gay. The sexual left simply wants to use you as pawns," but if orientation is so fluid, and a queer orientation so damaging that it requires correction, then this is exactly about people being gay— and trying to stop them from being gay.

Let's start with the basics. The report is called Sexuality and Gender, was sponsored by The New Atlantis, an ivory tower of theologically-inspired right-wing thought. (I last tussled with a New Atlantis piece when they published a high-minded article worrying about how eliminating all disease would deprive people of the "edifying" experience of watching their children sicken and die.) The paper was not peer-reviewed, which means that any conclusions that it reaches were not vetted by an audience.

Todd Herman is wrong about what the paper says. The paper never describes how the fluidity of sexual orientation may be manipulated to ensure a heterosexual identity in post-adolescence. In fact, it says the possibility of such manipulation may be impossible, but that doesn't mean researchers should stop trying, and this being the New Atlantis, it strongly discourages people from encouraging or validating non-heterosexual identification until that research is done.

The report that sexual minorities experience abuse at higher rates than straight peers has three problems with it: (1) it's a matter of self-reporting, and queer communities have a stronger tradition of speaking out than straight ones; (2) it's acausal, so we have no idea if abuse might cause some people to be queer, or if a queer presentation in youth might encourage abuse; (3) it says absolutely nothing about the vast majority of queer people who never experienced abuse as a minor.

If you want a well-vetted, well-respected, well-cited version of this paper, Bailey, Vasey, et. al. Sexual Orientation, Controversy and Science is a much better paper that states "there is considerably more evidence supporting nonsocial causes of sexual orientation than social causes" and that
This evidence includes the cross-culturally robust finding that adult homosexuality is strongly related to childhood gender nonconformity; moderate genetic influences demonstrated in well-sampled twin studies; the cross-culturally robust fraternal-birth-order effect on male sexual orientation. In contrast, evidence for the most commonly hypothesized social causes of homosexuality—sexual recruitment by homosexual adults, patterns of disordered parenting, or the influence of homosexual parents—is generally weak in magnitude and distorted by numerous confounding factors.

Herman is trying to make politics out of biology, but we have to remember his audience. He's not really trying to pry queer people away from their generally leftist bent; he's giving his alt-right audience the red meat they crave (and sexual orientation and its moral worth is an alt-right issue, just as much as melanin production is somehow also indicative of moral worth). Gay people need to be "loved" until they change, and if they won't change, they need to be demonized as unreasonable and unAmerican.

Tags: , , , ,
Current Mood: amused amused

1 comment or Leave a comment
This morning on the ten-minute drive to the P&R, I flipped through the right wing radio stations, and I stopped on one and heard the phrase "Leftist sexual anarchy pimps." I had to stop. The host went on:
These people, these people, they get their hooks into the gays and into people whose life experiences lead them to believe they might be transgender, and they promise them things. "We'll get you gay marriage," they say, "But in return, you have to give us something. You have to support us on our issues, like Planned Parenthood, and gun control, and Marxism." That's what the sexual left does. They use vulnerable people without ever giving them a chance to make their own decisions.
There's a special hilarity in the right wing meme that gay people are not somehow already fully woke to the greater political issues surrounding them. The gay community's association with progressive policies has nothing to do with a blind tit-for-tat and everything to do with the essential nature of the gay community— a nature moulded in part by the very right wing trying to tempt them out of their liberality.

The history of American homosexuality after WW2 is urbane: the cities were where gay people moved to, where they find a community, where they found work and love and friendship and everything else. Without the Internet, the only way to be gay was to move to a city, preferably a bigger one, one where the webs of information were dense and the chance of picking out a strand about you and your wants and needs was much higher.

I can't speak for rural communities; I've only one, and that only briefly. But in cities, we know something: we know more guns, more death. The evidence on this is incontrovertible, and the Harvard School of Public Health has done a yeoman's job of assembling the evidence in the face of enormous Congressional pressure to ignore the problem. Under the enormous pressure of ongoing familial and societal pressure, queer people experience depression and commit suicide much more often than straights; a gun in the home increases the likelihood of successfully carrying through on a suicidal impulse by a factor of 30!. The vast majority of gay people are for gun control because widespread availability of guns is killing the gay community much faster than the straight community.

Planned Parenthood is another canard. For the right, Planned Parenthood equals "abortion," which is all they know, and all they believe they need to know. But for people who actually live in cities, Planned Parenthood's clinical visits are 3% abortion. The rest is sexual health and family planning: contraception, cancer screening, sexually transmitted infection detection and treatment. Of course the gay community supports Planned Parenthood: the war against Planned Parenthood is another tactic in the right's war to kill gay people.

Marxism? Shit, not even Marxists believe in Marx's prescriptions any more. As for his diagnosis? Well, spot fucking on.

Tags: , ,
Current Mood: amused amused

Leave a comment
I smell like beer.

After dinner I went to get a can of beer out of a six-pack, a 21st Amendment "Hell Or High Watermelon," a great-tasting summer beer. I turned around to get a glass and wasn't paying much attention, and my hand with the can glanced off the counter. The counter was rounded. A tiny tear erupted in the middle of the can and beer went everywhere. It went all over the floor, all over the window over the sink, on the goddamn ceiling, into my face and all over my clothes.

There was nothing sharp to cut it! I've just spent the last half hour cleaning up the kitchen. And it probably still smells like beer.

That was the last can, too.

Current Mood: annoyed annoyed

3 comments or Leave a comment

I can’t remember where I found it, but there was a brilliant explanation of how functional code maps value. Remember, in a functional program, the basic notation is x → y, that is, for every function, it maps value x to another value y. Things like map() map an array to another array, while reduce() maps a single thing (an array) to another single thing (a value). How does functional programming encode other things?

Well, there’s

x → y

x is mapped to y

x → y∪E

x is mapped to y or Error (Maybe)

x → P(y)

x is mapped to all possible values of y (Random Number Generators)

x → (S -> y ⨯ S)

x is mapped to a function that takes a state and returns a value and a new state (State)

x → Σy

x is mapped to the set of all real-world consequences (IO)

The other day I realized that there’s one missing from this list:

x → ♢y

x is mapped to y eventually (Promises)

I’m not sure what to do with this knowledge, but it’s fun to realize I actually knew one more thing than my teacher.  Note that the first case, x → y, really does cover all sum (union) and product (struct) types, which tells me that the ML-style languages’ internal type discrimination features are orthogonal to their encapsulation of non-linear mappings.

The really weird thing is to realize that the last four are all order-dependent.  They’re all about making sure things happen in the correct sorted order (and temporal order, if that matters).  That leads me to think more about compiler design…

Leave a comment
Andrea Goulet is giving me an existential crisis. The CEO of a software development consultation shop, she recently wrote an article called Menders vs. Makers, and something happened this week that makes me think, maybe I'm in the wrong line of work. I'm starting to suspect I'm a mender in a business that only values makers.

This week, I was working on a code base that provided a hierarchical tag editor for an inventory system. I had recently added a new feature that made it possible to see individual elements of the tag system on the Collection page; you not longer had to go visit a single object to see if it had, for example, a location tag; you could just say on the Collection page, "Show me all the objects that have a location tag, and add a new column, location."

Now that we were able to see the tags, a new problem was found: it wasn't possible to delete tags. Odd nobody had noticed that before. Since I was the last person in that code base, it was my duty to fix it. Down into the legacy code I went.

The tagging code was, well, intermingled. Validating the tags, determining the changes between the version on the client and the version on the server, writing those changes back, were all in a single gigantic Backbone sync method involving empty arrays, for loops, and concat methods. I spent about four hours, during which I:

  • Replaced all for loops with map / reduce / filter

  • Separated the model validation into its own method

  • Used underscores's intersection / union / difference functions to create instruction sets for deleting and adding to the tag system

  • Used Backbone's set([_], (void 0), {unset: true}) method to delete the tags, rather than hammer the event bus with a series of change events in a each loop.

. I struggled a lot to make sure I was using names that explained what each thing did.

In short, I did with my code what I did with my writing: try to make every line a pleasure to read, something that told a story about what was happening and what was going to happen next. I hope when someone sees overlappingTags = _.intersection(newTags, restrictedTagNames), it's obvious what's happening, and it should create anticipation that soon there will be a line that checks to see if overlappingTags has anything in it and, if it does, reports an error with the offending tags.

I've always had fun doing stuff like that, turning unreadable mash into clarity. Even my recent bragging project, Polyloader, is actually a fix for the "All Python on the filesystem ends in .py" bug that sorta firewalls.

I've found this industry doesn't really like menders. Code editors, people who go in after the fact and apply measures both aesthetic and qualitative to the code they see, are often seen as nothing but agency overhead by managers.

On the other hand, I've yet to meet another developer who resented menders. They like menders; they want to learn from menders how make code better. Menders tend to be older, tend to know more, tend to be broadly learned and strongly opinionated. Nothing "just gets thrown there." It has to be fixed, it has to work, it has to be right. And I've yet to meet a software developer who didn't want to get it right. Often, they just don't know how, or nobody's ever told them how.

Let's show them how.
2 comments or Leave a comment

Sometimes it’s a little hilarious to read the back-and-forth of academics. My favorite is this exchange from Roman R. Redziejowski and Brian Ford over packrat parsing. Redziejowski writes

PEG is not good as a language specification tool. The most basic property of a specification is that one can clearly see what it specifies. And this is, unfortunately, not true for PEG.

To which Ford responds,

Such permissiveness can create unexpected syntactic subtleties, of course, and caution and good taste are in order: a powerful syntax description paradigm also means more rope for the careless language designer to hang himself with.

No points for complaining that Ford ends his sentence with a preposition.

This exchange highlights an issue in the programming language community that stands out for me. There’s a debate raging between two camps, with Google Go at one pole and Haskell at the other. Google Go is fundamentally an ugly language, one the designers admit up front is meant to make mediocre programmers productive, to constrain them from hurting themselves while making them capable of producing working code. And while it’s fine for that, consider the Microsoft “wizards” of the mid-1990s that pumped out huge blocks of C++ that nobody, not even the template designers, could understand; when it comes to Go, that’s where we’re headed. On the other hand, Haskell is fundamentally a beautiful language that’s really, really hard to understand; you have to immerse yourself in decisions where you, yourself describe the constraints with precision, with care, with taste.

Ira Glass has a speech, On Storytelling, in which he says, about being creative,

We get into it because we have good taste, but there’s like a gap.

The first couple years that you’re making stuff, what you’re making isn’t so good, It’s trying to be good, it has ambition to be good, but it’s not quite that good.

But your taste, the thing that got you into the game, your taste is still killer. And your taste is so good that you can tell that what you’re making is kind of a disappointment to you, you know what I mean?

The thing is, this is true of storytelling, of drawing, of any creative endeavor. A lot of programmers don’t get into programming because they view it as a creative endeavor. They view it as puzzle solving. They view it as engineering. They view it as a way to make money fast.

They have no taste.

Often, they don’t want to have taste. They want to get the job done and get paid. “Taste” slows them down and gets in the way. Aesthetic decisions about code layout and arrangement, they believe, are irrelevant to getting the job done.

This isn’t true, of course; Tasteless Go is still as unmaintainable as tasteless C++. It’s possible to write aesthetically horrifying Haskell. Let’s not even talk about Perl.

I believe this is the fundamental dividing line betnween Go, C, and C++ on the one side, and Rust, Clojure, and Haskell on the other. The whole point of Go is make programmers with no interest in taste or aesthetics write programs that work. Maintainability is secondary.

Which goes back to my tweet above. Java and Go programmers want to write the first kind. Haskell and Lisp programmers and their descendents love to write the second type. But my experience with reading and writing in a variety of lanugages convinces me we frequenty end up at the third with no help for it.

The solution is to teach aesthetics. To teach people that readability and maintainability matter more than just getting the job done.  That if it doesn’t make you feel good the day after you wrote it, re-write it.

After all, sometimes your code will live much longer than you expect.

Leave a comment
An hour before dusk on friday night, Omaha, Raen (nee' Kouryou-chan) and I all piled into the car and headed out for Rattlesnake Lake to watch the Pereid Meteor Shower. The weather promised to be exquisite, and as we drove up through the valley it looked like it was going to stay clear through the night.

The park's parking lot was expected to be closed at 9:00pm, so when we got there we chose to park on the side of the road outside the park. A

lot of people made the same decision. There were almost forty cars on the side leading to the park, and there were just as many on the other side of the road.

We walked into the park to discover that the lots were open, the bathrooms unlocked, and the grass along the waterfront already teeming with people. We lay down on the grass, in the dark, and waited.

Humans are rude. Rattlesnake Lake Park was the "recommended" site for watching the meteor shower, according to the UW Astronomy department website, as well as the Seattle Times, because it was just on the fringe of the "no light pollution" zone from the urban cores of King County, but apparently some people didn't get the memo that "no light" means "no light," as in turn off your goddamn flashlights, and there's no 3G out here anyway. The smell of marijuana filled the air (of course it did).

The moon was the worst offender, but there's not much to be done about that. It occupied the southeastern sky, drowning out all the stars around it. Someone high up on Tiger Mountain ocassionally flashed bright strobes for reasons that must have been positively Nightvalian.

And yet as we watched the sky for an hour or more, we saw the meteors fall. Just a couple, but at least two were spectacularly bright and left trails of distintegration in their wake that lasted for a second or more. Ane seemed to come right at us, a bright burst of light that drilled its way toward us before fading completely.

We decided to leave. The swarm of humanity coming in to see the peak around 2:30am was huge; there were now hundreds of cars everywhere, with three or four people per car, out for a "sanctioned" late night party watching the shower. It was surprisingly peaceful and social. There was giggling and laughter and the ocassional crack of a beer can, and then we got into our car and left.

We got home around 12:30am and poured ourselves into bed.

Current Mood: happy happy

Leave a comment