I’m going to tell two stories about the Ruby community. One happened
this past May (2018), and another happened in 2007. Both are about the
Ruby community. Both are about what we did and what we stand to
lose. Both are about trolls and how we handle them.
One story is small, recent and has a happy ending. One story is old,
ugly and cost us something we can never replace. If you want more of
the first kind of story, please sit and listen to both stories. The
second one is important and uncomfortable, and I hope I never have to
start saying, “please listen to the last two ugly stories.” One is
I have a moral later, and you can skip that if you like. But I have
the two stories, and I hope you will not skip those.
Spring, When a Young Man’s Fancy Turns to Impersonating Ruby Core Members
Not long ago, we suddenly got a new Ruby Core member. We were all
The photo, though not the name, was from an existing Ruby Core
member. He has a perfectly good name and has not, at last count,
changed it. The words in Japanese just say he’s an open source
contributor. Which he is – at least, the member of Ruby Core whose
profile was copied and renamed.
Our gentleman here suddenly showed up to let us all know that Sarah
Mei was a terrible person and we should exclude her from our
communities (specifically the Brighton Ruby Conference) immediately.
There was a bit of spirited defense of Sarah – we like Sarah, and she
does a lot for our community. And a bit of well-meaning, “friend
troll, if you find Sarah Mei to be too much then Brighton Ruby and its
organizers may not be for you.” There was also a bit of… not
that. I didn’t go through and see whether the ugliness was all
trolls and bots. It wouldn’t have to be. There are a lot of humans
around. If you want an extra voice to say “person X sucks!”, it’s
never hard to find one of those.
And so we had a bit of mudslinging at one of our core community
organizers, who has thick skin and shrugged it off with aplomb. Thank
you, Sarah! I’m sorry we needed this from you, but I’m grateful. I
admire how you handled it.
There was some spirited back and forth between the community members
(henceforth: “our side”) and the troll. I’ll give some fun examples
later. Find your fun where you can, you know? I learned a bit and you
In the end things simmered down, both sides lost interest, Twitter
closed the troll’s account and we all got back to normal. Sarah’s
giving a talk on The Evolution of Types at Brighton Ruby in a couple
A happy ending, as such things go.
An Older, Uglier Story
A few of you old-timers and diligent readers may remember Kathy
Sierra. If so, you know where this is going.
Kathy Sierra was wonderful. I’ve yet to find anybody else who writes
on her topic, let alone at her
quality. What she writes is a bit about user interface and product
design, a bit about user psychology. It’s about onboarding and pacing
and instruction, and… Nobody else writes what she writes. Her book
is using her technique to teach her
technique and is
impossible to adequately describe – just read it. She used to write a
lot more. She used to be part of our online communities, when that was
an approximately tolerable experience.
She had a huge effect on David Heinemeier Hansson and Ruby on
was a teacher of Sarah Mei, and of Amy
Hoy, and of many other folks who
built up our community and taught (and still teach) our
developers. I’m a student of Amy Hoy’s. So is Justin
Weiss. And Jim
Gay. And Joel of
egghead.io. And many, many more - likely
hundreds, but I only know the 40-ish on my Amy Hoy alumni mailing
list. Kathy Sierra added a huge amount to our community. Then she
basically stopped in 2007, and is only finally, slowly coming back to
occasionally speaking in public. She’s off social media, for very good
And that’s our fault - all us old guys in the programming community
and the Ruby community.
Let me talk about our mistakes. Because if you repeat them, it becomes your fault too.
Kathy got a certain amount of harassment, as does every woman who
dares to be well-known on the Internet. But at some point, she was
specifically chosen as a target by Andrew Auernheimer (“weev”) and
heard many variations on this story before. But keep in mind: Kathy
was your people. Kathy helped the Ruby community like few others. This
was the teacher of my teacher, and the teacher of Sarah Mei. How many
Amy Hoys did we lose? Because for each Amy Hoy we lost, that’s a
hundred prominent Rubyists that contributed far less. My book,
Rebuilding Rails, came from Amy Hoy’s class. The same is true of Jim,
Justin, and many others. If we’d lost Kathy before Amy, how many Ruby
books and videos and classes would have silently never existed? The
book I wrote, without question.
What were our mistakes?
Kathy Sierra was attacked a lot online. Insults, of course. Death
threats. Eventually her personal information (address, social security
number, a wide variety of fun slanderous lies) were released for
trolls to attack her. If you followed GamerGate, it was approximately
their playbook years before GamerGate existed.
We didn’t defend her. My own pale excuse was that I was barely on
social media. I mean, I wasn’t going to harass her or anything, but
this didn’t concern me. My head was down and I was doing my own thing.
Oops, I guess?
For the people who were on social media, it looked like the worst
parts of the happier story above. A few attacked her. A lot of people
ignored the whole thing. Nobody really wanted to look at weev, a known
Internet celebrity, and say he wasn’t allowed to go after a well-known
woman tech blogger. I mean, maybe it’s some kind of personal beef and
By the way, men of social media circa 2007 who defended weev…? You
know that whole “the misogyny thing is overblown” deal? As we have
since discovered, weev is literally a nazi. These days he’s the
sysadmin for The Daily Stormer, which takes its name from Der
Sturmer, a sort of
People Magazine for literal Nazis in 1940s Germany. It’s one of the largest
neo-nazi communities online. If you were calling for “listening to
both sides” because maybe he had some well thought-out technical
reason… I hope you have reconsidered whether that was a good idea.
For a mercy, I did not call for “listening to both sides.” I have
been young and stupid, including not defending people who deserved
it. But I skipped that specific mistake by being in the wrong place.
Where Are We Now
Wouldn’t it be nice to look at these two stories and say “look how
much we’ve learned?” Wouldn’t it be wonderful to say “we’d never do
that again?” Or “it’s all fixed?”
Let’s not. That would be a very bad idea.
We did have Rubyists venting their unspecific frustrations
there. There was some lack of solidarity.
But more importantly, our troll was an idiot.
He impersonated a Ruby Core member but had no idea what that meant. He
decided that using a Japanese alias would cover him but he knew
nothing about Japan. He changed his bio repeatedly but didn’t even
make a new Twitter account, giving ample reasons for suspicion. He
used specific-sounding names and titles, then reverted to acting
offended when people acted as if he had said them.
Our enemies will not always be so foolish.
“Enemies?” Isn’t that a bit melodramatic? Nope. They’ve taken some of
our best and brightest from us. They’re coming for more of
them. “Enemy” is exactly the right word. But our loss may yet make us
cautious. “The soldier who has lost two fingers will not misplace the
other eight so quickly. It is his comrade with a full set of digits
that will soonest lack a limb.”
Morals, Tactics and Entertainment
You know the moral here: defend those who contribute to our
community. If you’re ungrateful and apathetic they won’t keep helping
us out. And the pillars of our community have enemies coming for them
– especially if they’re the kind of people who get harassed online
(e.g. women, transgender folks, gay people.) And while the people
coming for them won’t always be literal nazis, you really can’t trust
their motives. And would you rather make sysadmins for The Daily
Stormer welcome in our community, or people who actually do the work?
So: not too painful to sit through, right?
But you read this far for examples of stupid stuff the troll did, not
for the moral, right? Let’s do that.
By calling Sarah out publicly on a well-trafficked thread, he was
asking for allies. That didn’t go too well – we’re a small,
tight-knit community and we appreciate people like Sarah who put on
conferences for us, give talks and otherwise help us out.
(Do you have to be a liberal to love this? I’d argue not. You want
people doing good things for you in the Ruby community rather than
being chased off for daring to be a competent woman, right?
Alternately: liberal or conservative, this is maybe not a guy you
want to voluntarily associate yourself with.)
He tried to attack back as if people not liking him were attacking
“Japanese culture”, but in an amusingly tone-deaf way. So that didn’t
go great either.
And when that didn’t go well, he retreated back to whining about how
the Ruby community is a toxic cesspit of big bullies. You know, after
starting off the way he did. I love to call the people I’m trying to
convince names as a method of persuasion, don’t you?
Okay, so that was the “low-skill troll, good community defense” feel-good section. Go team!
Next let’s talk about the parts we need to worry about.
In other words, would you like to get smarter for the next troll, who may be better at this game?
What If They’re Not Quite This Bad At This?
Here are some things the troll did right and/or we did wrong.
The troll is playing for the later audience, not to you
at-the-moment. He wants to look good in retrospect and in
screenshots. He doesn’t care about the people he’s actually
debating. And this guy’s griefing and comment-deletion were both
pretty good. For instance:
Jorge does a great job here of being restrained and careful. Those
“Tweet unavailable” gray comment lines are the various awful and
incendiary stuff the troll was saying in between. If Jorge had taken
the bait, you can bet the troll would have screencapped the result and
added more “look how toxic the Ruby community is” posts. The troll in
general had a lot of parting shots trying to do exactly that:
I wish I’d thought to screenshot some of the ones he tried on me. But
he’s a troll - outright lying, insults and so on are exactly his
playbook. And if you engage on the same terms, you’re helping him
out. I feel like we collectively did a good job on this, but… Watch
out. Again, this guy was bad at what he did, and we were not
perfect. When somebody’s needling you and you want to reply, figure
out how your reply will look after he deletes his. Because he’s going
(Tactical addendum: screenshot things, because they may get deleted.)
Your Own Words
Related: expect to have a lot of your own words thrown in your face in
awful ways. If you can, try to ignore it. I don’t mean “treat it like
it didn’t happen.” I mean don’t engage with it. If it happens to
somebody else, try to be supportive of them.
The problem with traditional-style “Don’t Feed the
Trolls” is that
it leaves their targets feeling unsupported and like they can’t talk
about it. May I recommend not responding directly to the troll, but
making it clear you’re on the target’s side?
With that said, expect awfulness of this general kind (n.b. Adderall
is prescription ADHD medication, mostly similar in effect to
Defense and Proportionality
Related to both “your own words” and “playing to the audience”… Try
not to react too hard to the troll directly. Keep in mind you’re
writing a collective narrative for later readers. The troll is
annoying, but he’s like a minor Disney villain - trying to get a rise
out of you, but not really the threat.
I two-hundred percent understand where this guy is coming from,
but… Try not to let trolls get under your skin, if you can.
But… What Do We Do?
Right now, there’s a lot going on to make you unhappy. No matter where
you’re at online or on the political spectrum. If you’d like to keep
your community healthy… Don’t let things slip by. Show up.
One thing I don’t recommend is immediately going to talk to the person
who is targeted. They’re probably already awfully busy. A comment on
the thread is fine, but if you don’t already know them, this isn’t the
time to introduce yourself.
But be around, and make it clear that attacking the central figures of
your community is not a winning strategy. Because if you understand
what you’re losing, it really shouldn’t be.