![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Edit: This post is up on Geek Feminism and has also been syndicated on BlogHer. It was #1 on Hacker News for several hours, was highly ranked on Reddit, and has been shared over 1000 times on Twitter.
I work at a startup, and most of the time, I enjoy it. Compared to most tech companies, and certainly most startups, we have quite a few people who are relatively clueful. There are relatively few moments of “brogrammer” culture. There is, however, one thing that has been bugging me for months, ever since it was introduced.
I took it for granted that everyone was familiar with the “That’s what she said,” joke, but a recent conversation with a consultant friend made me realize some industries don’t feature it on a daily basis. For those who haven’t heard it a million times, the idea is that when somebody says something that could remotely be turned into a sexual joke, e.g. “I’m trying to solve this problem but it’s really hard!” you say “That’s what SHE said,” in a lascivious tone.
Now, I admit to having made this joke myself, at times. Once in a while, I even find it funny. What I don’t find funny is a bot we have in our general IRC channel at work, that has some basic AI devoted to determining when to interject TWSS into the conversation.
I asked a number of times to have that bot function turned off, but got the usual combination of being ignored, being told it’s funny, and being told I should lighten up. I tried explaining once why it was objectionable, and managed to get the guys saying variations, e.g. “That’s what your DAD said,” for an evening, but that was about it.
Last Friday, the bot went a bit crazy and started throwing TWSS into the conversation with no apparent rhyme or reason. Finally, I had had enough. And then it came to me: I would write my OWN bot, that responded to TWSS with a quotation from a notable woman. If they are so keen on what she said, why don’t we get educated about what she really had to say. And so the “whatshereallysaid” bot was born. It might annoy the guys into shutting off the TWSS bot, or we might all learn about notable women. It’s a win either way, in my books!
I’d never written a bot, but how hard could it be? Python is my primary programming language these days, so I started searching for Python IRC bots. I tried a few different libraries before setting on twisted. I found a very nice example of a logging bot using twisted , and went from there.
Step 1: I copied the LogBot code into local files, and tried running it. Since the IRC channels I am normally in use SSL, I had to set up my own channel on a public IRC server for testing. It took a while to get the settings right, but finally I succeeded!
Step 2: I created a quotes file and put in a couple of my favorite quotes to test with. I created class to randomly select a quote from the file. I modified the log bot so that if you said its name, it would get a quote and post it to the channel.
Step 3: My ultimate goal was to put the bot in the work channel, so I needed it to support SSL. I found a stackoverflow thread about using a different connect function, one for SSL. Again, it took me some time to get the settings right, but eventually I got the bot to connect to the work IRC server.
Step 4: Now I needed more quotes! I found an excellent website of quotes by women and wrote a small script to scrape the quotes. I used the excellent python requests library. The script got the content of the main links page, and iterated over the links, using a regular expression to get the name and then following the link to the quotes page. Then it pulled the quotes out of the page content and stored them in a text file, one per line, with the woman’s name attached.
Step 5: I set up my own private channel and had my bot connect. I tested it to verify it was correctly noticing and responding to trigger phrases. Once I was confident of that, I tried in the general chat channel. Success!
Step 6: I cleaned up the code, removing everything unrelated to posting quotes, and adding a settings file. I made the trigger phrases configurable. I also added a virtualenv. I felt the project was now in good enough shape to post publicly, so I shared it on github.
Step 7: At this point, I was still running the bot on my own computer, which was clearly non-ideal. I wanted it to be in the channel all the time, not just when I was logged in! I found a python daemon implementation and made my bot run through that. Perfect! Now I could run it from one of the development servers at work.
Step 8: Unit tests, of course! No project is complete without them. I only have tests on the quote selector so far, but I am going to set up some mock tests on the bot logic.
Originally, I had called the project “whatshereallysaid”, but as I was working, I realized this could be much more broadly applied. Anyone could clone my github project and configure a bot to respond to whatever annoying comments they had to put up with. Inspired by “take back the night” and “hollaback”, I decided to rename the project “talkbackbot”.
I finished all this rather late on Friday night, so there was nobody around. I waited with anticipation to see what the response would be. To my surprise, many coworkers complimented me on creating the bot, including some I would never have guessed would appreciate it. Some people even retweeted my announcement that the bot was available on github.
It has been fascinating to watch the ongoing reactions. There have been complaints that we have too many bots in the channel now. There have been complaints about it spamming the channel. There were several “Make them shut up!” responses. These are not reactions I have seen the other bots elicit, certainly not with such intensity. One person even complained about the name being too long, though to his credit he realized right after he said that that several other people in the channel also have very long handles.
To me, all of this seems like typical geek behaviour: something is making them uncomfortable, and so they attack it on “rational” grounds. Most likely, they aren’t even aware of the gut reaction fueling their logic. Interestingly, the intensity of emotion seemed to carry over into subsequent discussions, including one about women in the Python community. For the most part, I have not responded to the comments. I did shorten the bot’s name to “twsrs”, and I pointed out that it’s trivially easy to have the bot not say anything: don’t say TWSS.
In any case, I feel that I have succeeded in constructively disrupting an aspect of my work culture that made me uncomfortable. This is the first personal project I’ve ever thought of, coded, and made public, and I am pretty excited about it! It makes me so happy every time the other bot says “that’s what she said,” and my bot responds with something like:
Our struggle today is not to have a female Einstein get appointed as an assistant professor. It is for a woman schlemiel to get as quickly promoted as a male schlemiel. ~ Bella Abzug
One of the most hilarious responses was a guy saying he was going to say TWSS a lot more, so he could get more quotes! I decided to add another trigger phrase just for him, since the last thing I want to do is encourage *more* TWSS!
Interesting approach
Date: 2012-03-28 12:57 pm (UTC)Small tip: since you're already using Twisted, you may find it useful to daemonise it with twistd (http://twistedmatrix.com/documents/current/core/howto/tap.html) and configure it similarly.
For example, to start twisted.web:
$ twistd -n web --path=. --port=8000
So your twsrs bot could have something like
$ twistd -n twsrs --trigger="BINGO!" --server=irc.freenode.net --ssl=on --port=6667 --channel=#foo
PS: Posting on your blog was a little hard (anonymous disabled, openid login still required many clicks to add an email address)
Re: Interesting approach
Date: 2012-03-29 04:33 am (UTC)Re: Interesting approach
Date: 2012-07-12 06:17 pm (UTC)P.S. I have edited the settings so posting comments should be easier now.
no subject
Date: 2012-03-28 03:00 pm (UTC)no subject
Date: 2012-03-29 04:33 am (UTC)no subject
Date: 2012-03-29 04:58 am (UTC)way to go
Date: 2012-03-28 03:01 pm (UTC)http://www.youtube.com/watch?v=t_6c4nxD8Tw
Keep up the good work!
Re: way to go
Date: 2012-03-29 04:48 am (UTC)Re: way to go
Date: 2012-03-29 08:16 am (UTC)Or, you could put feminist trollbot in a room with Santorumbot and let the "personalities" bounce off each other. :P
Re: way to go
Date: 2012-03-29 02:24 pm (UTC)Awesome reaction!
Date: 2012-03-28 03:03 pm (UTC)Nice solution
Date: 2012-03-28 04:32 pm (UTC)Bots are always an iffy proposition, they walk a very fine line between entertaining and annoying, and a lot of times it's hard to come to a consensus which one a particular bot or feature of a bot falls under.
contents: 100% grade A win
Date: 2012-03-28 07:46 pm (UTC)"I pointed out that it’s trivially easy to have the bot not say anything"... oh, to have seen the geeks squirm when you said this.
Is there any way you can post examples of this bot in action?
Re: contents: 100% grade A win
Date: 2012-03-29 04:31 am (UTC)person: Our servers are really getting hit hard today.
twssbot: That's what she said
twsrsbot: The most dangerous phrase in the language is, "We've always done it this way." ~ Grace Hopper
Re: contents: 100% grade A win
Date: 2012-03-29 04:05 pm (UTC)super
Date: 2012-03-28 09:35 pm (UTC)Re: super
Date: 2012-03-30 02:21 pm (UTC)This clever and intelligent way of fighting sexism even made Lwns quote of the week page this week.
In contrast, comments like yours, are *precisely* why our community still has a lot of work ahead of us to make it welcoming to women.
no subject
Date: 2012-03-28 10:19 pm (UTC)no subject
Date: 2012-03-29 04:29 am (UTC)Woah!
Date: 2012-03-29 01:45 am (UTC)I am immediately sharing this on my G+ thread. And telling lots of people that I know. Maybe'll I'll tweet it. If only ten percent of the world showed this kind of creativity and initiative, we'd be so much better off, our current position would be left behind in the dust.
Thank you so much for directly and cleverly addressing a problem that's both unbelievably widespread, and so badly in need of addressing.
I feel I should say more, but I have no idea what to say next. So I'll leave it there.
Re: Woah!
Date: 2012-03-29 04:39 am (UTC)no subject
Date: 2012-03-29 05:35 am (UTC)PS: You made the Linux Weekly News. :)
no subject
Date: 2012-03-29 05:48 am (UTC)http://lwn.net/Articles/488961/ if anyone is interested.
Take Back the Night
Date: 2012-03-29 08:53 am (UTC)nice.
Date: 2012-03-29 12:06 pm (UTC)i'm also a fan of the well-applied "that's what he said;" it turn the discomfort around for many (male) geeks.
thanks for your work and for sharing.
Re: nice.
Date: 2012-03-29 07:33 pm (UTC)Guy1: We can't use the normal button on this page, it isn't big enough.
Guy2: That's what she said!
Usually followed by one of the other guys adding in an equally snarky "Zing!" comment.
Even then, it was fairly rare that that particular "joke" was used. We're on the whole a pretty non-PC group though, so TWSS is actually fairly tame compared to a lot of the things we joke about. We often joke that if HR ever got ahold of our chat logs we'd all be fired on the spot, and in a couple cases probably interviewed by the police (not that we've actually done anything wrong, or meant any of the comments in anything but a joking fashion). We're a bit like southpark in that we're fairly equal opportunity in the jokes we make, nothing is sacred, particularly if it's sacred.
Thanks
Date: 2012-03-29 04:58 pm (UTC)Perfect
Date: 2012-03-29 06:18 pm (UTC)Complaints about "too many bots" can't be directed to you -- after all, your bot will be utterly silent unless the irritating TWSS bot is *already* making noise.
One classless joke = one classy quote, no more & no less. The tone of a conversation is dragged down one notch, and auto-boosted up one notch automatically.
Anyway, moving on -- thanks for setting a good example.
Here from Hacker News... left the tab open until I had time to figure out how to comment, since it seemed worth it.
Rob
no subject
Date: 2012-03-30 11:45 am (UTC)I love it!
Date: 2012-03-30 05:10 pm (UTC)TWSS is news to me
Date: 2012-04-16 11:47 am (UTC)Anyway, neat cultural as well as techincal hack.
Excellent bot
Date: 2012-05-21 04:16 pm (UTC)If people can be made more aware of what affects and effect their language and actions have on others, then that is always a great thing.
Cheers for the informative post!
Liam
I love me some geek feminism!
Date: 2012-07-04 04:05 am (UTC)Alexis, friend of Arcadia
Very Inspiring Blogger Award
Date: 2013-02-04 07:07 am (UTC)I just wanted to nominate you for this Award meme thing. It is the Very Inspiring Blogger Award. I place it here because this, along with a few other posts, are just really inspiring to read and I think you should definitely make more of these when you find the time. The details can be found here if you are interested: http://wp.me/p2qfuv-uF
Take care.
sincerely,
Matthew
no subject
Date: 2013-05-17 08:44 pm (UTC)There's two ways i've found it to be reasonably funny.
1) Used sparingly and spoke just loudly enough so that maybe one other person can hear you. preferably in a situation where laughing would not be appropriate. Because as everyone knows, if you are in a situation where you are absolutely positively Not Supposed To Laugh, and the room is full of Very Serious People saying Very Serious Things, then double entendre is guaranteed to happen about every fourth sentence, and not laughing starts to approach impossible.
2) Beavis and Butthead it, using it so relentlessly and nonsensically that it is funny because it makes no sense whatsoever. Like sitting in an office saying "You said 'What'". "It's a nice day outside" "TWSS" "What?" "TWSS" "are you going crazy?" "TWSS" and so on. It almost becomes a form of in person trolling. this one clearly works better outside of work.
Personally I prefer 1), because after about 20 minutes in A Very Serious Meeting, I'm desperate for some illicit laughter to keep from going comatose. When the 65-year old CEO starts saying things like "We'll have to use both hands on this one", or "We're going to ride this baby hard", well, TWSS is pretty much guaranteed to start chain laughter.
no subject
Date: 2013-05-19 12:35 am (UTC)In my opinion, trolling isn't funny, it's just being a jerk.